LVM和LUKS手动分区但与loader / init / grub有关

我在手动分区和安装LVM和LUK方面取得了一些成功。

创建分区 – home,root,swap和boot,pv和vg都是正确创建和设置的。

我从Live安装并将文件系统中的所有内容安装到正确的位置。

我chroot并安装和设置/ etc / crypttab与正确的UUID和/ etc / fstab指向正确的映射器和UUID(基于blkid输出)。

在这一点上,我尝试了几种方法来尝试获取引导程序和grub以给我一个密码登录屏幕,它将解密我在/ etc / crypttab中引用的内容。

第一种方法 –

mount -t proc proc /proc mount -t sysfs sys /sys update-initramfs -u 

跑这个告诉我

 /usr/sbin/iucode_tool: cpuid kernel driver unavailable, cannot scan system processor signatures 

第二种方法 –

检查/etc/mkinitcpio.conf以添加lvm2并加密然后跟随

 mkinitcpio -p linux 

这不起作用,因为mkinitcpio不存在。

经过一些研究后,我认为/ etc / crypttab对现有的init进程来说可能已经足够了?

第三种方法 –

编辑/ etc / default / grub来添加

 GRUB_ENABLE_CRYPTODISK=y 

然后跑

 grub mkconfig -o /boot/grub/grub.cfg grub-install /dev/sda1 

我得到的问题我得到了

 /usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/ubuntu-rootvol' 

我知道将这个启动屏幕与密码整理出来应该相当简单,但我没有选择。 请告诉我使用Ubuntu参考/ etc / crypttab的正确方法

谢谢你的帮助!

我找到了一种在手动分区时设置LUKS和LVM的方法! 我在Ubuntu 16.04.2上测试了这个

从Live OS启动Ubuntu并选择无需安装即可尝试Ubuntu的选项。 按照下面列出的步骤进行操作。

  1. 使用您选择的工具对驱动器进行分区:我使用fdisk在msdos分区表上设置如下:
    • sda1:/ boot(1G)
    • sda2:LUKS分区(磁盘的其余部分)
  2. 设置LUKS
    • sudo cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sda2
    • sudo cryptsetup luksOpen /dev/sda2 CryptDisk
    • 虽然没有必要,但最好用零填充LUKS分区,以便加密状态的分区充满随机数据。 sudo dd if=/dev/zero of=/dev/mapper/CryptDisk bs=4M BEWARE,这可能需要很长时间!
  3. 在/ dev / mapper / CryptDisk上设置L​​VM
    • sudo pvcreate /dev/mapper/CryptDisk
    • sudo vgcreate vg0 /dev/mapper/CryptDisk
    • sudo lvcreate -n swap -L 2G vg0
    • sudo lvcreate -n root -L 10G vg0
    • sudo lvcreate -n home -l +100%FREE vg0
  4. 现在您已准备好安装。 当您进入安装的“安装类型”部分时,请选择“其他”选项。 然后手动分配/ dev / mapper / vg0- *分区,如您所希望的那样。 不要忘记将/ dev / sda1设置为/ boot。 / boot分区不得加密。 如果是,我们将无法启动。 将“用于引导加载程序安装的设备”更改为/ dev / sda,然后继续安装。
  5. 安装完成后, 请勿重启 ! 选择“继续测试”选项。
  6. 在终端中,键入以下内容并查找/ dev / sda2的UUID。 请注意以后的UUID。
    • sudo blkid
    • 我机器上的重要行读取/dev/sda2: UUID="bd3b598d-88fc-476e-92bb-e4363c98f81d" TYPE="crypto_LUKS" PARTUUID="50d86889-02"
  7. 接下来让我们再次安装新安装的系统,以便我们进行更多更改。
    • sudo mount /dev/vg0/root /mnt
    • sudo mount /dev/vg0/home /mnt/home #这可能没必要
    • sudo mount /dev/sda1 /mnt/boot
    • 如果您有EFI分区,请将其安装在/mnt/boot/efi
    • sudo mount --bind /dev /mnt/dev #我不完全确定这是必要的
    • sudo mount --bind /run/lvm /mnt/run/lvm
  8. 现在运行sudo chroot /mnt来访问已安装的系统
  9. 从chroot,安装更多的东西
    • mount -t proc proc /proc
    • mount -t sysfs sys /sys
    • mount -t devpts devpts /dev/pts
  10. 设置crypttab。 使用您喜欢的文本编辑器,创建文件/ etc / crypttab并添加以下行,使用磁盘的UUID更改UUID。
    • CryptDisk UUID=bd3b598d-88fc-476e-92bb-e4363c98f81d none luks,discard
  11. 最后,重建一些启动文件。
    • update-initramfs -k all -c
    • update-grub
  12. 重启,系统应该要求输入密码才能在启动时解密!

特别感谢Martin Eve , EGIDIO DOCILE和blog.botux.fr上的人们发布的教程。 通过从他们的post中拉出棋子并进行一些额外的麻烦拍摄,我终于能够解决这个问题了。

我试了很多次,一遍又一遍地失败了。 我根据错误消息为自己解决的问题是sudo mount --bind /run/lvm /mnt/run/lvm