对于系统关闭时用户空间和init-system(经典的init sysV / upstart / systemd)如何工作,我有个大概的想法。(本质上是“ Stop!”,“请立即停止”,“我需要杀死您以停止的过程”并等待...的顺序。)
无论如何,我非常不知道内核中的系统关闭是如何工作的(肯定还有很多事情要做)?
我尝试查看内核文档https://www.kernel.org/doc/htmldocs/,甚至使用NSA的pal搜索工具为我提供了寻找其工作原理的开端。
我还搜索了SE U + L,却一无所获(我是否忽略了它?)
无论如何,尽管这个问题可能有点挑战性,但它会在这个问答网络中得到一个答案,因为我认为会有更多的人有兴趣了解关闭时Linux内核中发生的情况。
可能还会进行更改,以链接到一些更详细的说明。
答案可能包括使用哪些系统调用和哪些内核信号?
https://github.com/torvalds/linux/blob/b3a3a9c441e2c8f6b6760de9331023a7906a4ac6/arch/x86/kernel/reboot.c 似乎是与重启相关的x86使用文件(已经接近关机,是吗?)
也许 可以在http://lxr.free-electrons.com/source/kernel/reboot.c#L176此处找到的代码片段进行解释
176 void kernel_power_off(void) 177 { (178)第178章 第179章 180 pm_power_off_prepare(); 第181回 第182回 183 pr_emerg(“ Power down \ n”); 184 kmsg_dump(KMSG_DUMP_POWEROFF); 第185章 186} 第187章(二更)
shutdown(8)
即已弃用的 选项-n
,我认为在旧的unix文档中,该选项用于读取“ 自行关闭系统-核心单元已着火! ”,这实际上是一个混乱的系统kill-switch,会/可能会使零碎散布在地板上(或至少是处于损坏状态的文件系统)-有人认为这将用于某人刚抓住冷却风扇的大型机系统。🕱–