INITRD(4)          Manuel du programmeur Linux          INITRD(4)


NOM
NAME
       initrd - Disque RAM initialisé au démarrage du système.

DESCRIPTION
       Le fichier spécial /dev/initrd est un périphérique bloc en
       lecture seule.  Ce périphérique /dev/initrd 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 con­
       tenu  de  ce  périphérique  bloc 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  drivers
       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  ex.
         /dev/ram0),  le  noyau  passe  directement à la dernière
         étape du démarrage.

         5. Si un fichier éxécutable /linuxrc est présent sur  le
         système  de  fichiers  racine  initial,  ce  fichier est
         éxé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  ter­
         mine,  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  para­
         graphe NOTES pour le comportement effectif.)



Linux                      31 Mai 1998                          1





INITRD(4)          Manuel du programmeur Linux          INITRD(4)


         7. Si la racine normale 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  (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ération 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 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 LOAD­
              LIN, 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 con­
              tenir un système de fichiers convenable.

MODIFICATION DE LA RACINE DU SYSTÈME DE FICHIERS
       Le système de fichiers utilisé comme racine par défaut est
       celui  qui  est  compilé  dans le noyau (ou configuré avec
       rdev), ou  celui  qui  est  spécifié  par  une  option  du



Linux                      31 Mai 1998                          2





INITRD(4)          Manuel du programmeur Linux          INITRD(4)


       chargeur.  Pour accèder à un système de fichiers 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'information sur les  racines  de  systèmes  de
       fichiers  montées  par  NFS,  consultez  le  fichier  nfs­
       root.txt, dans  la  documentation  du  noyau.   Pour  plus
       d'informations  sur  la  configuration  de  la  racine  du
       système de fichiers, voyez également les documentations de
       LILO et LOADLIN.

       On peut aussi faire effectuer la modification de la racine
       normale par l'exécutable  /linuxrc.   Pour  ce  faire,  le
       système  /proc  doit être monté. Ensuite, /linuxrc modifie
       le périphérique racine en écrivant  directement  dans  les
       fichiers   /proc/sys/kernel/real-root-dev,  /proc/sys/ker­
       nel/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 se fait 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
       (ie. le numéro de pseudo-périphérique NFS) dans le fichier
       /proc/sys/kernel/real-root-dev.   Par exemple, la ligne de
       commande suivant basculerait le périphérique  racine  nor­
       male sur /dev/hdb1:
               echo 0x365 >/proc/sys/kernel/real-root-dev
       La ligne suivante modifierait le periphérique normal en un
       répertoire NFS /var/nfsroot sur  un  serveur  local  ayant
       l'adresse  IP  193.8.232.7, ceci sur un système nommé ide­
       fix, 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

UTILISATION
       L'intérêt principal d'implémenter initrd était de  permet­
       tre une configuration modulaire du noyau lors de l'instal­
       lation du système.

       Un scénario possible d'installation est le suivant:

         1. Le programme de chargement démarre  depuis  une  dis­
         quette,  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  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



Linux                      31 Mai 1998                          3





INITRD(4)          Manuel du programmeur Linux          INITRD(4)


         le support fourni pour la distribution (CD-ROM,  réseau,
         bande  magnétique).   Cette  étape peut être effectué 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. (A cet instant, le système de  fichiers
         racine n'est pas nécessairement complet).

         5.   L'exécutable   /linuxrc   configure  /proc/sys/ker­
         nel/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'ensem­
         ble 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'instal­
       lation.

       Un second scénario sert à l'installation de Linux  sur  un
       réseau  constitué  de  machines  configurées  différement.
       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 ne stocker qu'une quantité la plus  faible
       possible  d'information  de configuration.  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  les  plus confortables possible. Les informations



Linux                      31 Mai 1998                          4





INITRD(4)          Manuel du programmeur Linux          INITRD(4)


       comme l'emplacement du système de fichiers  racines,  etc.
       ne  sont pas indispensables lors du démarrage.  Le système
       chargé par /dev/initrd peut utiliser des menus de dialogue
       et/ou des détections automatiques suivi de vérification de
       cohérence du système.

       Enfin, et c'est peut-être l'usage le plus  important,  les
       distributions de Linux sur CD-ROM permettent une installa­
       tion plus aisée.  La distributiion peut utiliser  directe­
       ment  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.

CONFIGURATION
       /dev/initrd  est  un  périphérique  bloc en lecture-seule,
       dont le numéro majeur est 1, et le mineur  250.   Typique­
       ment,  /dev/initrd  appartient  à  root.disk et dispose du
       mode 0400 (lecture uniquement par root).  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

       Il faut également que les options "disque Ram" et  "Disque
       Ram  initial"  (par  exemple  CONFIG_BLK_DEV_RAM=y et CON­
       FIG_BLK_DEV_INITRD=y ) soient 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.

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

VOIR AUSSI
       chown(1),  mknod(1), /dev/ram(4), freeramdisk(8), rdev(8),
       Le fichier initrd.txt dans les sources du noyau, la  docu­
       mentation  de  LILO, celle de LOADLIN, et la documentation
       SYSLINUX.

NOTES
       1. Avec le noyau actuel, tout  système  de  fichier  reste
       monté lors du déplacement de /dev/ram0 depuis / vers /ini­
       trd, 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



Linux                      31 Mai 1998                          5





INITRD(4)          Manuel du programmeur Linux          INITRD(4)


       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.

AUTEURS
       Le  code  du noyau pour le périphérique initrd a été écrit
       par Werner Almesberger <almesber@lrc.epfl.ch> et Hans Ler­
       men  <lermen@elserv.ffm.fgan.de>.  Le code de initrd a été
       introduit dans le noyau Linux de base dans la  version  de
       développement 1.3.73.


TRADUCTION
       Christophe Blaess, 1998.






































Linux                      31 Mai 1998                          6