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.65 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> ».