Man page - initrd(4)

Packages contains this manual

Available languages:

en fr pt_BR es pl tr ja ru ro de

Manual

initrd

NOM
CONFIGURATION
DESCRIPTION
Démarrage du systÚme
Options
Modification de la racine du systĂšme de fichiers
Utilisation
FICHIERS
NOTES
VOIR AUSSI
TRADUCTION

NOM

initrd - Disque RAM initialisé au démarrage du systÚme

CONFIGURATION

/dev/initrd est un périphérique bloc en lecture seule, de numéro majeur 1 et de numéro mineur 250. Typiquement, /dev/initrd appartient à root:disk et dispose du mode 0400 (lecture uniquement par le superutilisateur). Si votre systÚme Linux ne comporte pas encore de fichier /dev/initrd , vous pouvez le créer en utilisant les commandes suivantes :

mknod -m 400 /dev/initrd b 1 250
chown root:disk /dev/initrd

Les options « disque RAM » et « Disque RAM initial » (par exemple CONFIG_BLK_DEV_RAM=y et CONFIG_BLK_DEV_INITRD=y ) doivent ĂȘtre compilĂ©es directement dans le noyau Linux pour pouvoir utiliser /dev/initrd . Lors de l’utilisation de /dev/initrd , le pilote de disque RAM ne peut pas ĂȘtre chargĂ© en tant que module.

DESCRIPTION

Le fichier spécial /dev/initrd est un périphérique bloc en lecture seule. Ce périphérique est un disque RAM qui est initialisé par le chargeur du systÚme avant le démarrage du noyau. Ainsi, le noyau peut utiliser le contenu de /dev/initrd pour un démarrage en deux phases.

Durant la premiĂšre phase, le noyau dĂ©marre et monte la racine du systĂšme de fichiers depuis le contenu de /dev/initrd (par exemple un disque RAM initialisĂ© par le chargeur). Durant la seconde phase, les pilotes de pĂ©riphĂ©riques supplĂ©mentaires et les autres modules sont chargĂ©s depuis le pĂ©riphĂ©rique racine initial. AprĂšs le chargement de ces modules supplĂ©mentaires, une nouvelle racine du systĂšme de fichiers est montĂ©e Ă  partir d’un pĂ©riphĂ©rique diffĂ©rent.

Démarrage du systÚme

Quand il démarre en utilisant initrd , le systÚme procÚde comme suit :

(1)

Le chargeur place une copie du noyau en mémoire, ainsi que le contenu de /dev/initrd .

(2)

Au démarrage du noyau, celui-ci décompresse et recopie le contenu du périphérique /dev/initrd sur le disque virtuel /dev/ram0 puis libÚre la mémoire utilisée par /dev/initrd .

(3)

Le noyau monte en lecture/écriture le périphérique /dev/ram0 comme racine initiale du systÚme de fichiers.

(4)

Si la racine dĂ©sirĂ©e pour le systĂšme de fichiers est Ă©galement celle que l’on vient de monter (par exemple /dev/ram0 ), le noyau passe directement Ă  la derniĂšre Ă©tape du dĂ©marrage.

(5)

Si un fichier exĂ©cutable /linuxrc est prĂ©sent sur le systĂšme de fichiers racine initial, ce fichier est exĂ©cutĂ© avec l’uid 0. Le fichier /linuxrc doit avoir la permission d’exĂ©cution. Il peut ĂȘtre n’importe quel exĂ©cutable valable, y compris un shell-script.

(6)

Si /linuxrc n’est pas exĂ©cutĂ© ou lorsqu’il se termine, la racine normale du systĂšme de fichiers est montĂ©e. Si /linuxrc se termine en ayant montĂ© d’autres systĂšmes de fichiers sur la racine initiale, alors le comportement du noyau est INDÉTERMINÉ . Consultez le paragraphe NOTES pour le comportement effectif.

(7)

