[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: fabrication de l'initrd (Was: aptitude : aucun espace disponible sur le périphérique)



Le mardi 30 octobre 2007, Pascal Hambourg a écrit :
> > >  Je n'en sais pas plus, pour moi c'est de la magie noire
> Je sais ce qu'est l'initrd et à quoi il sert dans les grandes lignes.
Dsl, je ne voulais pas vexer, c'était pour éclairer la magie noire...

> La magie noire, c'est comment il est fabriqué 
Elle est construite par initramfs-tools, yaird ou linux-initramfs-tool
(en gros des variantes de mkinitrd)

La configuration de initramfs-tools par ex. est dans /etc/initramfs-tools/
On peux y choisir/spécifier des modules particuliers à charger avant de 
monter /
Par exemple si on veux une / en cryptoloop, il faudra que tout y soit, et 
peut-être même scripter la demande de la passphrase pour booter...
(on peux même aller très loin et scripter ce que l'on veux.)

La fabrication est faite entre-autre à partir de /usr/share/initramfs-tools.

> et ce qu'il fait exactement.
On peux en général en examiner le contenu en la gunzippant et en la montant en 
loopback.
En gros elle est constituée d'un /bin ultra minimal qui permet d'exéctuer le 
script shell « init¹ » qui devra notament charger les module présents dans 
l'image.
A la fin, elle monte la partition / dans un sous répertoire et puis elle 
execute pivot_root pour échanger le / (initrd) avec le / (le vrai) ;
et passe la main à /sbin/init qui se chargera d'interprêter /etc/initab

En gros on pourrait la faire soi-même à la main sans trop de difficultés.
Par exemple celle de KNOPPIX est radicalement différente.

¹: /usr/share/initramfs-tools/init

> > L'initrd est fabriquée lors de la configuration du paquet car son contenu
> > dépend du matériel.
> Ouais, voilà. Pas très rassurant.
Au contraire, c'est ce qui permet à un « stock-kernel » de démarrer sur 
n'importe quel hardware sans inclure tous les modules du noyau possibles et 
imaginables (il serait énorme).
Comme cela on charge les modules du noyau dont « on a besoin » pour démarrer.

Je ne compile plus de noyau perso depuis des lustes et lorsque je le fais, je 
part du .config debian et je laisse tous les modules. Ensuite c'est 
mkinitramfs fait tout le travail pour moi.

De plus on peux inclure busybox dans l'initrd, comme cela si le boot merde, on 
dispose de quoi analyser.
(les anxieux, peuvent demander à y inclure d'office tout ce qu'il faut pour 
faire des fsck, badblocks & co.)

Cordialement,
-- 
Eric DÉCORNOD



Reply to: