Ich habe es geschafft, eine kleine und voll funktionsfähige Live-Linux-CD zu erstellen, die nur Kernel (kompiliert mit Standardoptionen) und BusyBox (kompiliert mit Standardoptionen + statisch, alle vorhandenen Applets, einschließlich /sbin/init
) enthält. Ich hatte keine Probleme beim Erstellen initrd
und Auffüllen /dev
, /proc
und /sys
ich hatte auch überhaupt keine Probleme mit meinem /init
Shell-Skript.
Kürzlich habe ich gelesen, dass BusyBox /etc/inittab
Konfigurationen unterstützt (zumindest bis zu einem gewissen Grad), und ich würde sehr gerne eine der folgenden Aktionen ausführen :
- Vergessen Sie mein
/init
Shell-Skript und verlassen Sie sich ausschließlich auf die/etc/inittab
Konfiguration. - Verwenden Sie sowohl das
/init
Shell-Skript als auch die/etc/inittab
Konfiguration.
Nun das eigentliche Problem - es scheint, dass /etc/inittab
das völlig ignoriert wird, wenn meine Distribution hochfährt. Die Symptome sind:
- Wenn ich nur entferne
/init
und gehe, bekomme/etc/inittab
ich Kernel-Panik. Ich gehe davon aus, dass der Kernel überhaupt nicht ausgeführt/sbin/init
wird oder dass er/sbin/init
nicht findet (oder liest)/etc/inittab
. - Ich habe gelesen, dass BusyBox auch ohne funktionieren sollte
/etc/inittab
. Also entfernte ich beide/init
und/etc/inittab
und rate mal, was - Kernel-Panik wieder. - Ich habe versucht , die Ausführung
/sbin/init
von meiner Schale und nach einigen Vermutungen , die eingeschlossenexec /sbin/init
,setsid /sbin/init
undexec setsid /sbin/init
ich endete mit Kernel - Panik auf. Sowohl mit als auch ohne / etc / inittab im Dateisystem.
Hier ist der Inhalt meines /init
Shell-Skripts:
#!/bin/sh
dmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
setsid cttyhack /bin/sh
An dieser Stelle ist es mir egal, wie der Inhalt von aussehen /etc/inittab
würde, solange ich eine Möglichkeit habe zu wissen, dass die Konfiguration dort tatsächlich funktioniert. Ich habe verschiedene /etc/inittab
Konfigurationen ausprobiert , die alle auf den Informationen basieren, die ich hier gefunden habe .
Als Minimum enthielt mein / etc / inittab nur diese eine Zeile:
::sysinit:/bin/sh
Wieder - ich hatte Kernel-Panik und es scheint, dass dies /etc/inittab
ignoriert wurde.
Vorschläge, wie ich meine kleine Live-Distribution dazu zwingen kann, gut mit BusyBox zu arbeiten, /etc/inittab
werden sehr geschätzt!
Aktualisieren:
- Nur um es klar zu machen: Ich habe keine Probleme mit der Kernel-Panik mit meinem aktuellen
/init
Shell-Skript, sowohl mit als auch ohne/etc/inittab
. Es funktioniert alles gut, meine/bin/ash
Konsole funktioniert hervorragend und ich habe keine unerwarteten Probleme. Das einzige Problem ist, dass/etc/inittab
es vollständig ignoriert wird, wie ich oben beschrieben habe. - Ich habe 3 verschiedene Live-Linux-Distributionen untersucht: Slax, Finnix und SysResCD. Alle von ihnen haben
/init
und keiner von ihnen hat/etc/inittab
. Außerdem schließt dieser Wiki-Artikel meinen Verdacht, der überhaupt/sbin/init
nicht geltend gemacht wird.