linux 如何知道要以 root 身份挂载哪个 btrfs subvol?

linux 如何知道要以 root 身份挂载哪个 btrfs subvol?

我有一个 btrfs 文件系统,如下所示:

root_subvol        # subvolid=5 - the root subvolume for the btrfs filesystem
  - snapshots/     # Folder that contains btrfs snapshots of the subvol_root that I take before I do system updates
  - subvol_root/   # A btrfs subvolume. Gets mounted as /. Contains /etc, /home, /proc, ...

现在,subvol_root在启动时安装为我的/. Linux 如何知道这是要在启动时挂载的子卷/

当然,我的 subvol_root/etc/fstab 有以下条目:

UUID=84ee... /  btrfs  subvol=subvol_root,...

但是不同的子卷可能有自己的版本,/etc/fstab它会列出要挂载的不同子卷/,因此这会是不明确的。

它是否查看/etc/fstab默认的 btrfs 子卷或其他内容?

答案1

检查您的内核启动参数,例如使用cat /proc/cmdline.

您可能会发现有一个root=指定文件系统的选项(可能通过标签或 UUID),以及一个rootflags=包含subvol=subvol_root.这些选项将包含在引导加载程序配置中,因为这决定了正常的内核命令行。

或者,引导过程可以依赖于/etc/fstab已包含在 initramfs 中的副本。

不同的发行版可能会做不同的事情,但根据我的经验,根文件系统的位置往往由内核启动参数指定,以便在您对硬件配置进行重大更改时可以在启动时轻松修改它。

如果根文件系统仅在 initramfs 中指定,您可能会发现自己处于类似于 Catch-22 的情况:“在修改我的 initramfs 之前,我无法访问根文件系统,但我无法获得修改我的 initramfs 所需的工具。 initramfs 直到我获得根文件系统的访问权限!”

相关内容