Grub 沒有使用 LUKS/LVM 啟動 Ubuntu
我已經在 LUKS/LVM 上安裝了 Ubuntu 20.04,但不幸的是在啟動時我只得到一個**grub>**提示。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 731M 0 part /boot └─sda5 8:5 0 465G 0 part └─sda5_crypt 253:0 0 465G 0 crypt ├─ubuntu--vg-home 253:1 0 356G 0 lvm /home └─ubuntu--vg-root 253:2 0 109G 0 lvm /
將 grub 安裝到 MBR 並生成 grub.cfg(參見1、2)
# grub-install /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg
Grub.cfg 似乎有正確的 LVM 根卷 UUID:
# cat /boot/grub/grub.cfg .... set root='lvmid/MGzfKv-uhLG-wmry-Yqb2-D09r-OfKh-SDs3eb/lZDSre-QLBU-9OvM-aVrN-kR6V-DFXg-lBhRn7' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint='lvmid/MGzfKv-uhLG-wmry-Yqb2-D09r-OfKh-SDs3eb/lZDSre-QLBU-9OvM-aVrN-kR6V-DFXg-lBhRn7' 617f84d9-1433-4620-a0c0-833fb8ce1e2f else search --no-floppy --fs-uuid --set=root 617f84d9-1433-4620-a0c0-833fb8ce1e2f fi .... # blkid /dev/sda5: UUID="3fbd1007-9f85-4b85-bdf2-ae55e0244bb6" TYPE="crypto_LUKS" PARTUUID="005a4774-05" /dev/sda1: UUID="27ca1bd4-7811-4c3a-b319-2b8dd1ce57cd" TYPE="ext4" PARTUUID="005a4774-01" /dev/mapper/sda5_crypt: UUID="UoR32h-GB2N-GYf4-XBEP-P0rd-RrZ6-f6PK6d" TYPE="LVM2_member" /dev/mapper/ubuntu--vg-home: UUID="0d81e74f-fe7b-4ef4-ba61-6d664d54d77c" TYPE="ext4" /dev/mapper/ubuntu--vg-root: UUID="617f84d9-1433-4620-a0c0-833fb8ce1e2f" TYPE="ext4" # ls -l /dev/disk/by-id rwxrwxrwx 1 root root 10 Oct 19 21:45 dm-name-sda5_crypt -> ../../dm-0 lrwxrwxrwx 1 root root 10 Oct 19 21:45 dm-name-ubuntu--vg-home -> ../../dm-1 lrwxrwxrwx 1 root root 10 Oct 19 21:45 dm-name-ubuntu--vg-root -> ../../dm-2 lrwxrwxrwx 1 root root 10 Oct 19 21:45 dm-uuid-CRYPT-LUKS2-3fbd10079f854b85bdf2ae55e0244bb6-sda5_crypt -> ../../dm-0 lrwxrwxrwx 1 root root 10 Oct 19 21:45 dm-uuid-LVM-MGzfKvuhLGwmryYqb2D09rOfKhSDs3ebHvMqdeqlhxMFcNl0XqdTRiC9sdWUmnVU -> ../../dm-1 lrwxrwxrwx 1 root root 10 Oct 19 21:45 dm-uuid-LVM-MGzfKvuhLGwmryYqb2D09rOfKhSDs3eblZDSreQLBU9OvMaVrNkR6VDFXglBhRn7 -> ../../dm-2 lrwxrwxrwx 1 root root 10 Oct 19 21:45 lvm-pv-uuid-UoR32h-GB2N-GYf4-XBEP-P0rd-RrZ6-f6PK6d -> ../../dm-0
將 sda5 UUID 和卷 UUID 添加到 crypttab 和 fstab(參見1):
# cat /etc/crypttab sda5_crypt UUID=3fbd1007-9f85-4b85-bdf2-ae55e0244bb6 none luks # cat /etc/fstab: UUID=27ca1bd4-7811-4c3a-b319-2b8dd1ce57cd /boot ext4 defaults 0 2 UUID=617f84d9-1433-4620-a0c0-833fb8ce1e2f / ext4 defaults,errors=remount-ro 0 1 /swapfile none swap sw 0 0
生成 initramfs(參見1):
# update-initramfs -c -k all # ls -lah /boot drwxr-xr-x 4 root root 4.0K Oct 19 21:31 grub -rw-r--r-- 1 root root 81M Oct 19 20:55 initrd.img-5.4.0-42-generic
由於您的 LVM 位於 LUKS 加密分區上,因此 LVM 根卷 UUID 將不可見,直到加密解鎖。
預設情況下,Debian/Ubuntu GRUB 配置可能引用位於根文件系統上的幾個東西,包括:
- 字型檔
/usr/share/grub/unicode.pf2
- GRUB 背景圖像,例如
/usr/share/desktop-base/futureprototype-them/grub/grub-16x9.png
在 Debian 10 上如果您不想輸入兩次 LUKS 密碼(一次用於 GRUB,然後再次用於 initramfs),您需要確保將這些密碼複製到
/boot
(或任何其他 GRUB 能夠訪問的未加密文件系統)並且 GRUB會從那裡尋找他們。對於字型檔,您可以在執行前設置
GRUB_FONT=/boot/grub/unicode.pf2
in/etc/default/grub
並將字型檔複製到./boot/grub``grub-mkconfig
至少在 Debian 10 上,該
/etc/grub.d/05_debian_theme
腳本似乎具有將背景圖像複製到的內置功能,例如/boot/grub/.background_cache.png
,如果 GRUB 無法直接讀取根文件系統(如您的情況,它將被加密)。您需要驗證此功能(或相應 Ubuntu 腳本中的等效功能)是否被正確觸發,如果沒有,請使用GRUB_BACKGROUND=/boot/grub/<filename>
in覆蓋背景圖像路徑並手動/etc/default/grub
複製適當的圖像文件。/boot/grub/
注意:只要
grub.cfg
有set root=<something>
orsearch ... --set=root
命令,它只是指定任何後續 GRUB 命令將從中載入任何文件的文件系統。它不必引用您的 Ubuntu 安裝的根文件系統:這將由root=...
該行上的核心引導選項專門指定linux /boot/vmlinuz-...
。在您的情況下,解鎖 LUKS 加密並在其中找到根文件系統將是
initramfs
GRUB 的工作,而不是 GRUB 的工作。