如果根文件系统被卸载,那么如何init
访问并运行随后发生的最后几个步骤?
答案1
PID 1 可以从基于 RAM 的文件系统运行。例如 systemd + dracut 可以pivot_root
变成临时文件系统关机期间。 dracut-shutdown.service(8)有一些关于此的更多信息。
否则,您将剩余的文件系统重新挂载为只读。重新以只读方式挂载后,文件系统是干净的。它在磁盘上是一致的;无需维修操作; RAM 中没有缓存或排队的剩余写入。
umount /
甚至被解释为相同mount / -o remount,ro
。虽然这不会发生在其他类 Unix 系统上;这是 Linux 特有的怪癖:-)。
答案2
init
是内核加载后执行的第一个进程,也是最后一个“关灯”的进程——形象地说。
内核不需要/
安装即可运行init
,因为它可以完全从内存运行。
“Live”发行版几乎完全从内存中运行,甚至有一些发行版的 cd/dvd/usbstick/软盘您甚至可以在系统加载到内存后从电脑中取出。
现在回答问题标题中的问题:是的,它在大多数发行版上都已卸载 - 其他重新安装为/
只读。
更多信息可以在您的系统(如果系统正在使用 sysvinit 运行)中找到/etc/inittab
,例如http://wiki.linuxquestions.org/wiki/Run_Levels
在 systemd 上,您可以查看使用 评估哪些对象systemctl list-dependencies --after systemd-halt.service
。