init=
kann jede ausführbare Datei nehmen
init=
Kann jede ausführbare Datei, einschließlich Shell-Skripten, aufnehmen .
Hier zeige ich zum Beispiel, wie man ein beliebiges minimales C kompiliert init
: Wie man eine benutzerdefinierte Linux-Distribution erstellt, die nur ein Programm und nichts anderes ausführt?
Warum sollte es ausgerechnet nicht akzeptieren /bin/bash
, dass es sich um eine reguläre ausführbare Datei handelt, die tatsächlich nützlich sein kann? :-)
Als nächstes sollten Sie auch versuchen zu verstehen, wie die Kompromisse mit Ihren Stammkunden init
wie systemd oder Busybox aussehen werden.
Grundsätzlich mit einem rohen /bin/bash
, Sie:
Die Job-Kontrolle kann auf Busybox 'init und anderen ähnlichen Inits mit einem führenden -
in der wiederhergestellt werden inittab
:
tty3::respawn:-/bin/sh
Die normaleren inittab
Einträge, bei denen die Anmeldung verwendet wird und bei denen weiterhin Shells angezeigt werden, wenn Sie Strg + D ausführen, sind:
::respawn:/sbin/getty -L ttyS0 0 vt100
die die getty
ausführbare Datei verwenden, aber TODO: Ich konnte diese nicht selbst ohne die Busybox erzeugeninit
: getty von der Kommandozeile aus starten?
Sie können dieses Setup verwenden , um damit herumzuspielen und die obigen Schlussfolgerungen zu ziehen.