Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

init process play a role in the booting of Linux

+3
−1

How does the init process play a role in the booting of Linux?

History
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

2 answers

+2
−0

Init is starting all other processes. It's first process started by kernel. After that init uses init scripts to start all other needed functionality to boot up system, like mounting volumes, daemons.

It also plays a role in keeping services alive, and restarting them. (just like systemd does).

History
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+0
−3

Deine Frage ist eher unspezifisch. Deswegen ist die Antwort auch unspezifisch. Vielleicht müsstest du eine genauere Frage stellen?

Eigenschaften des Initprozess:

Nachdem der Kernel gestartet ist startet einen einzigen Benutzerprozess. Dieser Prozess ist der Initprozess. Dessen Aufgabe ist es andere Prozesse zu starten, verwaiste Prozesse aufzunehmen und bis am Schluss zu laufen. Der Initprozess hat folgende Einzigartigkeiten:

  • Es ist der einzige Prozess der nicht als Kindsprozess eines bereits laufenden Prozesses erstellt wird.
  • Er kann nur Signale empfangen welcher er Verarbeiten kann. Damit kann er auch SIGKILL und SIGSTOP ignorieren, was ansonsten kein anderer Prozess kann.
  • Endet der Initprozess stürzt der Kernel ab (Kernelpanik).
  • Alle verwaisten Prozesse werden ein Kindsprozess von dem Initprozess.

(In diesem Kontext meint Prozess immer ein Benutzerprozess und nicht ein Kernelprozess).

Was Initprozesse normalerweise tun.

Normalerweise verwendet man etwas wie SystemV, SysVinit, BusyBox oder systemd. Diese starten vordefinierte Prozesse (Dienste). Diese Prozesse beinhalten meist Dinge wie getty, X11, DHCP und viele mehr. Wie die Reihenfolge und der Zeitpunkt definiert wird ist unterschiedlich.

Soweit ich weiss, verwenden SystemV, SysVinit und BusyBox die Datei /etc/inittab. In dieser Datei ist definiert wann, welches Programm gestartet werden soll.

Systemd prüft den Ordner /usr/lib/systemd/system/ und startet die Dienste anhand den Dateien die darin zu finden sind.

Teste /bin/bash als Initprozess

Zu Versuchszwecken könntest du Linux starten mit /bin/bash als Initprozess. Das ist jedoch nicht Praxistauglich für einen regulären Betrieb. Es ist nur ein Versuch um zu lernen.

Das kann auf diese Weise erreicht werden:

  • Starte eine VM (besser) oder PC mit Linux und GRUB 2 installiert.
  • Warte bis das das GRUB 2 Menü erscheint. Drücke die Linke Shifttaste wenn du normalerweise kein GRUB 2 Menü siehst.
  • Drücke die Pfeiltasten um das Timeout zu stoppen.
  • Markiere das Linux was du starten willst und drücke e.
  • Gehe zur Line die mit linux beginnt und füge danach ein init=/bin/bash hinzu.
  • Drücke ctrl-x um Linux mit /bin/bash als init-Prozess zu starten.

Linux selber wird mehr oder weniger normal laufen. Das wird allerdings weder grafische Oberfläche, DHCP noch mehrere virtuelle Terminals (Welche du mit ctrl-alt-F? erreichst) starten. Du brauchst kein Passwort sondern hast sofort Superuserrechte.

Jetzt kannst du folgende Dinge ausprobieren: Was zeigt top, lsblk, mount, w, ip a s ... an? Was passiert wenn du die Shell beendest? ..... Es könnte sein das du erst PATH setzen musst, mit export PATH="/bin/:/sbin/:/usr/sbin/:/usr/bin", bevor die Befehle funktionieren.

Nach einem Neustart sollte Linux wieder normal starten. Ausser du hast etwas relevantes überschrieben.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment thread

This is an English language web site. A whole answer in German is not appropriate here. (7 comments)

Sign up to answer this question »