Hallo Christian,
erst mal Danke für Deine umfangreiche Antwort. Das sind erst mal etwas Mehr an Informationen, als ich vertragen kann ;)
Am Montag, 16. April 2007 15:10 schrieb Christian Perle:
Kernelintern gibt es da nichts, aber es gibt unterschiedliche Methoden, wie man eine initiale Ramdisk anfassen kann und von dort aus aufs eigentliche Rootfilesystem wechselt:
Das ist mir alles neu. Wie initialisiert man eigentlich die drei Methoden? Ich vermute es wird ein fall back von Variante 3 über 2 zu 1 durchgeführt?
2 "Old style" initrd mit linuxrc als init:
Ich dachte diese Variante zu kennen.
Die initiale Ramdisk ist ein gzip-komprimiertes ext2-Image. Per Bootloader bekommt der Kernel die Argumente root=/dev/ram0 init=/linuxrc. In diesem Fall behandelt der Kernel die Ramdisk bereits als echtes Rootfilesystem und /linuxrc als echtes init, das sich nicht beenden darf. Hier hat linuxrc die Aufgabe, das spaetere Rootfilesystem selbst zu mounten, den Wechsel darauf selbst vorzunehmen und sich abschliessend -- unter Beibehaltung der PID 1 -- mit dem dortigen /sbin/init zu ueberlagern (exec). Je nach Art des Rootfilesystemwechsels kann wie im Fall 1 die initiale Ramdisk nach dem Booten als Ramdisk weiterbenutzt werden.
Wenn der Rootfilesystemwechsel ausgelassen wird, 'sieht' man dann dann den Root-Mount-Point (in der Art /dev/ram0 on /)? Ich habe hier folgende Ausgabe:
root@c17:~# mount proc on /proc type proc (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620)