![为什么rootfs会被多次挂载?](https://linux22.com/image/24046/%E4%B8%BA%E4%BB%80%E4%B9%88rootfs%E4%BC%9A%E8%A2%AB%E5%A4%9A%E6%AC%A1%E6%8C%82%E8%BD%BD%EF%BC%9F.png)
在这里您可以看到两个设备已作为 root 挂载:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 29221788 18995764 8761244 69% /
udev 10240 0 10240 0% /dev
tmpfs 203260 2192 201068 2% /run
/dev/disk/by-uuid/1d8879f2-9c47-4a72-9ef4-a6ecdd7a8735 29221788 18995764 8761244 69% /
tmpfs 5120 0 5120 0% /run/lock
tmpfs 406516 376 406140 1% /tmp
tmpfs 406516 72 406444 1% /run/shm
/dev/sda2 29225884 15019636 12741264 55% /home
/dev/sda3 226881528 191247596 24275680 89% /opt
...
但是,我没有在 /etc/fstab 中指定 UUID:
proc /proc proc defaults 0 0
LABEL=debian / ext4 errors=remount-ro 0 1
LABEL=istore /mnt/istore ext4 defaults 0 0
LABEL=home /home ext4 defaults 0 2
...
我想在“/dev/xxx”而不是“/dev/disk/by-uuid/...”中查看安装信息。虽然通过UUID挂载有很多优点,但我更喜欢旧的风格......也很奇怪为什么有两个rootfs挂载?
答案1
这是 debian initramfs 运行方式的副作用。最初,内核为根目录创建一个 tmpfs,并在那里解压 initramfs,这是一个压缩的 cpio 存档。 initramfs 中的程序和脚本挂载真正的根设备,然后就chroot
在那里。只需忽略将文件系统列为 rootfs 的第一个条目,因为这只是 initramfs。另一种才是真正的根文件系统。
由于 /etc/fstab 位于您的根文件系统中,因此无法参考它来挂载您的根文件系统,因此这是通过引导加载程序传递的内核命令行参数来完成的。如果您使用 grub,它默认使用 UUID 以避免驱动器恰好以不同顺序枚举时出现问题。您可以进行编辑/etc/default/grub
来更改此行为,但这不是一个好主意。