Reale Verwendung von „Sinit“ Init von Sucless

Reale Verwendung von „Sinit“ Init von Sucless

Ich versuche zu setzensinitals initfür Linux (auf einem PC...). Mein Ziel ist im Moment einfach, eine einzelne tty/bashdavon auszuführen. Es ist keine spezielle Einbindung erforderlich, da der Kernel bereits eine root=/dev/sda2für eine erhält cmdline.

Ich habe siniteine Binärdatei als meine /sbin/initund bin mir nicht sicher, was ich als nächstes tun soll. Ich weiß, dass einige Skripte platziert werden müssen, aber ich verstehe nicht, wie sinitich sie ausführen oder mit verknüpfen kann bash.

Antwort1

Die enthaltene Manualpage sinit.8 sowie README sind für mich sehr aufschlussreich. Hier jedoch eine kurze Einführung für Sie, während ich mir den Quellcode ansehe:

  • sinit Haupt-Programmdatei, /sbin/initwird vom Kernel als PID 1 gestartet
  • Es bereitet die Ausgangsumgebung vor, um /bin/rc.initdas Skript als separaten untergeordneten Prozess auszuführen.
  • Es läuft /bin/rc.initals separater Prozess und enthält daher /bin/rc.initBefehle zur Initialisierung des Systems über diesen Punkt hinaus
  • Es tritt in eine Endlosschleife ein, in der es alle zombifizierten Prozesse abfängt und ihre Exit-Codes ins Nirgendwo liest
  • während es sich in einer Endlosschleife befindet, kann es jedoch durch Signale unterbrochen werden. Die Signale, die es zum Abhören definiert, sind SIGUSR1 und SIGINT. SIGUSR1 zwingt init, /bin/rc.shutdownals poweroffSkriptname zu laufen, während SIGINT init zwingt, dasselbe Skript mit rebootNamen auszuführen, um die Betriebsarten innerhalb des Skripts zu unterscheiden. Beachten Sie, dass diese beiden Signale die einzigen sind, auf die init hört, alles,einschließlichSIGKILL und SIGSTOP werden ignoriert. Und nur der Superuser darf Signale an init senden. SIGINT wird vom Kernel generiert, wenn Sie Strg-Alt-Entf drücken, aber nur, wenn Sie dazu aufgefordert werden (es gibt einen speziellen Systemaufruf, den der init-Prozess normalerweise ausführt, um das Senden von SIGINT an cad zu ermöglichen).

Also, daraus, sinitbietet keine:

  • Init-Skripte (Sie müssen Ihre eigenen schreiben oder die in Ihrer Distribution bereitgestellten anpassen)
  • Möglichkeiten der Steuerung (wie Runlevels), nur zwei einfache Befehle

Sinit ist jedoch ein nettes kleines Init, das funktioniert. Ich wette, es funktioniert sowohl auf eingebetteten Systemen als auch auf einfachen Desktop-Systemen ohne den Aufwand moderner Desktop-Umgebungen sehr gut.

Antwort2

Es stellte sich heraus, der Linux-KernelanalysiertDieScharlachrotvon selbst.

Daher kann jedes „Shebanged“-Skript (mit vollständigem Pfad für Binärdateien) dafür verwendet werden sinit.

verwandte Informationen