openSUSE 11.1: Wie funktioniert die initrd?

28/02/2009 - 23:33 von Hauke Laging | Report spam
Moin,

ich habe gerade mal in die initrd meines oS 11.1 reingeschaut. Zu
meiner Überraschung gibt es darin kein /sbin/init, sondern
nur /bin/init (ein Shellscript) und /bin/run-init (Binary).

Ich dachte immer (weiß aber nicht mehr, woher eigentlich, und kann es
deshalb nicht nachlesen), dass der Kernel in Ermangelung eines
entsprechenden Bootparameters /sbin/init starte. Stimmt das nicht?
Offenbar. :-) Aber wie arbeitet denn der Kernel seine initrd ab?


CU

Hauke
http://www.hauke-laging.de/ideen/
 

Lesen sie die antworten

#1 Klaus von der Heyde
28/02/2009 - 23:43 | Warnen spam
Hauke Laging wrote:

Ich dachte immer (weiß aber nicht mehr, woher eigentlich, und kann
es deshalb nicht nachlesen), dass der Kernel in Ermangelung eines
entsprechenden Bootparameters /sbin/init starte. Stimmt das nicht?



Ich habe gerade nur die Kernel-Quellen für 2.4 ausgepackt, und
da steht in init/main.c folgendes:
[...]
| /*
| * We try each of these until one succeeds.
| *
| * The Bourne shell can be used instead of init if we are
| * trying to recover a really broken machine.
| */
| if (execute_command)
| run_init_process(execute_command);
|
| run_init_process("/sbin/init");
| run_init_process("/etc/init");
| run_init_process("/bin/init");
| run_init_process("/bin/sh");
|
| panic("No init found. Try passing init= option to kernel.");
[...]

ich habe gerade mal in die initrd meines oS 11.1 reingeschaut. Zu
meiner Überraschung gibt es darin kein /sbin/init, sondern
nur /bin/init (ein Shellscript) und /bin/run-init (Binary).



Der Kernel erkennt durch das #!/bin/sh (oder so àhnlich) am
Anfang des Shellscriptes, dass er bitte den angegebenen Interpreter
starten soll. Deshalb kann /bin/init problemlos auch ein Script sein.

HDH,
Klaus

Ähnliche fragen