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的选项。 按照下面列出的步骤进行操作。
- 使用您选择的工具对驱动器进行分区:我使用fdisk在msdos分区表上设置如下:
- sda1:/ boot(1G)
- sda2:LUKS分区(磁盘的其余部分)
- 设置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,这可能需要很长时间!
-
- 在/ dev / mapper / CryptDisk上设置LVM
-
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
-
- 现在您已准备好安装。 当您进入安装的“安装类型”部分时,请选择“其他”选项。 然后手动分配/ dev / mapper / vg0- *分区,如您所希望的那样。 不要忘记将/ dev / sda1设置为/ boot。 / boot分区不得加密。 如果是,我们将无法启动。 将“用于引导加载程序安装的设备”更改为/ dev / sda,然后继续安装。
- 安装完成后, 请勿重启 ! 选择“继续测试”选项。
- 在终端中,键入以下内容并查找/ dev / sda2的UUID。 请注意以后的UUID。
-
sudo blkid
- 我机器上的重要行读取
/dev/sda2: UUID="bd3b598d-88fc-476e-92bb-e4363c98f81d" TYPE="crypto_LUKS" PARTUUID="50d86889-02"
-
- 接下来让我们再次安装新安装的系统,以便我们进行更多更改。
-
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
-
- 现在运行
sudo chroot /mnt
来访问已安装的系统 - 从chroot,安装更多的东西
-
mount -t proc proc /proc
-
mount -t sysfs sys /sys
-
mount -t devpts devpts /dev/pts
-
- 设置crypttab。 使用您喜欢的文本编辑器,创建文件/ etc / crypttab并添加以下行,使用磁盘的UUID更改UUID。
-
CryptDisk UUID=bd3b598d-88fc-476e-92bb-e4363c98f81d none luks,discard
-
- 最后,重建一些启动文件。
-
update-initramfs -k all -c
-
update-grub
-
- 重启,系统应该要求输入密码才能在启动时解密!
特别感谢Martin Eve , EGIDIO DOCILE和blog.botux.fr上的人们发布的教程。 通过从他们的post中拉出棋子并进行一些额外的麻烦拍摄,我终于能够解决这个问题了。
我试了很多次,一遍又一遍地失败了。 我根据错误消息为自己解决的问题是sudo mount --bind /run/lvm /mnt/run/lvm