Grub2

更換主機板後如何使用 LUKS 加密的 LVM 分區恢復 grub?

  • September 13, 2020

我在帶有 EFI bios 的聯想 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
  1. 我安裝了分區:
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
  1. 安裝和更新 grub:
chroot /mnt
grub-install /dev/nvme0n1 
update-grub

成功安裝 grub 後,打開筆記型電腦後,我看到黑屏和 LUKS 密碼,當我輸入正確密碼時,我在 Grub 菜單中只看到 Windows 啟動管理器,而不是 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.cfg

我的fstab文件

請問有什麼方法可以為 Kali Linux 添加引導項?請問在grub螢幕之前我用LUKS密碼請求跳過黑屏的方法是什麼?(在更換主機板之前,我直接看到 grub 螢幕)。

閱讀您的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_headerand /etc/grub.d/05_debian_theme,找出它們提供的配置選項。然後您可以複製適當的文件並使用適當的選項/etc/default/grub使 GRUB 從另一個位置找到所需的字型和圖像,因此 GRUB 不需要讀取加密磁碟來顯示菜單。

看起來您可以將字型檔從復製/usr/share/grub/unicode.pf2到 eg/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命令。

引用自:https://unix.stackexchange.com/questions/517285