initrd(4) Device Drivers Manual initrd(4)
NOM
initrd - Disque RAM initialise au demarrage du systeme
CONFIGURATION
/dev/initrd est un peripherique bloc en lecture seule, de numero
majeur 1 et de numero mineur 250. Typiquement, /dev/initrd appartient a
root:disk et dispose du mode 0400 (lecture uniquement par le
superutilisateur). Si votre systeme Linux ne comporte pas encore de
fichier /dev/initrd, vous pouvez le creer 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 etre compilees
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
etre charge en tant que module.
DESCRIPTION
Le fichier special /dev/initrd est un peripherique bloc en lecture
seule. Ce peripherique est un disque RAM qui est initialise par le
chargeur du systeme avant le demarrage du noyau. Ainsi, le noyau peut
utiliser le contenu de /dev/initrd pour un demarrage en deux phases.
Durant la premiere phase, le noyau demarre et monte la racine du
systeme de fichiers depuis le contenu de /dev/initrd (par exemple un
disque RAM initialise par le chargeur). Durant la seconde phase, les
pilotes de peripheriques supplementaires et les autres modules sont
charges depuis le peripherique racine initial. Apres le chargement de
ces modules supplementaires, une nouvelle racine du systeme de fichiers
est montee a partir d'un peripherique different.
Demarrage du systeme
Quand il demarre en utilisant initrd, le systeme procede comme suit :
(1) Le chargeur place une copie du noyau en memoire, ainsi que le
contenu de /dev/initrd.
(2) Au demarrage du noyau, celui-ci decompresse et recopie le contenu
du peripherique /dev/initrd sur le disque virtuel /dev/ram0 puis
libere la memoire utilisee par /dev/initrd.
(3) Le noyau monte en lecture/ecriture le peripherique /dev/ram0 comme
racine initiale du systeme de fichiers.
(4) Si la racine desiree pour le systeme de fichiers est egalement
celle que l'on vient de monter (par exemple /dev/ram0), le noyau
passe directement a la derniere etape du demarrage.
(5) Si un fichier executable /linuxrc est present sur le systeme de
fichiers racine initial, ce fichier est execute avec l'uid 0. Le
fichier /linuxrc doit avoir la permission d'execution. Il peut
etre n'importe quel executable valable, y compris un shell-script.
(6) Si /linuxrc n'est pas execute ou lorsqu'il se termine, la racine
normale du systeme de fichiers est montee. Si /linuxrc se termine
en ayant monte d'autres systemes de fichiers sur la racine
initiale, alors le comportement du noyau est INDETERMINE.
Consultez le paragraphe NOTES pour le comportement effectif.
(7) Si le systeme de fichiers racine normal dispose d'un repertoire
/initrd, le peripherique /dev/ram0 est deplace depuis / vers
/initrd. Sinon, si le repertoire /initrd n'existe pas, le
peripherique /dev/ram0 est demonte. Lors du deplacement de / vers
/initrd, /dev/ram0 n'est pas demonte, aussi des processus peuvent
continuer a s'executer depuis ce peripherique. Si le repertoire
/initrd n'existe pas sur le systeme de fichiers normal, et si des
processus continuent a s'executer depuis /dev/ram0 lorsque
/linuxrc se termine, le comportement du noyau est INDETERMINE.
Consultez le paragraphe NOTES pour le comportement effectif.
(8) La sequence de demarrage habituelle (par exemple, invocation de
/sbin/init) est alors effectuee depuis le systeme de fichiers
normal.
Options
Lorsque l'on utilise initrd, les options suivantes du chargeur
affectent les operations de demarrage du noyau :
initrd=nom_de_fichier
Indique le fichier a 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 mentionne avec cette option sera
typiquement une image compressee par gzip(1) du systeme de
fichiers.
noinitrd
Cette option de demarrage desactive le demarrage en deux etapes.
Le noyau se comporte comme si /dev/initrd n'etait pas
initialise. Avec cette option, une fois charge en memoire, le
contenu de /dev/initrd sera preserve. Ce contenu peut alors etre
n'importe quelle donnee et pas uniquement une image d'un systeme
de fichiers. Neanmoins, le peripherique /dev/initrd est en
lecture seule et ne peut etre lu qu'une seule fois apres le
demarrage du systeme.
root=nom_de_peripherique
Indique le nom du peripherique a utiliser comme racine normale
du systeme 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
peripherique indique ici doit etre montable et contenir un
systeme de fichiers convenable.
Modification de la racine du systeme de fichiers
Par defaut, les parametres du noyau (par exemple, ceux configures avec
rdev(8) ou compiles dans le noyau) ou les options du chargeur de
demarrage sont utilises pour les systemes de fichiers racines normaux.
Pour acceder a un systeme de fichiers racine monte par NFS, il faut
utiliser les options de demarrage nfs_root_name et nfs_root_addrs pour
la configuration NFS. Pour plus d'informations sur les racines de
systemes de fichiers montees 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 systeme de
fichiers, consultez egalement les documentations de LILO et LOADLIN.
On peut aussi faire effectuer la modification de la racine normale par
l'executable /linuxrc. Pour cela, le systeme /proc doit etre monte.
Apres avoir monte /proc, /linuxrc modifie le peripherique racine en
ecrivant 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 peripherique physique monte a la racine, le changement s'effectue en
ecrivant le numero de peripherique du nouveau systeme de fichiers dans
/proc/sys/kernel/real-root-dev. Pour un systeme monte par NFS, la
modification s'effectue en ecrivant 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 numero de pseudoperipherique NFS) dans le fichier
/proc/sys/kernel/real-root-dev. Par exemple, la ligne de commande
suivante basculerait le peripherique racine normal sur /dev/hdb1 :
echo 0x365 >/proc/sys/kernel/real-root-dev
La ligne suivante modifierait le systeme racine normal vers un
repertoire NFS /var/nfsroot d'un serveur local ayant l'adresse
IP 193.8.232.7, cela sur un systeme nomme << idefix >>, se trouvant a
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
systeme de fichiers racine est obsolete. 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 methodes actuelles pour
changer le systeme de fichiers racine.
Utilisation
L'interet principal d'implementer initrd etait de permettre une
configuration modulaire du noyau lors de l'installation du systeme.
Un scenario possible d'installation est le suivant :
(1) Le programme de chargement demarre depuis une disquette ou un
autre support avec un noyau minimal (par exemple, les supports
pour /dev/ram, /dev/initrd et le systeme de fichiers ext2), puis
il charge /dev/initrd depuis une version compressee avec gzip d'un
systeme de fichiers initial.
(2) L'executable /linuxrc determine ce qui est necessaire pour (1)
monter le systeme de fichiers normal (pilotes de peripheriques,
systemes de fichiers) et (2) utiliser le support fourni pour la
distribution (par exemple, CD-ROM, reseau, bande magnetique, ...).
Cette etape peut etre effectuee en interrogeant l'utilisateur, en
effectuant des tests de detection automatique ou en utilisant une
approche hybride entre les deux.
(3) L'executable /linuxrc charge les modules necessaires depuis le
systeme de fichiers initial.
(4) L'executable /linuxrc cree et remplit le systeme de fichiers
racine. A cet instant, le systeme de fichiers racine n'est pas
necessairement complet.
(5) L'executable /linuxrc configure /proc/sys/kernel/real-root-dev,
demonte /proc, le systeme de fichiers normal et tout autre systeme
de fichiers qu'il a eventuellement monte, et se termine.
(6) Le noyau monte alors le systeme de fichiers racine normal.
(7) Maintenant que le systeme de fichiers est accessible, le chargeur
peut etre installe.
(8) Le chargeur est configure pour installer dans /dev/initrd un
systeme de fichiers disposant de l'ensemble des modules qui ont
ete utilises pour demarrer le systeme. Par exemple, un
peripherique comme /dev/ram0 peut etre modifie, puis demonte et,
finalement, l'image est recopiee depuis /dev/ram0 vers un fichier.
(9) Le systeme est maintenant pret a redemarrer et les taches
supplementaires d'installation peuvent etre effectuees.
Le principal avantage offert par /dev/initrd dans ce scenario est de
permettre de reutiliser les donnees de configuration lors du
fonctionnement normal du noyau, sans necessiter de choisir un noyau
initial, d'utiliser un gros noyau generique ou de recompiler le noyau
apres l'installation.
Un second scenario sert a l'installation de Linux sur un reseau
constitue de machines differentes. Dans ce cas, il peut etre preferable
de n'utiliser qu'un nombre minimal de noyaux (voire un seul dans le
meilleur des cas) et de garder la quantite d'informations specifiques a
un systeme la plus faible possible. Ainsi, on cree un fichier commun
contenant tous les modules necessaires, et seul le fichier /linuxrc, ou
les fichiers qu'il lance, change suivant les machines.
Un troisieme scenario permet de disposer de disques de secours plus
commodes. Les informations comme l'emplacement du systeme de fichiers
racine ne sont pas indispensables lors du demarrage. Le systeme charge
depuis /dev/initrd peut ainsi etre interactif et/ou effectuer une
detection automatique suivie d'une verification de coherence du
systeme.
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 creer de disquettes. La
distribution peut egalement utiliser une disquette de demarrage avec
LILO, puis charger un disque RAM par l'intermediaire de /dev/initrd
depuis le CD-ROM.
FICHIERS
/dev/initrd
/dev/ram0
/linuxrc
/initrd
NOTES
- Avec le noyau actuel, tout systeme de fichiers qui reste monte lors
du deplacement de /dev/ram0 depuis / vers /initrd demeure
accessible. Neanmoins, les entrees de /proc/mounts ne sont pas mises
a jour.
- Avec le noyau actuel, si le repertoire /initrd n'existe pas, alors
/dev/ram0 ne sera pas completement demonte si /dev/ram0 est utilise
par un processus ou si un systeme de fichiers a ete monte dessus. Si
/dev/ram0 n'est pas completement demonte, alors /dev/ram0 restera
charge en memoire.
- Les utilisateurs de /dev/initrd ne doivent pas compter sur les
comportements decrits dans les deux notes precedentes. 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 francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier , David Prevot
, Cedric Boutillier ,
Frederic Hantrais et Gregoire Scano
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.8 2 mai 2024 initrd(4)