Ich habe ein Tutorial zum Einrichten eines benutzerdefinierten initramfs durchlaufen, in dem Folgendes angegeben ist:
Das einzige, was fehlt, ist / init, die ausführbare Datei im Stammverzeichnis des initramfs, die vom Kernel ausgeführt wird, sobald er geladen ist. Da sys-apps / busybox eine voll funktionsfähige Shell enthält, können Sie Ihre / init-Binärdatei als einfaches Shell-Skript schreiben (anstatt es zu einer in Assembler oder C geschriebenen komplizierten Anwendung zu machen, die Sie kompilieren müssen).
und gibt ein Beispiel für init als Shell-Skript, das mit beginnt #!/bin/busybox sh
Bisher hatte ich den Eindruck, dass init der Hauptprozess ist, der gestartet wird, und dass alle anderen User-Space-Prozesse letztendlich Kinder von init sind. In dem gegebenen Beispiel ist der erste Prozess jedoch tatsächlich der, bin/busybox/ sh
aus dem später init erzeugt wird.
Ist das eine korrekte Interpertation? Wenn ich zum Beispiel zu diesem Zeitpunkt einen verfügbaren Interpreter hätte, könnte ich init als Python-Skript usw. schreiben.
/
verschwindet nicht in Luft - es wird über montiert (obwohl normalerweise sein Inhalt gelöscht wird, bevor es Speicher spart) . Es ist immer noch da . Tutswitch_root
den Syscallswitchroot
- das ist es, was die Kernel-Entwickler bereitgestellt haben, als sie den Boot-Prozess in Kernel 2.6 geändert haben. Etwas, das initramfs erfordert. Es ist der Kernel, der die Magie ausübt.