UEFI Grub 无法启动加密的 Ubuntu 21.04 系统:找不到命令“cryptomount”

UEFI Grub 无法启动加密的 Ubuntu 21.04 系统:找不到命令“cryptomount”

我正在手动(即通过自定义脚本)安装 Ubuntu 21.04 系统。

我的 GPT 磁盘有两个分区。一个是 EFI 系统分区,另一个是 LUKS(版本 1)加密的 BTRFS 分区。

在启动时,grub闪烁以下错误消息,然后退出grub提示。

error: file `/boot' not found.
error: no such device: /.disk/info.
error: no such device: /.disk/mini-info.
error: can't find command `cryptomount'.

我的问题是:如何提供/激活cryptomountGrub 内部的命令?

(如果我在提示符help下输入,则不会列出grub该命令。)cryptomount

有趣的是,如果我添加ef02BIOS 类型的启动分区,并安装 BIOS 版本的 Grub,并以 BIOS 模式启动系统,则启动将成功。但是,我希望磁盘在 UEFI 系统上启动。

背景信息:

我查看了以下链接中的说明,但我发现无需执行任何其他操作即可启用该cryptomount命令。我尝试添加insmod cryptomount/boot/efi/EFI/BOOT/grub.cfg,但没有成功。

https://cryptsetup-team.pages.debian.net/cryptsetup/encrypted-boot.html

之前,我手动安装了带有纯文本/boot分区和加密/分区的 Ubuntu,一切正常。所以新元素是我试图将目录放在/boot加密/分区上。我还在/boot加密分区上安装了 Void Linux,一切正常。

/boot/efi/EFI/BOOT/grub.cfg是:

cryptomount -u e5f6f8f5dc3944cbb6d8d99b1f17b343
search.fs_uuid 5e42bb87-3342-48b6-aff5-f2519063f9b9 root 
cryptouuid/e5f6f8f5dc3944cbb6d8d99b1f17b343 
set prefix=($root)'/@_2107_hirsute/boot/grub'
configfile $prefix/grub.cfg

grub通过运行以下命令进行安装:

opts=''
opts="$opts  --force"
opts="$opts  --no-floppy"
opts="$opts  --recheck"
opts="$opts  --removable"

opts="$opts  --target=x86_64-efi"
opts="$opts  --efi-directory=/boot/efi"
opts="$opts  --bootloader-id=Ubuntu"

chroot  /mnt  grub-install  $opts

答案1

看来,在安装 chroot 环境中按以下顺序运行以下命令(以 root 身份)将生成 Grub 文件,以便 Grub从加密分区上的目录中/boot/efi/EFI/BOOT/读取内核和文件。initrd.img/boot/

#  echo  'GRUB_ENABLE_CRYPTODISK=y'  >>  /etc/default/grub
#  apt-get  install  -y  --reinstall  grub-efi-amd64-signed
#  update-initramfs  -c  -k all
#  grub-install  /dev/vda
#  update-grub

来源: https://mutschler.eu/linux/install-guides/ubuntu-btrfs/#install-the-efi-bootloader

以前,我运行了上述大部分或全部命令,但顺序不同。

之后文件看起来如下:

# ls -l /boot/efi/EFI/BOOT
total 1680
-rwx------ 1 root root 1718144 Jul 17 16:08 BOOTX64.EFI
-rwx------ 1 root root     224 Jul 17 06:13 grub.cfg

# cat /boot/efi/EFI/BOOT/grub.cfg 
cryptomount -u a771eeddca6942c0be0ac88852a9b45b
search.fs_uuid ae60b399-84bd-4a08-b0aa-7f33a847b873 root 
cryptouuid/a771eeddca6942c0be0ac88852a9b45b 
set prefix=($root)'/@_2107_hirsute/boot/grub'
configfile $prefix/grub.cfg

根据您对磁盘的分区和安装方式,您的文件可能看起来有所不同。

按上述顺序运行上述命令之前,该BOOTX64.EFI文件大小为 1.4M,而现在为 1.7M。

我不知道有什么方法(除了尝试重新启动)来查看内部BOOTX64.EFI并验证它是否确实包含该cryptodisk模块。

相关内容