NOM¶
initrd - Disque RAM initialisé au démarrage du système
CONFIGURATION¶
/dev/initrd est un périphérique bloc en lecture seule, dont le
numéro majeur est 1, et le mineur 250. Typiquement,
/dev/initrd
appartient à
root.disk et dispose du mode 0400 (lecture uniquement
par le superutilisateur). Si votre système Linux n'a 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. Ce peut être n'importe quel
exécutable, 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, le
contenu de /dev/initrd, une fois chargé en mémoire 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
Documentation/filesystems/nfsroot.txt de
la documentation du noyau. 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, ceci 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/initrd.txt du noyau Linux ainsi que
pivot_root(2) et
pivot_root(8) pour des informations sur les
méthodes actuelles pour changer de 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 changent 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¶
- 1.
- Avec le noyau actuel, tout système de fichiers reste
monté lors du déplacement de /dev/ram0 depuis /
vers /initrd, et continue à être accessible.
Néanmoins, les entrées de /proc/mounts ne sont pas mises
à jour.
- 2.
- 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.
- 3.
- 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/initrd.txt dans les sources du noyau Linux, la
documentation de LILO, celle de LOADLIN, et la documentation SYSLINUX.
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Simon Paillard et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».