Si le systĂšme de fichiers racine normal dispose d’un rĂ©pertoire /initrd , le pĂ©riphĂ©rique /dev/ram0 est dĂ©placĂ© depuis / vers /initrd . Sinon, si le rĂ©pertoire /initrd n’existe pas, le pĂ©riphĂ©rique /dev/ram0 est dĂ©montĂ©. Lors du dĂ©placement de / vers /initrd , /dev/ram0 n’est pas dĂ©montĂ©, aussi des processus peuvent continuer Ă  s’exĂ©cuter depuis ce pĂ©riphĂ©rique. Si le rĂ©pertoire /initrd n’existe pas sur le systĂšme de fichiers normal, et si des processus continuent Ă  s’exĂ©cuter depuis /dev/ram0 lorsque /linuxrc se termine, le comportement du noyau est INDÉTERMINÉ . Consultez le paragraphe NOTES pour le comportement effectif.

(8)

La séquence de démarrage habituelle (par exemple, invocation de /sbin/init ) est alors effectuée depuis le systÚme de fichiers normal.

Options

Lorsque l’on utilise initrd , les options suivantes du chargeur affectent les opĂ©rations de dĂ©marrage du noyau :
initrd=
nom_de_fichier

Indique le fichier Ă  charger comme contenu de /dev/initrd . Pour LOADLIN , il s’agit d’une option en ligne de commande. Pour LILO il faut utiliser cette commande dans le fichier de configuration /etc/lilo.config . Le fichier mentionnĂ© avec cette option sera typiquement une image compressĂ©e par gzip (1) du systĂšme de fichiers.

noinitrd

Cette option de dĂ©marrage dĂ©sactive le dĂ©marrage en deux Ă©tapes. Le noyau se comporte comme si /dev/initrd n’était pas initialisĂ©. Avec cette option, une fois chargĂ© en mĂ©moire, le contenu de /dev/initrd sera prĂ©servĂ©. Ce contenu peut alors ĂȘtre n’importe quelle donnĂ©e et pas uniquement une image d’un systĂšme de fichiers. NĂ©anmoins, le pĂ©riphĂ©rique /dev/initrd est en lecture seule et ne peut ĂȘtre lu qu’une seule fois aprĂšs le dĂ©marrage du systĂšme.

root= nom_de_périphérique

Indique le nom du pĂ©riphĂ©rique Ă  utiliser comme racine normale du systĂšme de fichiers. Pour LOADLIN , il s’agit d’une option en ligne de commande. Pour LILO il faut utiliser cette commande dans le fichier de configuration /etc/lilo.config . Le pĂ©riphĂ©rique indiquĂ© ici doit ĂȘtre montable et contenir un systĂšme de fichiers convenable.

Modification de la racine du systĂšme de fichiers

Par dĂ©faut, les paramĂštres du noyau (par exemple, ceux configurĂ©s avec rdev (8) ou compilĂ©s dans le noyau) ou les options du chargeur de dĂ©marrage sont utilisĂ©s pour les systĂšmes de fichiers racines normaux. Pour accĂ©der Ă  un systĂšme de fichiers racine montĂ© par NFS, il faut utiliser les options de dĂ©marrage nfs_root_name et nfs_root_addrs pour la configuration NFS. Pour plus d’informations sur les racines de systĂšmes de fichiers montĂ©es par NFS, consultez le fichier de la documentation du noyau Documentation/filesystems/nfsroot.txt (ou Documentation/filesystems/nfsroot.txt avant la verions 2.6.33). Pour plus d’informations sur la configuration de la racine du systĂšme de fichiers, consultez Ă©galement les documentations de LILO et LOADLIN .

