更换主板后如何用LUKS加密的LVM分区恢复grub?

更换主板后如何用LUKS加密的LVM分区恢复grub?

我在带有 EFI BIOS 的 Lenovo X280 笔记本上安装了双启动 Windows 10 和 Kali Linux x64(基于 Debian 9 x64 的 Linux 发行版)。 Windows 10 使用带有密码的 BitLocker(不是 TPM)。 Linux 使用 LUKS 加密。我单独创建了 Kali /boot 分区。我不得不更换正在使用的主板。此后仅 Windows 启动。格鲁布不见了。所以我尝试从 Live 系统(从 USB 闪存驱动器)重新安装 grub:

  1. 我手动加密了 LUKS 分区:
    cryptsetup luksOpen /dev/nvme0n1p4 disk
    
  2. 我安装了分区:
    mount /dev/mapper/sk1-system /mnt
    mount /dev/nvme0n1p5 /mnt/boot
    mount /dev/nvme0n1p1 /mnt/boot/efi
    for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done
    
  3. 安装并更新 grub:
    chroot /mnt
    grub-install /dev/nvme0n1 
    update-grub
    

grub 安装成功后,但在笔记本开机后,我看到黑屏并显示 LUKS 密码,当我输入正确的密码时,我在 Grub 菜单中只看到 Windows Boot Manager,而不是 Kali Linux。

我的驱动器是这样分区的:

nvme0n1:
nvme0n1p1: EFI
p2: MS Reserved Partition
p3: Windows 10 (BitLocker)
p4: crypto_LUKS partition it contains:
LVM:
/dev/mapper/sk1-system
/dev/mapper/sk1-swap
p5: Kali /boot partition (ext4)
p6: DATA (NTFS)
p7: WinRE_DRV

我的grub配置文件

我的系统表文件

请问如何为 Kali Linux 添加启动项?我该如何在 grub 屏幕之前跳过带有 LUKS 密码请求的黑屏? (在更换主板之前,我直接看到 grub 屏幕)。

答案1

读取您的grub.cfg文件,第一个 LUKS 密码请求的直接原因部分是:

cryptomount -u 99cc765bd11945e7a922436c76cfd505
set root='lvmid/vlNbhc-Fecj-bwew-vg7J-nnuy-3aCy-zl395m/Co88vm-3aMx-939B-ehD7-ijFW-Hw7p-z3gWUW'

因此,看起来update-grub正准备从基于 LVM 的文件系统读取某些内容。那可能是什么?

font="/usr/share/grub/unicode.pf2"

哦,它想直接从/usr/share/grub 读取字体文件。

根据评论,这部分来自/etc/grub.d/00_header文件。如果 GRUB 内部功能测试变量feature_default_font_path设置为y,则将跳过整个块,避免此处出现 LUKS 密码提示。

另一个类似的块紧接在### BEGIN /etc/grub.d/05_debian_theme ###评论之后:它还确保将安装加密磁盘,以便......

if background_image /usr/share/desktop-base/kali-theme/grub/grub-16x9.png; then
  set color_normal=white/black
  set color_highlight=black/white

...从 加载 GRUB 菜单的背景图像/usr/share/desktop-base/

其余的块(以及 中的相应配置片段文件/etc/grub.d/)似乎不依赖于对加密磁盘的访问。

因此,要摆脱 GRUB 菜单之前额外的 LUKS 提示,您需要禁用图形菜单并退回到 GRUB 的更简单的外观,或者查看/etc/grub.d/00_header/etc/grub.d/05_debian_theme,找出它们提供的配置选项。然后,您可以复制适当的文件并使用适当的选项,/etc/default/grub使 GRUB 从另一个位置找到必要的字体和图像,这样 GRUB 就不需要仅仅为了显示菜单而读取加密磁盘。

看起来您可以将字体文件从/usr/share/grub/unicode.pf2复制到 例如/boot/grub/unicode.pf2,然后设置GRUB_FONT=/boot/grub/unicode.pf2/etc/default/grub.

同样,您可以将背景文件从/usr/share/desktop-base/kali-theme/grub/grub-16x9.png复制到/boot/grub/grub-16x9.png,然后设置GRUB_BACKGROUND=/boot/grub/grub-16x9.png/etc/default/grub

完成这些配置后,您可以运行update-grub并验证重新生成的 GRUB 配置现在应该更加简单,并且不再包含任何cryptmount命令。

相关内容