为什么 rootfs 被挂载多次?

Xiè*_*léi 5 debian mount fstab

在这里您可以看到两个设备以 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
...
Run Code Online (Sandbox Code Playgroud)

但是,我没有在 /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
...
Run Code Online (Sandbox Code Playgroud)

我想在“/dev/xxx”而不是“/dev/disk/by-uuid/...”中查看挂载信息。虽然通过 UUID 挂载有很多优点,但我更喜欢旧的风格......也奇怪为什么有两个 rootfs 挂载?

psu*_*usi 7

这是 debian initramfs 运行方式的副作用。最初,内核为根创建一个 tmpfs,并在那里解压 initramfs,它是一个压缩的 cpio 存档。initramfs 中的程序和脚本安装真正的根设备,然后chroot在那里。只需忽略将文件系统列为 rootfs 的第一个条目,因为那只是 initramfs。另一个是您真正的根文件系统。

由于 /etc/fstab 位于您的根 fs 中,因此无法参考挂载您的根 fs,因此这是通过引导加载程序传递的内核命令行参数来完成的。如果您使用 grub,它默认使用 UUID 以避免在驱动器碰巧以不同顺序枚举时出现问题。您可以编辑/etc/default/grub以更改此行为,但这不是一个好主意。