我有 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 / ext4 errors=remount-ro 0 1\n/swapfile none swap sw 0 0\nUUID=6225-46A9 /boot/efi vfat defaults 0 1\n
Run Code Online (Sandbox Code Playgroud)\n/etc/crypttab
# <target name> <source device> <key file> <options>\nnvme0n1p2_crypt UUID=88251fdb-112a-4924-a9c6-9892f17322e8 /etc/luks/boot_os.keyfile luks,discard\n
Run Code Online (Sandbox Code Playgroud)\n/etc/cryptsetup-initramfs/conf-hook
KEYFILE_PATTERN=/etc/luks/*.keyfile\n
Run Code Online (Sandbox Code Playgroud)\nlsblk -e7 -f
NAME FSTYPE LABEL UUID MOUNTPOINT\nsda \n\xe2\x94\x9c\xe2\x94\x80sda1 vfat SYSTEM E463-AB68 \n\xe2\x94\x9c\xe2\x94\x80sda2 \n\xe2\x94\x9c\xe2\x94\x80sda3 \n\xe2\x94\x94\xe2\x94\x80sda4 ntfs WinRE_DRV B27667B5766778CD \nnvme0n1 \n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1 vfat 6225-46A9 /boot/efi\n\xe2\x94\x94\xe2\x94\x80nvme0n1p2 crypto_LUKS 88251fdb-112a-4924-a9c6-9892f17322e8 \n \xe2\x94\x94\xe2\x94\x80nvme0n1p2_crypt ext4 ee03828b-76bc-4143-a2fb-f86719a90fca /\n
Run Code Online (Sandbox Code Playgroud)\n另外,我现在不关心双启动,所以我禁用了/etc/default/grub
.