根据文档,应该systemd-gpt-auto-generator
会自动找到 EFI 系统分区并生成一个挂载单元来将其挂载在 上/efi
。然而,尽管满足了所有要求,但这似乎在我的系统上不起作用。我有一个 NVMe 驱动器,,/dev/nvme0n1
EFI 系统分区是/dev/nvme0n1p1
,我正在使用 systemd-boot 来启动系统
- 有一个 GPT 分区表
/dev/nvme0n1p1
具有正确的 EFI 系统分区的分区 GUID 代码,C12A7328-F81F-11D2-BA4B-00A0C93EC93B
并且我可以从中正常启动- PARTUUID 为
blkid /dev/nvme0n1p1
,6ebb8123-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