On peut aussi faire effectuer la modification de la racine normale par l’exĂ©cutable /linuxrc . Pour cela, le systĂšme /proc doit ĂȘtre montĂ©. AprĂšs avoir montĂ© /proc , /linuxrc modifie le pĂ©riphĂ©rique racine en Ă©crivant directement dans les fichiers /proc/sys/kernel/real-root-dev , /proc/sys/kernel/nfs-root-name et /proc/sys/kernel/nfs-root-addrs . Pour un pĂ©riphĂ©rique physique montĂ© Ă  la racine, le changement s’effectue en Ă©crivant le numĂ©ro de pĂ©riphĂ©rique du nouveau systĂšme de fichiers dans /proc/sys/kernel/real-root-dev . Pour un systĂšme montĂ© par NFS, la modification s’effectue en Ă©crivant la configuration NFS dans les fichiers /proc/sys/kernel/nfs-root-name et /proc/sys/kernel/nfs-root-addrs puis en inscrivant 0xff (par exemple, le numĂ©ro de pseudopĂ©riphĂ©rique NFS) dans le fichier /proc/sys/kernel/real-root-dev . Par exemple, la ligne de commande suivante basculerait le pĂ©riphĂ©rique racine normal sur /dev/hdb1 :

echo 0x365 >/proc/sys/kernel/real-root-dev

La ligne suivante modifierait le systĂšme racine normal vers un rĂ©pertoire NFS /var/nfsroot d’un serveur local ayant l’adresse IP 193.8.232.7, cela sur un systĂšme nommĂ© « idefix », se trouvant Ă  l’adresse 193.8.232.2 :

echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \
>/proc/sys/kernel/nfs-root-addrs
echo 255 >/proc/sys/kernel/real-root-dev

Note : l’utilisation de /proc/sys/kernel/real-root-dev pour modifier le systĂšme de fichiers racine est obsolĂšte. Consultez le fichier Documentation/admin-guide/initrd.txt du noyau Linux (ou Documentation/initrd.txt avant la version 4.10) ainsi que pivot_root (2) et pivot_root (8) pour des informations sur les mĂ©thodes actuelles pour changer le systĂšme de fichiers racine.

Utilisation

L’intĂ©rĂȘt principal d’implĂ©menter initrd Ă©tait de permettre une configuration modulaire du noyau lors de l’installation du systĂšme.

Un scĂ©nario possible d’installation est le suivant :

(1)

Le programme de chargement dĂ©marre depuis une disquette ou un autre support avec un noyau minimal (par exemple, les supports pour /dev/ram , /dev/initrd et le systĂšme de fichiers ext2), puis il charge /dev/initrd depuis une version compressĂ©e avec gzip d’un systĂšme de fichiers initial.

(2)

L’exĂ©cutable /linuxrc dĂ©termine ce qui est nĂ©cessaire pour (1) monter le systĂšme de fichiers normal (pilotes de pĂ©riphĂ©riques, systĂšmes de fichiers) et (2) utiliser le support fourni pour la distribution (par exemple, CD-ROM, rĂ©seau, bande magnĂ©tique, ...). Cette Ă©tape peut ĂȘtre effectuĂ©e en interrogeant l’utilisateur, en effectuant des tests de dĂ©tection automatique ou en utilisant une approche hybride entre les deux.

(3)

L’exĂ©cutable /linuxrc charge les modules nĂ©cessaires depuis le systĂšme de fichiers initial.

(4)

L’exĂ©cutable /linuxrc crĂ©e et remplit le systĂšme de fichiers racine. À cet instant, le systĂšme de fichiers racine n’est pas nĂ©cessairement complet.

(5)

L’exĂ©cutable /linuxrc configure /proc/sys/kernel/real-root-dev , dĂ©monte /proc , le systĂšme de fichiers normal et tout autre systĂšme de fichiers qu’il a Ă©ventuellement montĂ©, et se termine.

(6)

Le noyau monte alors le systĂšme de fichiers racine normal.

(7)

Maintenant que le systĂšme de fichiers est accessible, le chargeur peut ĂȘtre installĂ©.

(8)

