Page suivantePage pr�c�denteTable des mati�res

2. Comment cr�er un p�riph�rique loopback.

Maintenant que les principes g�n�raux ont �t� pr�sent�s, la m�thode pour cr�er le p�riph�rique loopback peut �tre expliqu�e.

2.1 Pr�-requis

La cr�ation du p�riph�rique loopback va n�cessiter un certain nombre de choses.

Le point le plus important est l'acc�s � un syst�me Linux d�j� install�. Ce point est n�cessaire car le p�riph�rique loop ne peut �tre cr�� que sous Linux. Cela signifie qu'il ne sera pas possible d'installer un syst�me � partir de rien. Le syst�me Linux que vous utilisez devra �tre capable de compiler un noyau.

Une fois le p�riph�rique loopback cr��, il repr�sentera un gros fichier. J'ai utilis� un fichier de 80 Mo, mais si c'�tait suffisant pour un terminal X, �a ne sera sans doute pas suffisant pour une utilisation plus importante. Ce fichier doit �tre copi� sur la partition DOS, donc un r�seau ou beaucoup de disquettes seront mis a contribution.

Vous aurez besoin des logiciels suivants :

Tout ceci devrait �tre disponible en standard sur des installations r�centes de Linux.

2.2 Cr�ation du noyau Linux

J'ai cr�� le p�riph�rique 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�es ci-dessous configur�es.

Les options du noyau que vous devrez s�lectionner sont les suivantes :

Les deux premi�res sont le disque virtuel lui-m�me et le disque virtuel initial. La suivante est le support pour les p�riph�riques loopback. Les deux derni�res sont le support pour les syst�mes de fichiers msdos, qui est requis pour monter des partitions DOS.

La compilation d'un noyau sans modules est la plus simple, mais si vous voulez utiliser les modules �a devrait �tre possible, bien que je ne l'aie pas essay�. Si vous utilisez des modules, vous devez configurer les options pr�c�dentes dans le noyau, et non comme des modules.

Le code source du noyau lui-m�me devra �tre modifi� d'une fa�on tr�s simple. La version 2.0.34 du noyau telle que fournie ne permet pas au p�riph�rique loopback d'�tre utilis� comme racine. Une tr�s petite modification du noyau peut rendre ceci possible.

Le fichier /init/main.c a juste besoin qu'on lui ajoute une seule ligne comme montr� dans la version modifi�e ci-dessous. La ligne qui dit "loop", 0x0700 est celle qui a �t� ajout�e.

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 },
 { "hda",     0x0300 },
...
 { "sonycd",  0x1800 },
 { NULL, 0 }
 };
...
}

Une fois le noyau configur�, il devra �tre compil� pour produire une fichier zImage (make zImage). Ce fichier devrait �tre arch/i386/boot/zImage une fois compil�.

2.3 Cr�ation du p�riph�rique disque virtuel initial

Le disque virtuel initial est simplement cr�e comme un p�riph�rique loopback au d�part. Vous devrez faire ceci en tant que root. Les commandes que vous devez ex�cuter sont list�es ci dessous, elles supposent �tre lanc�es depuis le r�pertoire 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�ez les fichiers]
cd ..
umount /root/initrd
gzip -c -9 initrd.img > initrdgz.img

Il y a un certain nombre d'�tapes, mais on peut les d�crire comme ceci.

  1. Cr�ez un point de montage pour le disque virtuel initial (un r�pertoire vide).
  2. Cr�ez un fichier vide de la taille requise. Ici j'ai utilis� 1024ko, vous pourriez avoir besoin de plus ou de moins suivant le contenu. (la taille est le dernier param�tre).
  3. Cr�ez un syst�me de fichiers ext2 dans le fichier vide.
  4. Montez le ficher au point de montage, ceci utilise le p�riph�rique loopback.
  5. Changez le r�pertoire courant pour le p�riph�rique loopback.
  6. Cr�ez les fichiers requis (voir plus bas pour les d�tails).
  7. Sortez du p�riph�rique loopback mont�.
  8. D�montez le p�riph�rique.
  9. Cr�ez une version compress�e pour l'utiliser plus tard.

