我有 Ubuntu 18.04,带有两个分区的全盘加密:EFI ESP 和 LUKS1 加密根分区(没有单独的 /boot)。安装 grub 并重新启动后,它只显示正常grub >
提示,而不是询问 LUKS 密码并启动 Ubuntu。内核使用 LUKS 密钥文件解锁根文件系统/etc/luks/boot_os.keyfile
.
Grub 配置文件中/boot/efi/EFI/ubuntu/grub.cfg
不包含cryptomount
命令,因此它甚至不会尝试解锁根分区:
search.fs_uuid ee03828b-76bc-4143-a2fb-f86719a90fca root cryptouuid/88251fdb112a4924a9c69892f17322e8 \nset prefix=($root)'/boot/grub'\nconfigfile $prefix/grub.cfg\n
Run Code Online (Sandbox Code Playgroud)\n如果我手动编辑此文件添加:
\ncryptomount -u 88251fdb112a4924a9c69892f17322e8\n
Run Code Online (Sandbox Code Playgroud)\n作为第一行,grub 要求输入密码,系统启动正常。
\n我如何说服grub-install
将 cryptomount 包含在grub.cfg
ESP 内部,以便系统升级不会破坏我的系统?
/etc/default/grub
GRUB_DEFAULT=0\nGRUB_TIMEOUT_STYLE=hidden\nGRUB_TIMEOUT=0\nGRUB_HIDDEN_TIMEOUT=1\nGRUB_HIDDEN_TIMEOUT_QUIET=true\nGRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`\nGRUB_CMDLINE_LINUX_DEFAULT="quiet splash"\nGRUB_CMDLINE_LINUX=""\n\nGRUB_DISABLE_OS_PROBER=true\n\nGRUB_ENABLE_CRYPTODISK=y\nGRUB_PRELOAD_MODULES="luks cryptodisk"\n
Run Code Online (Sandbox Code Playgroud)\n/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>\n/dev/mapper/nvme0n1p2_crypt …
Run Code Online (Sandbox Code Playgroud)