Grub

debian 和 grub 與 raid10+lvm+luks

  • January 2, 2021

我設置為用debian機器測試虛擬機是這樣配置的

raid10軟體中的4個磁碟md0(raid10)在luks(luksmd0)上用luks加密我創建了vg(debian2-vg),它最終有2個卷,root和swap。我在 / 中配置了引導(最新的 grub2 可以從 raid、lvm 引導並在加密 / 中引導)。所以我像這樣配置/etc/default/grub

GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="root=/dev/mapper/debian2--vg-root rd.luks.uuid=21d33599-a220-zddg-1b1f-b2ae82fc0856 rd.luks.name=21d33599-a220-zddg-1b1f-b2ae82fc0856=luksmd0 rd.luks.crypttab=no rd.lvm.lv=debian2-vg/root rd.luks=1 rd.md=1"

系統啟動,詢問/的密碼,我插入通行證和系統啟動,最後……沒有lvm的initramfs :((md0存在,luksmd0沒有)我想念什麼?

找到解決方案。我錯過了 initramfs 部分。當我們從清除環境更改為加密環境時,我們必須配置 initramfs。

a) 從帶有 iso 映像的 usbkey 啟動後(slackware iso 可以,debian 也可以)

b)打開加密的md

cryptsetup luksOpen /dev/md0 luksmd0

c) 安裝最終的 lvm

vgchange -ay
mount /dev/yourvgname/rootlv /mnt

d)從“fakeroot”將這些目錄掛載為綁定

for i in dev proc sys
do mount -o bind /$i/ /mnt/$i
done

e)通常引導是單獨的分區

chroot /mnt /bin/bash
mount /boot 

f)重要..我們編輯/etc/crypttab,uuid必須是加密dev的uuid,在我的例子中是/dev/md0,uuid取自blkid而不是mdadm,另一種方法是使用cryptsetup luksUUID /dev/ md0

luksmd0 UUID=21d33599-a220-zddg-1b1f-b2ae82fc0856 none luks

g)我們必須編輯這兩個文件,在這個文件中我們插入核心模組(ext4、md、raid10、raid0 等。)

/etc/initramfs-tools/modules

在這個其他我們只需啟用 cryptsetup

/etc/cryptsetup-initramfs/conf-hook

h) 現在編輯 /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="root=/dev/mapper/debian2--vg-root rd.luks.uuid=21d33599-a220-zddg-1b1f-b2ae82fc0856 rd.luks.name=21d33599-a220-zddg-1b1f-b2ae82fc0856=luksmd0 rd.luks.crypttab=no rd.lvm.lv=debian2-vg/root rd.luks=1 rd.md=1"

i) 如果需要,編輯 fstab 並進行更改

vim /etc/fstab

m) 現在 mkinit

update-initramfs -cuv -k all

n) 最後是 grub

grub-install --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

如果使用 efi

mount /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --recheck
grub-mkconfig -o /boot/grub/grub.cfg

如果一切正常並且沒有給出錯誤

umount -a
exit
reboot

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