如何通过 LUKS 全盘加密在具有 LVM 的单独启动分区上手动设置 grub?

如何通过 LUKS 全盘加密在具有 LVM 的单独启动分区上手动设置 grub?

我已经安装了 Linux Mint 17.2,其硬盘分区如下:

sdc1 - 100MB ext2 for boot
sdc2 - rest of disk as LUKS -> Physical Volume -> LVM Volume

逻辑卷包括:

/
/home
swap

安装程序似乎工作正常,只是它无法安装引导加载程序,我被迫选择“稍后手动安装引导加载程序”选项。

我已经运行 LiveCD,打开了 LUKS 卷并且已将根逻辑卷安装在 /mnt。

问题:如何安装引导加载程序?

大多数说明都这么说:

# grub-install --root-directory=/mnt/ /dev/sdc

但这会产生:

grub-probe: error: failed to get canonical path of `/cow'.
Installing for i386-pc platform.
grub-install.real: error: attempt to install to encrypted disk without cryptodisk enabled. Set `GRUB_ENABLE_CRYPTODISK=1' in file `/etc/default/grub'..

我已经编辑了/etc/default/grub/mnt/etc/default/grub并添加了GRUB_ENABLE_CRYPTODISK=1两者,但错误仍然出现。

正确的设置方法是什么,以便 grub 安装在未加密的 sdc1 上,提示输入密码,然后在解锁后启动系统?

更新

Grub 现在会在启动时加载,但它不会要求输入密码或正确解密。通过添加以下选项,/etc/default/grub我可以让它提示输入密码,但输入正确的密码后它不会解密:

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`    
GRUB_CMDLINE_LINUX_DEFAULT="cryptopts=target=lvmbase,source=/dev/disk/by-uuid/f7ddbdb6-51c3-4c59-9d1e-7751b0438431,lvm=vg0_root"
GRUB_CMDLINE_LINUX=""

答案1

我通常grub从内部恢复chroot。因此,从实时发行版启动并...

打开 LUKS 卷:

# cryprsetup open /dev/sdc2 luks-mint

激活 LVM 卷:

# vgscan
# vgchange -a y vg_mint
# lvscan

登上 Mint 并做好准备chroot

# mount /dev/mapper/vg_mint-root /mnt
# mount /dev/sdc1 /mnt/boot
# mount --rbind /dev /mnt/dev
# mount --rbind /sys /mnt/sys
# mount -t proc none /mnt/proc

chroot进入 Mint:

# env -i HOME=/root TERM=$TERM chroot /mnt bash -l

配置并安装grub,退出chroot

(chroot)# grub2-mkconfig > /boot/grub2/grub.cfg
(chroot)# grub2-install /dev/sdc
(chroot)# exit

重启。

PS:请相应替换VG和LV名称。

PPS:我假设 Linux Minut 使用,如果没有,请从两个命令grub2中删除“2” 。grub

相关内容