在 /etc/fstab 中列出 rootfs 的目的是什么?

mar*_*v81 8 ubuntu fstab root-filesystem buildroot

在 BuildRoot 2015.08.1 /etc/fstab 中包含以下行。

/dev/root / ext2 rw,noauto 0 1
Run Code Online (Sandbox Code Playgroud)

在我加密的 Ubuntu 笔记本电脑上,/etc/fstab 包含以下行。

/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
Run Code Online (Sandbox Code Playgroud)

问题:在 /etc/fstab 中列出 rootfs 的目的是什么?

不是答案:

  • 内核从 root= 参数或在 initramfs 中以只读方式挂载 rootfs。所以 /etc/fstab 无助于以只读方式挂载 rootfs。

  • init 进程重新挂载 rootfs 读写。这是在 BuildRoot 中的 /etc/inittab 和 Ubuntu 中的 /etc/rcS.d/S06checkroot.sh 中完成的。所以 /etc/fstab 无助于重新挂载 rootfs 读写。

背景:我正在构建一个带有花哨的 initramfs 的嵌入式系统。它在网络上和本地寻找不同的 rootfs 候选者,直到找到合适的候选者。它负责检查文件系统并在调用 switch_root 之前以读写方式重新挂载它。

额外问题:不在 /etc/fstab 中列出 rootfs 会有什么影响?

如果没有就太棒了。我不想为每个 rootfs 维护不同的 /etc/fstab。但是,为什么 BuildRoot 和 Ubuntu 会保留它呢?

剧透:我试过了,它似乎有效,但我对隐藏的后果持谨慎态度。

psu*_*usi 4

fstab 中的选项应该用于重新安装它,应用指定的选项(可能不包括 rw 访问)。硬编码为在不咨询 fstab 的情况下使用 rw 重新挂载 root fs 的引导脚本已损坏。因此,将其排除在 fstab 之外的唯一结果是它不会被重新安装,并且将保持 ro 状态,不应用其他选项。