systemd-gpt-auto-generator 无法挂载 EFI 系统分区

systemd-gpt-auto-generator 无法挂载 EFI 系统分区

根据文档,应该systemd-gpt-auto-generator会自动找到 EFI 系统分区并生成一个挂载单元来将其挂载在 上/efi。然而,尽管满足了所有要求,但这似乎在我的系统上不起作用。我有一个 NVMe 驱动器,,/dev/nvme0n1EFI 系统分区是/dev/nvme0n1p1,我正在使用 systemd-boot 来启动系统

  • 有一个 GPT 分区表
  • /dev/nvme0n1p1具有正确的 EFI 系统分区的分区 GUID 代码,C12A7328-F81F-11D2-BA4B-00A0C93EC93B并且我可以从中正常启动
  • PARTUUID 为blkid /dev/nvme0n1p16ebb8123-f305-404b-b5a3-65f46c7d7076这与 的内容相匹配/sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
  • 我没有以传统 (BIOS) 模式启动
  • 该目录/efi存在于根文件系统上,并且为空
  • 中未配置此分区的挂载点/etc/fstab。也没有.mount相应的单元
  • 没有扩展引导加载程序分区 (XBOOTLDR)
  • 未使用 systemd.gpt_auto 或 rd.systemd.gpt_auto 内核命令行参数禁用生成器

我可以创建一个条目/etc/fstab并完成它,但我更想了解它为什么不起作用。有没有关于如何调试它的指示?

我尝试手动运行生成器:

mkdir /tmp/{a,b,c}
SYSTEMD_LOG_LEVEL=debug \
  /usr/lib/systemd/system-generators/systemd-gpt-auto-generator /tmp/{a,b,c}

但输出不包含任何有用的信息:

Found container virtualization none.
Disabling root partition auto-detection, root= is defined.
dm-3: Not a partitioned device, ignoring: No such file or directory

答案1

我同意你的观点,最好清空旧的 fstab 文件并使用 systemd-gpt-auto-generator,必要时使用单元文件。

一些想法:

  • fsck.vfat 丢失?(即:请求检查 /dev/sdb1,但 fsck.vfat 不存在。)
  • efi.mount 已存在(即:无法创建单元文件 efi.mount:文件存在)
  • 您的“/sysroot/”efi 文件夹不是空的并且 /efi/.keep 文件不存在(即:)"/efi" already populated, ignoring.

你可以检查一下

#search for dead unit with --all
systemctl list-units --all  --type=mount,automount 
  # efi.automount loaded    inactive dead    EFI System Partition Automount
 

mkdir /tmp/foo
SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/system-generators/systemd-gpt-auto-generator /tmp/foo /tmp/foo /tmp/foo

systemctl status efi.automount
systemctl restart efi.automount

man systemd-gpt-auto-generator   
#not neeeded
systemctl edit efi.automount

相关内容