Contenu du disque virtuel initial

Les fichiers dont vous avez besoin sur le disque virtuel repr�sentent le minimum n�cessaire pour pouvoir d'ex�cuter une commande.

Le contenu du disque virtuel initial que j'ai utilis� est �num�r� ci-dessous. Ces fichiers repr�sentent environ 800ko, une fois pris en compte l'espace perdu par les structures du syst�me de fichiers.

total 18
drwxr-xr-x   2 root     root         1024 Jun  2 13:57 bin
drwxr-xr-x   2 root     root         1024 Jun  2 13:47 dev
drwxr-xr-x   2 root     root         1024 May 20 07:43 etc
drwxr-xr-x   2 root     root         1024 May 27 07:57 lib
-rwxr-xr-x   1 root     root          964 Jun  3 08:47 linuxrc
drwxr-xr-x   2 root     root        12288 May 27 08:08 lost+found
drwxr-xr-x   2 root     root         1024 Jun  2 14:16 mnt
./bin:
total 168
-rwxr-xr-x   1 root     root        60880 May 27 07:56 ash
-rwxr-xr-x   1 root     root         5484 May 27 07:56 losetup
-rwsr-xr-x   1 root     root        28216 May 27 07:56 mount
lrwxrwxrwx   1 root     root            3 May 27 08:08 sh -> ash
./dev:
total 0
brw-r--r--   1 root     root       3,   0 May 20 07:43 hda
brw-r--r--   1 root     root       3,   1 May 20 07:43 hda1
brw-r--r--   1 root     root       3,   2 Jun  2 13:46 hda2
brw-r--r--   1 root     root       3,   3 Jun  2 13:46 hda3
brw-r--r--   1 root     root       7,   0 May 20 07:43 loop0
brw-r--r--   1 root     root       7,   1 Jun  2 13:47 loop1
crw-r--r--   1 root     root       1,   3 May 20 07:42 null
crw-r--r--   1 root     root       5,   0 May 20 07:43 tty
crw-r--r--   1 root     root       4,   1 May 20 07:43 tty1
crw-r--r--   1 root     root       1,   5 May 20 07:42 zero
./etc:
total 3
-rw-r--r--   1 root     root         2539 May 20 07:43 ld.so.cache
./lib:
total 649
lrwxrwxrwx   1 root     root           18 May 27 08:08 ld-linux.so.1 -> ld-linux.so.1.7.14
-rwxr-xr-x   1 root     root        21367 May 20 07:44 ld-linux.so.1.7.14
lrwxrwxrwx   1 root     root           14 May 27 08:08 libc.so.5 -> libc.so.5.3.12
-rwxr-xr-x   1 root     root       583795 May 20 07:44 libc.so.5.3.12
./lost+found:
total 0
./mnt:
total 0

La seule �tape complexe est la cr�ation des p�riph�riques dans dev. Utilisez le programme mknod pour les cr�er, et servez vous des p�riph�riques dans /dev comme mod�les pour les param�tres requis.

Le fichier /linuxrc

Le fichier /linuxrc sur le disque virtuel initial est n�cessaire pour mettre en place le p�riph�rique loopback, avant de l'utiliser comme racine.

L'exemple suivant essaye de monter /dev/hda1 comme une partition msdos et en cas de r�ussite assigne les fichiers /linux/linuxdsk.img et /linux/linuxswp.img respectivement aux p�riph�riques /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�ussi
 /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�riph�rique, /dev/loop0 deviendra la racine et le second, /dev/loop1 deviendra la m�moire virtuelle.

Si vous voulez pouvoir �crire sur la partition racine en tant qu'utilisateur normal quand vous aurez fini, alors vous devriez plut�t utiliser mount -n -t msdos /dev/hda1 /mnt -o uid=0,gid=0,umask=000. Ceci associera tous les acc�s � la partition DOS � l'utilisateur root et placera les permissions en cons�quences.

