Loading

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.

       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É. Voir 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É.  Voir  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_priphrique
              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   pseudo-pé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.7 :

           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.   Voir   le   fichier
       Documentation/initrd.txt   du   noyau   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 nest 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)

       Le fichier initrd.txt dans les sources du noyau,  la  documentation  de
       LILO, celle de LOADLIN, et la documentation SYSLINUX.

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par          Simon          Paillard
       <simon.paillard@resel.enst-bretagne.fr>   et  l’équipe  francophone  de
       traduction de Debian.

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