![debian 和 grub 以及 raid10+lvm+luks](https://linux22.com/image/141393/debian%20%E5%92%8C%20grub%20%E4%BB%A5%E5%8F%8A%20raid10%2Blvm%2Bluks.png)
我设置的测试用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