Forum Linux.débutant Initrd

Posté par  .
Étiquettes : aucune
0
17
jan.
2005
Salut,

J'ai bien compris que le initrd servait à charger les modules nécessaires au démarrage du noyau, souvent afin que celui puisse monter la partition root.

Ce que je comprends pas, c'est comment le noyau trouve le fichier initrd (exemple : /boot/initrd.img), puisque par définition la root n'est pas montée !!!

Si il y en a qui savent, ou qui ont des liens, je suis preneur.


Bon, mon système fonctionne très bien avec la root en ext3 et le le pilote ext3 en module, mais ça m'énerve de ne pas tout comprendre.

Merci
  • # initrd

    Posté par  . Évalué à 1.

    > c'est comment le noyau trouve le fichier initrd (exemple : /boot/initrd.img), puisque par définition la root n'est pas montée !!!

    C'est là ton erreur. Le noyau ne cherche pas un fichier.
    Grub/lilo charge initrd en mémoire puis charge le noyau en donnant en paramètre l'adresse de initrd en mémoire. Jamais le noyau va chercher initrd sur un système de fichier.
    • [^] # Re: initrd

      Posté par  . Évalué à 1.

      OK, je me doutais un peu de cette réponse mais je n'en étais pas sûr du tout.

      Mais comment on fait si on veut pas utiliser lilo ni grub ni aucun gestionnaire de boot ; si on veut juste démarrer à partir de l'image du noyau (en supposant qu'on a qu'un linux et aucun autre système d'exploitation) ?

      Bref, la question devient comment démarrer un linux sans aucun gestionnaire de boot.

      Est-ce possible ?
      • [^] # Re: initrd

        Posté par  (site web personnel) . Évalué à 1.

        Non.

        Pour info .. initrd a deux utilites:
        - tu n as pas de root ... donc tu fais du disk less; alors la les images noyo en initrd peuvent venire d un (disque), CD, reseau ( genre ta carte reseau vas toute seule sur le bon server ... OUI OUI ca existe )
        - tu as un root, mais tu ne veux pas ou peux pas mettre le driver de root dans le noyo: le bon driver est alors en module ; l initrd sert alors a charger ce driver.
        ( cas du RAID, DOC2000 dans l UIB, ou lorsque la carte qui supporte les disques a besoin d une initialisation speciale ... )

        Exemple: tu prends une disquette avec un noyo dessus ... juste une disquette ala
        cat noyo > /dev/fd0
        chez toi ca marche; now imagine que tu as plusieur partitions Linux ... ben ca marche aussi, mais ca boot toujours le meme system .. pourquoi ?

        parce que l image du noyo contient des informations sur l emplacement du root !!! je te laisse lire 'man rdev' ...
        les arguments de lilo ou grub servent justement a passer outre ces arguments par default; un argument geniale si un jour tu oublies ton mot de passe root:

        Linux init=/bin/bash

        tu laisse booter, puis

        mount -o remount,rw /dev/hda<?> /
        password
        mount -o remount,ro /dev/hda<?> /
        sync
        reboot

        http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html(...)
      • [^] # Re: initrd

        Posté par  . Évalué à 0.

        > Bref, la question devient comment démarrer un linux sans aucun gestionnaire de boot.

        Faut faire un noyau qui n'a pas besoin de initrd ou qui n'a pas besoin de initrd pour accéder à la partition root.

        Notes que udev est initialement lancé par initrd. Si pas d'initrd, il faut faire des bidouilles pour que udev marche mais sans être initialement lancé par initrd.
        • [^] # Re: initrd

          Posté par  (site web personnel) . Évalué à 2.

          cool, j'apprend des truc, donc gentoo fait ces truc par defaut parce que je suis passer sous udev et je n'ai pas d'initrd.
          En plus j'ai pas souvenir d'avoir fait des manip monstrueuses pour y arrivé (ebfin j'ai suivi un tuto).
          • [^] # Re: initrd

            Posté par  . Évalué à 1.

            > cool, j'apprend des truc, donc gentoo fait ces truc par defaut parce que je suis passer sous udev et je n'ai pas d'initrd.

            Non, gentoo fait rien du tout.
            T'as un /dev "statique" (pas utile quand on a udev....) avec des périphériques dedans. Donc le noyau peut booter (monter la partition racine) sans udev. Udev qui est soit dans l'initrd soit sur la partition. Donc, sans initrd et sans partition racine tu ne peux pas avoir udev. Point final.

            Fais ça :
            [root@ici /]# mkdir /tmp/root
            [root@ici /]# mount -t --bind / /tmp/root
            [root@ici /]# mount --bind / /tmp/root
            [root@ici /]# ll /tmp/root/dev/
            total 0
            [root@ici /]#

            Chez moi je n'ai rien. Et toi ?
            • [^] # Re: initrd

              Posté par  (site web personnel) . Évalué à 2.

              sic ...

              Le noyau n'a pas besoin du /dev pour monter la partition racine (qui je le rappelle dans ce cas contiendrait elle meme le dit /dev ...)

              Le bootloader converti les nom de peripherique en code: major:minor.
              • [^] # Re: initrd

                Posté par  . Évalué à 0.

                D'accord (dans le cas où tu n'utilise pas initrd), mais après tu as besoin de /dev/console, /dev/null, etc...
            • [^] # Re: initrd

              Posté par  (site web personnel) . Évalué à 2.

              Chez moi j'ai ca :
              eva-01 root # ls -l /tmp/root/dev/ |wc -l
              1476

              Maintenat je veux bien que tu m'explique parce que je ne suis pas tout.
              Le truc dont je suis sur c'est :
              - J'ai pas de initrd
              - J'ai pas activer le support de devfs dans le kernel
              - J'etais en devfs il y a encore 2 semaines
              - Ma gentoo ne rale plus (elle a pas aprecier au debut la migration, elle me disais etre concue pour devfs)
              • [^] # Re: initrd

                Posté par  . Évalué à 1.

                Chez toi ça marche car :
                * tu as un /dev statique ( qui est visible dans /tmp/root/dev/ par exemple ) qui te permet de booter sans initrd.

                Si j'installe un /dev statique je peux aussi booter dans initrd.
                Avoir un /dev statique n'empêche pas d'avoir aussi udev (qui est lancé après le montage de la partition racine par exemple).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.