debian 和 grub 以及 raid10+lvm+luks

debian 和 grub 以及 raid10+lvm+luks

我设置的测试用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 不存在)我错过了什么?

答案1

找到解决方案。我错过了 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

相关内容