Ich habe irgendwie eine ungefähre Vorstellung davon, wie der Userspace und das Init-System (sei es das klassische Init-System sysV / upstart / systemd) beim Herunterfahren des Systems funktionieren. (Im Wesentlichen gibt es eine Befehlsfolge von "Stop!", "Bitte jetzt wirklich anhalten", "Ich muss dich umbringen, um anzuhalten" und Warten ... Dinge, die sich abspielen).
Ich bin mir sowieso nicht bewusst, wie das Herunterfahren des Systems im Kernel funktioniert (wo es sicherlich auch viel zu tun gibt)?
Ich habe versucht, in der Kernel-Dokumentation https://www.kernel.org/doc/htmldocs/ nachzuschlagen, und habe sogar mit dem Kumpelsuch-Tool der NSA versucht, herauszufinden, wie es funktioniert.
Auch ich habe auf SE U + L gesucht und nichts gefunden (habe ich es übersehen?)
Die Frage, auch wenn sie möglicherweise etwas herausfordernd ist, verdient in diesem Q & A-Netzwerk eine Antwort, da ich davon ausgehe, dass mehr Leute daran interessiert sind, eine Skizze darüber zu erhalten, was beim Herunterfahren im Linux-Kernel passiert.
Möglicherweise gibt es auch Änderungen, die auf detailliertere Erklärungen verweisen.
Eine Antwort könnte vielleicht beinhalten, welche Systemaufrufe und welche Kernsignale verwendet werden?
https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c scheint die für den Neustart verwendete x86-Datei zu sein (steht schon kurz vor dem Herunterfahren, oder?)
Vielleicht kann das hier gefundene Snippet http://lxr.free-electrons.com/source/kernel/reboot.c#L176 verwendet werden, um eine Erklärung zu geben
176 void kernel_power_off (void) 177 { 178 kernel_shutdown_prepare (SYSTEM_POWER_OFF); 179 if (pm_power_off_prepare) 180 pm_power_off_prepare (); 181 migrate_to_reboot_cpu (); 182 syscore_shutdown (); 183 pr_emerg ("Ausschalten \ n"); 184 kmsg_dump (KMSG_DUMP_POWEROFF); 185 machine_power_off (); 186} 187 EXPORT_SYMBOL_GPL (kernel_power_off);
shutdown(8)
dh eine veraltete Option, -n
die meiner Meinung nach in der alten Unix-Dokumentation verwendet wurde, um " das System selbst herunterzufahren - die Kerneinheit ist ON FIRE! " würde / könnte Bits auf dem Boden verstreut lassen (oder zumindest die Dateisysteme in einem beschädigten Zustand) - man kann sich vorstellen, dass dies für ein System vom Typ Mainframe verwendet wird, bei dem jemand gerade seine Hand in einem Kühlventilator gefangen hat. 🕱