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:
Il faut d'abord localiser le fichier "initrd" ( situé à priori dans /boot/ ) utilisé pour votre noyau :
Déterminez le format de l'image grâce à la commande file. Ce qui peut donner par exemple :
ou encore :
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 :
Modifiez le fichier "loadmodules", qui correspond à la liste des moduleschargés au boot de la machine.. Par exemple :
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 :
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 :
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 :
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.