2.4 Cr�ation du p�riph�rique racine

Le p�riph�rique racine que vous utiliserez est le fichier linuxdsk.img. Vous devrez le cr�er de la m�me fa�on que le disque virtuel initial, en plus grand. Vous pouvez y mettre l'installation de Linux de votre choix.

La m�thode la plus simple est de copier une installation Linux existante sur ce disque. une alternative est d'y installer une distribution de Linux.

En supposant que ceci est fait, vous avez encore des modifications mineures � apporter.

Le fichier /etc/fstab doit r�f�rencer les partitions racine et swap en utilisant les deux p�riph�riques loopback qui sont mis en place par le disque virtuel initial.

/dev/loop0     /      ext2   defaults 1 1
/dev/loop1     swap   swap   defaults 1 1

Ceci permettra de s'assurer que quand le p�riph�rique racine sera utilis�, le noyau ne sera pas induit en erreur sur son emplacement. L'espace de swap pourra ainsi �tre ajout� de la m�me fa�on qu'une partition de swap normale. Vous devez aussi retirer toute autre r�f�rence vers un disque racine ou swap.

Si vous voulez �tre capable d'acc�der � la partition DOS apr�s le d�marrage de Linux, vous devrez faire quelques petites modifications.

Cr�ez un r�pertoire appel� /initrd, qui sera le point de montage du disque virtuel initial une fois que le syst�me de fichier racine sera mont� en loopback.

Cr�ez un lien symbolique appel� /DOS qui pointe sur /initrd/mnt o� la partition DOS sera mont�e.

Ajoutez un ligne dans le fichier rc qui monte les disques. Il devra lancer la commande mount -f -t msdos /dev/hda1 /initrd/mnt ; ceci cr�era un montage "fictif" de la partition DOS pour que tous les autres programmes (comme df) sachent que la partition DOS est mont�e et o� la trouver. Si vous avez utilis� des options diff�rentes dans /linuxrc, vous devrez �videmment utiliser les m�mes ici.

Il n'y a plus de raison d'avoir le noyau Linux sur le p�riph�rique racine puisqu'il a �t� charg� plus t�t. Toutefois, si vous utilisez les modules, vous devrez les inclure normalement sur ce p�riph�rique.

2.5 Cr�ation du p�riph�rique de m�moire virtuelle.

Le p�riph�rique que vous utiliserez sera le fichier linuxswap.img. Le p�riph�rique de m�moire virtuelle (swap) est tr�s simple � fabriquer. Cr�ez un fichier vide de la m�me fa�on que pour le disque virtuel initial, puis ex�cutez mkswap linuxswap.img pour l'initialiser.

La taille de la m�moire virtuelle d�pendra de ce que vous comptez faire avec le syst�me install�, mais je recommanderais entre 8 Mo et la quantit� de RAM que vous avez.

2.6 Cr�ation du r�pertoire MSDOS

Les fichiers qui seront utilis�s devront �tre d�plac�s sur la partition DOS.

Les fichiers qui devront �tre dans le r�pertoire DOS appel� C:\LINUX sont les suivants :

2.7 Cr�ation de la disquette de d�marrage.

La disquette de d�marrage qui est utilis�e est juste une disquette amor�able au format DOS.

On la cr�e en utilisant format a: /s sous DOS.

Sur ce disque vous devrez cr�er un fichier AUTOEXEC.BAT (comme ci-dessous) et copier le noyau, le disque virtuel initial sous forme compress�e et l'ex�cutable LOADLIN.

Le fichier AUTOEXEC.BAT devrait contenir une seule ligne comme ci-dessous.

\loadlin \zImage initrd=\initrdgz.img root=/dev/loop0 ro

Ceci sp�cifie l'image du noyau � utiliser, l'image du disque virtuel initial, et le p�riph�rique racine apr�s que le disque virtuel ait fait son office, avec la partition racine mont�e en lecture seule.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:23