Bil*_*lly 12 linux root-filesystem
我在各种 Linux 系统上看到过/dev/sda1
,根设备不是真实设备节点(例如:)/dev/root
,而是显示为,或者不是真实文件系统,mtab
表示它是一个名为rootfs
(在 中显示为真实文件系统/proc/filesystems
,但是中没有代码<linux-kernel-source-tree>/fs
)。已经制作了各种实用程序来使用某些属性来确定真正的根设备节点(例如 rdev 和 Chromium OS rootdev)。除了在某处读到非常小的嵌入式设备并不总是必须/dev
为它们的根设备提供设备节点之外,我找不到任何合乎逻辑的解释。(这是真的吗,如果是,那是我问题的答案吗?)为什么 mtab 有时会说/dev/root
(我想我可能已经看到它说rootdev
一次)而不是真实设备节点,我怎样才能让它总是说真实设备节点?内核首先root
按照cmdline中的参数挂载root设备,然后init/systemd
按照 重新挂载,对fstab
吗?如果是这样,那么我认为我注意到这init
维护mtab
. 如果我的理论是正确的,我怎样才能init
将真正的根设备节点写入mtab
?/etc/mtab
实际上是到 的符号链接/proc/mounts
,这意味着mtab
由内核维护。那么,如何配置/修补内核,而不是说的根设备节点的路径/dev/root
,已经mtab
包含了真实的设备节点?
这通常是使用 initramfs 的产物。
来自内核文档(https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt)
什么是rootfs?
Rootfs 是 ramfs(或 tmpfs,如果已启用)的一个特殊实例,它始终存在于 2.6 系统中。您无法卸载 rootfs 的原因与您无法终止 init 进程的原因大致相同;与使用特殊代码来检查和处理空列表相比,内核确保某些列表不会变空更小更简单。
大多数系统只是在 rootfs 上挂载另一个文件系统并忽略它。一个空的 ramfs 实例占用的空间很小。
这rootfs
就是为 initramfs 创建的根文件系统,不能卸载。
关于/dev/root
,我不太确定,但如果我没记错的话/dev/root
是在使用 initrd(与 initramfs 不同)时创建的。
归档时间: |
|
查看次数: |
15955 次 |
最近记录: |