|
このページは大阪弁化フィルタによって翻訳生成されたんですわ。 |
amb@gedanken.demon.co.uk
Eric.Cano@cern.chJe vais d'abord d馗rire quelques-uns des principes g駭駻aux utilis駸 pour la mise en place d'un syst鑪e de fichier en loopback comme racine.
Des exemples de p駻iph駻iques normaux sont les partitions de disques durs comme
/dev/hda1, /dev/hda2, /dev/sda1, ou des disques
entiers comme les disquettes /dev/fd0, etc... Ce sont tous des p駻iph駻iques
L'image est automatiquement d騁ect馥 par le noyau quand celui-ci d駑arre
et d馗ompress馥 dans le disque virtuel avant d'黎re mont馥.
rc sont lanc駸 ; ce sont soit les fichiers dans /etc/rc.d
ou /etc/rc?.d, suivant la version du programme /etc/init.
telle que la partition racine finale n'est pas la m麥e que celle qui est charg馥
au moment de l'amor軋ge.
Pour montrer comment le disque virtuel initial op鑽e pendant la s駲uence de
LOADLIN version 1.6 ou sup駻ieuremount qui supporte les p駻iph駻iques loopbackTout ceci devrait 黎re disponible en standard sur des installations r馗entes de Linux.
J'ai cr鳬 le p駻iph駻ique loopback avec le noyau Linux version 2.0.31, d'autres versions devraient faire l'affaire, mais elles devront avoir au moins les options list馥s ci-dessous configur馥s.
Les options du noyau que vous devrez s駘ectionner sont les suivantes :
CONFIG_BLK_DEV_RAM).CONFIG_BLK_DEV_INITRD).CONFIG_BLK_DEV_LOOP).CONFIG_FAT_FS).CONFIG_MSDOS_FS).Les deux premi鑽es sont le disque virtuel lui-m麥e et le disque virtuel initial. La suivante est le support pour les p駻iph駻iques loopback. Les deux derni鑽es sont le support pour les syst鑪es de fichiers msdos, qui est requis pour monter des partitions DOS.
static void parse_root_dev(char * line) { int base = 0; static struct dev_name_struct { const char *name; const int num; } devices[] = { { "nfs", 0x00ff }, { "loop", 0x0700 },Le disque virtuel initial est simplement cr馥 comme un p駻iph駻ique loopback
au d駱art. Vous devrez faire ceci en tant que root. Les commandes que vous devez
ex馗uter sont list馥s ci dessous, elles supposent 黎re lanc馥s depuis le r駱ertoire
principal de root (/root).
mkdir /root/initrd
dd if=/dev/zero of=initrd.img bs=1k count=1024
mke2fs -i 1024 -b 1024 -m 5 -F -v initrd.img
mount initrd.img /root/initrd -t ext2 -o loop
cd initrd
[cr馥z les fichiers]
cd ..
umount /root/initrd
gzip -c -9 initrd.img > initrdgz.img
Il y a un certain nombre d'騁apes, mais on peut les d馗rire comme ceci.
Contenu du disque virtuel initial
Les fichiers dont vous avez besoin sur le disque virtuel repr駸entent le minimum
plus petit que bash). Les programmes mount et losetup
pour manipuler le disque DOS et configurer les p駻iph駻iques loopback.
/dev/* Les p駻iph駻iques qui seront utilis駸. Vous avez besoin
de /dev/zero pour ld-linux.so, /dev/hda* pour monter
le disque msdos et /dev/loop* pour les p駻iph駻iques loopback./mnt Un r駱ertoire vide pour y monter le disque msdos.La seule 騁ape complexe est la cr饌tion des p駻iph駻iques dans dev.
Utilisez le programme mknod pour les cr馥r, et servez vous des
p駻iph駻iques dans /dev comme mod鑞es pour les param鑼res requis.
Le fichier /linuxrc
Le fichier /linuxrc sur le disque virtuel initial est n馗essaire pour
mettre en place le p駻iph駻ique loopback, avant de l'utiliser comme racine.
L'exemple suivant essaye de monter /dev/hda1 comme une partition msdos
et en cas de r騏ssite assigne les fichiers /linux/linuxdsk.img et
/linux/linuxswp.img respectivement aux p駻iph駻iques /dev/loop0
et /dev/loop1.
#!/bin/sh
echo INITRD: Essaye de monter /dev/hda1 comme partition msdos
if /bin/mount -n -t msdos /dev/hda1 /mnt; then
echo INITRD: Montage r騏ssi
/bin/losetup /dev/loop0 /mnt/linux/linuxdsk.img
/bin/losetup /dev/loop1 /mnt/linux/linuxswp.img
exit 0
else
echo INITRD: Echec du montage
exit 1
fi
Le premier p駻iph駻ique, /dev/loop0 deviendra la racine et le second,
/dev/loop1 deviendra la m駑oire virtuelle.
La m騁hode la plus simple est de copier une installation Linux existante sur ce disque. une alternative est d'y installer une distribution de Linux.
vous devrez les inclure normalement sur ce p駻iph駻ique.Le p駻iph駻ique que vous utiliserez sera le fichier linuxswap.img.
LINUXSWP.IMG L'espace de m駑oire virtuelle.La disquette de d駑arrage qui est utilis馥 est juste une disquette amor軋ble au format DOS.
On la cr馥 en utilisant format a: /s sous DOS.
Sur ce disque vous devrez cr馥r un fichier AUTOEXEC.BAT (comme
ci-dessous) et copier le noyau, le disque virtuel initial sous forme
compress馥 et l'ex馗utable LOADLIN.
INITRDGZ.IMG L'image compress馥 du disque virtuel initial.Le fichier AUTOEXEC.BAT devrait contenir une seule ligne comme
ci-dessous.
\loadlin \zImage initrd=\initrdgz.img root=/dev/loop0 ro
3. D駑arrage du syst鑪e
Pour d駑arrer depuis le nouveau p駻iph駻ique racine, il suffit de faire
d駑arrer le PC sur la disquette pr駱ar馥 plus haut.
Vous verrez les 騅駭ement suivants se succ馘er :
- Chargement du DOS.
Linux.
3.1 Probl鑪es possibles et leurs solutions
Il y a un certain nombre d'騁apes de ce processus qui peuvent 馗houer. Je vais
essayer d'expliquer lesquelles, et ce qu'il faut v駻ifier.
Le noyau commence par se d馗ompresser, ceci peut engendrer des erreur crc
si l'image du noyau est corrompue. Ensuite, il lancera la s駲uence d'initialisation
qui est tr鑚 prolixe en messages de diagnostic. Le chargement du
que p駻iph駻ique racine, vous verrez un message avertissant qu'il n'y
a pas de p駻iph駻ique racine, et le noyau interrompra son ex馗ution.
La s駲uence de d駑arrage normale du nouveau syst鑪e de fichiers racine va
Quand la s駲uence de d駑arrage est r饌lis馥, le probl鑪e qui reste est que les
programmes ne savent pas si la partition DOS est mont馥 ou non. C'est pourquoi
c'est une bonne id馥 d'utiliser une fausse commande mount d馗rite plus t?.
Ceci rend la vie nettement plus simple si vous voulez acc馘er au fichiers sur
le p駻iph駻ique DOS.
3.2 Documents de r馭駻ence
Les document que j'ai utilis駸 pour cr馥r mon premier p駻iph駻ique racine
en loopback sont :
- Les sources du noyau Linux, en particulier
init/main.c
- La documentation du noyau Linux, en particulier
Documentation/initrd.txt et Documentation/ramdisk.txt.
- La documentation de
LILO.
- La documentation de
LOADLIN.
4. Autres possibilit駸 de p駻iph駻iques racine en loopback
Une fois que le principe de d駑arrer sur un syst鑪e de fichiers dans une partition
DOS est acquis, il y a de nombreuses autres choses que l'on peut faire.
4.1 Installation "tout sur un disque DOS"
S'il est possible de charger Linux depuis un fichier sur un disque dur DOS en
utilisant une disquette de d駑arrage, alors il est clair qu'on peut faire la
donnera une s駲uence de d駑arrage plus rapide, mais c'est la seule
diff駻ence.
4.2 Installation d駑arr馥 avec LILO
Utiliser LOADLIN n'est qu'une des options possibles pour charger un
noyau Linux. Il y a aussi LILO qui fait pratiquement la m麥e chose,
mais sans n馗essiter DOS.
Dans ce cas, la disquette au format DOS peut 黎re remplac馥 par une disquette
au format ext2fs. A part cela, les d騁ails restent tr鑚 similaires, le noyau
du syst鑪e de fichier NTFS n'est pas une option standard du noyau, mais vous
devez appliquer le patch de Martin von Löwis, qui est disponible sur
sa page web.
http://www.informatik.hu-berlin.de/~loewis/ntfs/.
initial, le fichier /linuxrc doit monter un syst鑪e de fichiers
de type vfat ou ntfs plut? que msdos.
Je ne connais pas de raison pour laquelle ceci ne marcherait pas aussi
sur une partition VFAT.
4.4 Installer Linux sans repartitionner
Le processus d'installation de Linux sur un PC avec une distribution
standard requiert de d駑arrer sur une disquette et de repartitionner le
disque dur. Cette 騁ape pourrait 黎re remplac馥 par une disquette de
4.5 D駑arrer depuis un p駻iph駻ique non amor軋ble
Cette m騁hode peut aussi 黎re utilis馥 pour d駑arrer un syst鑪e Linux depuis
un p駻iph駻ique qui n'est pas normalement amor軋ble.
- CD-Rom