Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 14 utilisateurs en ligne, consultez le détail
Auteur Message
TrustRobot
#0 Message posté le : 29-07-2006 à 19:56:28


Scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 04-07-2003
Nombre de messages : 171


L'initrd( Initial RAM Disk) est un disque RAM initialisé par le chargeur du système avant le démarrage du noyau. Beaucoup de distributions l'utilisent (Mandriva, Fedora et Debian entre autres), mais ont tendances à le surcharger. Il sera donc souvent intéressant de modifier l'image initrd présente sur votre ditribution, et c'est ce qui est expliqué dans ce didactiel.

L'initrd va automatiquement charger un certains nombre de modules qui ne sont souvent d'aucune utilité, et qui, au contraire peuvent entrer en conflit avec le matériel. Par exemple, ma Debian me chargeait une dizaine de modules pour la gestion de l'IDE et réduisait ainsi les performances de mes Disques Durs de moitié, et aurait très bien pu entrainer un problème matériel !! Modifier son image initrd peut donc être plus qu'un gadget pour Geek en mal d'activité.

La technique utilisée a par ailleurs l'avantage de ne pas nécessiter les sources de son noyau, ce qui est non négligeable, surtout si vous êtes en bas débit, ou que les sources de votre noyau ne sont plus dans les dépendances de votre distribution. Voici donc, les étapes à suivre:

1. Décompression :


  • Il faut d'abord localiser le fichier "initrd" ( situé à priori dans /boot/ ) utilisé pour votre noyau :
    #Pour connaître le noyau utilisé
    uname -r
    #Pour trouver les images initrd
    $ ls /boot/*initrd*

  • Déterminez le format de l'image grâce à la commande file. Ce qui peut donner par exemple :
    $ file /boot/initrd.img-2.6.12-1-k7
    /boot/initrd.img-2.6.12-1-k7: Linux Compressed ROM File System data, little endian size 1712128 version #2 sorted_dirs CRC 0x7ac34bb3, edition 0, 1117 blocks, 146 files

    ou encore :
    $ file /boot/initrd-2.6.8.1-12mdk.img
    /boot/initrd-2.6.8.1-12mdk.img: gzip compressed data, from Unix, max compression

  • Décompressez l'image dans un répertoire temporaire. Pour le format GZIP (ou autre format de compression usuel), faites comme d'habitude, et pour le format CRAMFS, tapez :
    $ fsck.cramfs initrd.img-2.6.12-1-k7 -x repertoire_temp


2. Modification :


  • Modifiez le fichier "loadmodules", qui correspond à la liste des moduleschargés au boot de la machine.. Par exemple :
    modprobe -k capability
    
    modprobe -k vesafb > /dev/null 2>&1
    
    modprobe -k fbcon 2> /dev/null
    
    modprobe -k unix 2> /dev/null
    
    modprobe -k ata_piix
    
    modprobe -k sd_mod
    
    etc..
    
    

  • Si c'est nécessaire, modifiez aussi le fichier linuxrc.conf pour supprimer le support inutile de certains systèmes de fichier (ext2 dans mon cas).. exemple :
    RESUME=
    
    DELAY=0
    
    BUSYBOX=
    
    FSTYPES=ext2,ext3,reiserfs,iso9660,cramfs
    
    IDE_CORE=ide-core
    
    VERSION=0.1.82
    
    

  • Allégez l'image initrd en supprimant les modules qui viennent d'être supprimés a la liste. Ils se trouvent dans les sous-répertoires de repertoire_temp/lib/modules/`uname -r`/kernel/.. exemple :
    $ rm lib/modules/2.6.12-1-k7/kernel/drivers/ide/pci/piix.ko


3. Re-construction :


  • Re-créez une image valide du fichier "initrd", à son format d'origine. C'est à dire qu'il faut recompresser repertoire_temp au format CRAMFS, GZIP ou autre. Ce qui pour moi, donne :
    $ mkcramfs repertoire_temp/ /boot/initrd.img-2.6.12-1-k7-modif

  • Mettez à jour votre bootloader ( lilo ou grub) pour qu'il utilise votre image modifiée à la place de celle d'origine.. Veuillez vous reporter au didactiel de lilo ou grub pour savoir comment faire.

J'espère avoir été suffisament clair, et que cela pourra servir a certains. Pour une utilisation optimal, et un certains confort, Linux nécessite parfois de mettre la main à la pâte, mais, même si l'on y perd un peu de temps au début, n'est-ce pas agréable d'avoir réussi à dompter son OS pour lui faire faire ce que l'on désire. :)

Par ailleurs, alléger son image "initrd" aura aussi comme conséquence de réduire le temps de démarrage de Linux, mais au cas ou l'image que vous venez de créer ne soit pas valide et ne permette pas à Linux de se lancer, je vous conseille très vivement d'avoir encore une configuration de boot de votre ancienne image "initrd" dans votre bootloader. Cela pourrait éviter quelques mauvaises surprises.




--Message édité par TrustRobot le 29-07-2006 à 19:56:28--
ulhume
#1 Message posté le : 27-07-2007 à 17:08:17


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 27-07-2007
Nombre de messages : 1
Il semble que le montage cramfs ne fonctionne pas ou plus sous mandriva 2007, là méthode qui est passé chez moi pour modifier l'initrd est la suivante :

# unpack the current initrd.img
mkdir /home/cdimgextract
cd /home/cdimgextract
gzip -dc < /home/isolinux/initrd.img | cpio -i
cd /home
# make any changes you need to the initrd.img in cdimgextract


REMAKE MODIFIED INITRD.IMG

cd /home/cdimgextract
# create the new initrd
rm -f /home/isolinux/initrd.img
find . | cpio -o -c | gzip -9 > /home/isolinux/initrd.img
# cleanup
cd /home