Le chargeur est configurĂ© pour installer dans /dev/initrd un systĂšme de fichiers disposant de l’ensemble des modules qui ont Ă©tĂ© utilisĂ©s pour dĂ©marrer le systĂšme. Par exemple, un pĂ©riphĂ©rique comme /dev/ram0 peut ĂȘtre modifiĂ©, puis dĂ©montĂ© et, finalement, l’image est recopiĂ©e depuis /dev/ram0 vers un fichier.

(9)

Le systĂšme est maintenant prĂȘt Ă  redĂ©marrer et les tĂąches supplĂ©mentaires d’installation peuvent ĂȘtre effectuĂ©es.

Le principal avantage offert par /dev/initrd dans ce scĂ©nario est de permettre de rĂ©utiliser les donnĂ©es de configuration lors du fonctionnement normal du noyau, sans nĂ©cessiter de choisir un noyau initial, d’utiliser un gros noyau gĂ©nĂ©rique ou de recompiler le noyau aprĂšs l’installation.

Un second scĂ©nario sert Ă  l’installation de Linux sur un rĂ©seau constituĂ© de machines diffĂ©rentes. Dans ce cas, il peut ĂȘtre prĂ©fĂ©rable de n’utiliser qu’un nombre minimal de noyaux (voire un seul dans le meilleur des cas) et de garder la quantitĂ© d’informations spĂ©cifiques Ă  un systĂšme la plus faible possible. Ainsi, on crĂ©e un fichier commun contenant tous les modules nĂ©cessaires, et seul le fichier /linuxrc , ou les fichiers qu’il lance, change suivant les machines.

Un troisiĂšme scĂ©nario permet de disposer de disques de secours plus commodes. Les informations comme l’emplacement du systĂšme de fichiers racine ne sont pas indispensables lors du dĂ©marrage. Le systĂšme chargĂ© depuis /dev/initrd peut ainsi ĂȘtre interactif et/ou effectuer une dĂ©tection automatique suivie d’une vĂ©rification de cohĂ©rence du systĂšme.

Le dernier usage mais non le moindre concerne l’utilisation de initrd pour faciliter l’installation de distribution Linux par CD-ROM. La distribution peut utiliser directement LOADLIN pour charger /dev/initrd depuis le CD-ROM sans avoir besoin de crĂ©er de disquettes. La distribution peut Ă©galement utiliser une disquette de dĂ©marrage avec LILO , puis charger un disque RAM par l’intermĂ©diaire de /dev/initrd depuis le CD-ROM.

FICHIERS

/dev/initrd
/dev/ram0
/linuxrc
/initrd

NOTES

-

Avec le noyau actuel, tout systÚme de fichiers qui reste monté lors du déplacement de /dev/ram0 depuis / vers /initrd demeure accessible. Néanmoins, les entrées de /proc/mounts ne sont pas mises à jour.

-

Avec le noyau actuel, si le rĂ©pertoire /initrd n’existe pas, alors /dev/ram0 ne sera pas complĂštement dĂ©montĂ© si /dev/ram0 est utilisĂ© par un processus ou si un systĂšme de fichiers a Ă©tĂ© montĂ© dessus. Si /dev/ram0 n’est pas complĂštement dĂ©montĂ©, alors /dev/ram0 restera chargĂ© en mĂ©moire.

-

Les utilisateurs de /dev/initrd ne doivent pas compter sur les comportements décrits dans les deux notes précédentes. Ces comportements peuvent changer dans les versions futures du noyau Linux.

VOIR AUSSI

chown (1), mknod (1), ram (4), freeramdisk (8), rdev (8)

Documentation/admin-guide/initrd.rst (ou Documentation/initrd.txt avant Linux 4.10) dans les sources du noyau Linux, la documentation de LILO, celle de LOADLIN et celle de SYSLINUX.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com>, Frédéric Hantrais <fhantrais@gmail.com> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .