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 initrdund Auffüllen /dev, /procund /sysich hatte auch überhaupt keine Probleme mit meinem /initShell-Skript.
Kürzlich habe ich gelesen, dass BusyBox /etc/inittabKonfigurationen unterstützt (zumindest bis zu einem gewissen Grad), und ich würde sehr gerne eine der folgenden Aktionen ausführen :
- Vergessen Sie mein
/initShell-Skript und verlassen Sie sich ausschließlich auf die/etc/inittabKonfiguration. - Verwenden Sie sowohl das
/initShell-Skript als auch die/etc/inittabKonfiguration.
Nun das eigentliche Problem - es scheint, dass /etc/inittabdas völlig ignoriert wird, wenn meine Distribution hochfährt. Die Symptome sind:
- Wenn ich nur entferne
/initund gehe, bekomme/etc/inittabich Kernel-Panik. Ich gehe davon aus, dass der Kernel überhaupt nicht ausgeführt/sbin/initwird oder dass er/sbin/initnicht findet (oder liest)/etc/inittab. - Ich habe gelesen, dass BusyBox auch ohne funktionieren sollte
/etc/inittab. Also entfernte ich beide/initund/etc/inittabund rate mal, was - Kernel-Panik wieder. - Ich habe versucht , die Ausführung
/sbin/initvon meiner Schale und nach einigen Vermutungen , die eingeschlossenexec /sbin/init,setsid /sbin/initundexec setsid /sbin/initich endete mit Kernel - Panik auf. Sowohl mit als auch ohne / etc / inittab im Dateisystem.
Hier ist der Inhalt meines /initShell-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/inittabwürde, solange ich eine Möglichkeit habe zu wissen, dass die Konfiguration dort tatsächlich funktioniert. Ich habe verschiedene /etc/inittabKonfigurationen 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/inittabignoriert wurde.
Vorschläge, wie ich meine kleine Live-Distribution dazu zwingen kann, gut mit BusyBox zu arbeiten, /etc/inittabwerden sehr geschätzt!
Aktualisieren:
- Nur um es klar zu machen: Ich habe keine Probleme mit der Kernel-Panik mit meinem aktuellen
/initShell-Skript, sowohl mit als auch ohne/etc/inittab. Es funktioniert alles gut, meine/bin/ashKonsole funktioniert hervorragend und ich habe keine unerwarteten Probleme. Das einzige Problem ist, dass/etc/inittabes 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
/initund keiner von ihnen hat/etc/inittab. Außerdem schließt dieser Wiki-Artikel meinen Verdacht, der überhaupt/sbin/initnicht geltend gemacht wird.