next up previous contents Next: Modifier lilo.conf pour initrd. Up: Démarrage, lilo et initrd. Previous: Complications avec SCSI et   Table des matières  

32.6 Création d'une image initrd.

Commençons par créer un petit système de fichiers. Faisons un répertoire ~/initrd et copions les fichiers suivants dans ce répertoire:

drwxr-xr-x 
drwxr-cx-x 
-rwxr-xr-x 
-rwxr-xr-x 
drwxr-xr-x 
crw-r-r- 
crw-r-r- 
crw-r-r- 
crw-r-r- 
crw-r-r- 
crw-r-r- 
crw-r-r- 
drwxr-xr-x 
drwxr-xr-x 
-rwxr-xr-x 
drwxr-xr-x 
7 root 
2 root 
1 root 
1 root 
2 root 
1 root  
1 root 
1 root 
1 root 
1 root 
1 root 
1 root 
2 root 
2 root  
1 root 
2 root  
root
root
root
root 
root 
root 
root 
root 
root 
root 
root 
root 
root 
root 
root 
root 
  1024 Sep 14 20:12 initrd/ 
  1024 Sep 14 20:12 initrd/bin/ 
436328 Sep 14 20:12 initrd/bin/insmod 
424680 Sep 14 20:12 initrd/bin/sash 
  1024 Sep 14 20:12 initrd/dev/ 
5,   1 Sep 14 20:12 initrd/dev/console 
1,   3 Sep 14 20:12 initrd/dev/null 
4,   0 Sep 14 20:12 initrd/dev/systty 
4,   1 Sep 14 20:12 initrd/dev/tty1 
4,   1 Sep 14 20:12 initrd/dev/tty2 
4,   1 Sep 14 20:12 initrd/dev/tty3 
4,   1 Sep 14 20:12 initrd/dev/tty4 
  1024 Sep 14 20:12 initrd/etc/ 
  1024 Sep 14 20:12 initrd/lib/ 
    76 Sep 14 20:12 initrd/linuxrc 
  1024 Sep 14 20:12 initrd/loopfs/ 


Il est permis que le fichier initrd/bin/insmod soit la version liée statiquement [c'est-à-dire ne requerrant pas de bibliothèques partagées] copiée depuis /sbin/insmod.static, un membre du paquet modutils-2.3.13. Le fichier initrd/bin/sash est un shell statiquement lié au paquet sash-3.4. Vous pouvez recompiler insmod depuis les sources si vous n'en possédez pas une version liée statiquement. Alternativement, copiez les DLLs nécessaires depuis /lib vers initrd/lib. Vous pouvez obtenir la listes de DLLs requises en exécutant ldd /sbin/insmod. N'oubliez pas de copier également les liens symboliques et d'exécuter strip -s <lib> de sorte à réduire la taille des DLLs.

A présent, dans le répertoire initrd/lib, copiez les modules SCSI dont vous avez besoin . Par exemple, si vous avez un adaptateur SCSI Adaptec AIC-7850, vous devez disposer du module aix7xxx.o qui se trouve dans le répertoire /lib/modules/<version>/scsi/. Alors, placez-le dans le répertoire initrd/lib:

-rw-r-r- 
1 root 
root 
129448 Sep 27 1999 initrd/lib/aic7xxx.o 


Le fichier initrd/linuxrc devrait contenir un script pour charger les modules nécessaires au noyau afin qu'il accède à la partition SCSI. Dans ce cas-ci, il suffit d'indiquer le module aic7xxx [insmod peut prendre des options telles que IRQ ou IO-port associées au périphérique. Voir le chapitre 43]:

#!/bin/sash 
 
aliasall 
 
echo ``Loading aic7xxx module'' 
insmod /lib/aic7xxx.o 


Maintenant, vérifions tous les droits et emprisonnons-nous (chroot) dans le système de fichiers pour effectuer des tests:

chroot ~/initrd /bin/bash 
/linuxrc 


Ensuite, créons une image du système de fichiers similairement à ce qui est décrit dans la section 20.9:

dd if=/dev/zero of=~/file-inird count=2500 bs=1024 
losetup /dev/loop0 ~file-inird 
mke2fs /dev/loop0 
mkdir ~/mnt 
mount /dev/loop0 ~/mnt 
cp -a initrd/* ~/mnt/ 
umount ~/mnt 
losetup -d /dev/loop0 


Enfin, compressons le système de fichiers (gzip) sous un nom de fichier approprié:

gzip -c ~/file-inird > initrd-<version_noyau> 


next up previous contents Next: Modifier lilo.conf pour initrd. Up: Démarrage, lilo et initrd. Previous: Complications avec SCSI et   Table des matières  
1-01-2006