【发布时间】:2015-12-16 08:14:39
【问题描述】:
我正在研究 systemd。
我以为 systemd 会在内核初始化后的引导过程中挂载 sysfs(/sys)、procfs(/proc)、devtmpfs(/dev)。
但是我的 systemd 调试日志显示 systemd 没有挂载这样的文件系统。(它只挂载 cgroups、securityfs 等...)
此类文件系统何时挂载,由谁挂载?内核会挂载 sys、proc、dev 吗?
【问题讨论】:
我正在研究 systemd。
我以为 systemd 会在内核初始化后的引导过程中挂载 sysfs(/sys)、procfs(/proc)、devtmpfs(/dev)。
但是我的 systemd 调试日志显示 systemd 没有挂载这样的文件系统。(它只挂载 cgroups、securityfs 等...)
此类文件系统何时挂载,由谁挂载?内核会挂载 sys、proc、dev 吗?
【问题讨论】:
是的,它们是由 systemd PID1 挂载的,请参阅 systemd 源中的 src/core/mount-setup.c。
【讨论】:
第一点:Linux 内核无法在用户级别挂载伪文件系统。这也是为什么,例如,dev/ 中的所有条目必须由用户级对应项创建(proc/ 和 sys/ 不会发生这种情况,因为内核能够在已挂载的文件系统上创建条目)。
在 Linux 发行版中,伪文件系统的挂载通常由 udev 在用户级别完成。当然,内核必须已配置为支持这些文件系统(否则,将无法挂载)。
【讨论】: