![如何通过 LUKS 全盘加密在具有 LVM 的单独启动分区上手动设置 grub?](https://linux22.com/image/1467443/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20LUKS%20%E5%85%A8%E7%9B%98%E5%8A%A0%E5%AF%86%E5%9C%A8%E5%85%B7%E6%9C%89%20LVM%20%E7%9A%84%E5%8D%95%E7%8B%AC%E5%90%AF%E5%8A%A8%E5%88%86%E5%8C%BA%E4%B8%8A%E6%89%8B%E5%8A%A8%E8%AE%BE%E7%BD%AE%20grub%EF%BC%9F.png)
我已经安装了 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