我正在为 aarch64 开发一个类似 Linux 的操作系统,基于 Raspberry Pi 3(型号 B+)的 5.6.4-v8+ 内核。
内核配置选项包括:
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
可以验证系统是否已有效安装。
dmesg | grep devtmpfs
[0.071] devtmpfs: initialized
[2,653] devtmpfs: mounted
并且还可以确认系统已安装在/dev:
df -h
Filesystem Size Used Avail Used% Mounted on
devtmpfs 424M 0 424M 0% /dev.
另一方面,在文件中/etc/fstab我有以下几行:
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
我已经做了删除这一行的测试,结果是开发者文件系统安装也没有任何问题/dev。所以看来没有必要要求通过挂载文件系统系统表,因为看起来内核会处理它。
真的有必要包括开发者文件系统挂载到 fstab 中?
谢谢你!
答案1
事实上,在某些情况下内核确实会自动挂载devtmpfs
。/dev
如果在构建内核时CONFIG_DEVTMPFS_MOUNT
设置为,则生成的内核将在挂载根文件系统后自动尝试挂载- 除非内核使用 initramfs 作为初始根文件系统。y
devtmpfs
/dev
这完全是可选功能。你已经戴上了它,而文森特在他们的测试中似乎已经把它关掉了。 (或者 Vincent 使用的是 initramfs。)
看drivers/base/Kconfig
更多细节。
答案2
据我所知,内核不会自动挂载devtmpfs。它必须从用户空间完成,要么“手动”(启动脚本之一包含类似:)mount -t devtmpfs none /dev
,要么通过 fstab。
在我的自定义 Linux 系统(raspberry Zero/4 和 86_64)上,我不依赖基于 /etc/fstab 的安装机制。如果我mount -t devtmpfs none /dev
从 /etc/profile 中删除该命令,我的 /dev 目录仍为空。
因此,回答您的问题:您不必在 fstab 中包含 devtmpfs 挂载,但您(用户,而不是内核)必须自己挂载它。