加密的自定义安装

我的电脑运行Ubuntu。 我想在另一种媒体上安装Ubuntu。 我希望启用加密,但由于ubuntu安装程序的默认选择(擦除/旁边/等…)只涉及默认驱动器,我必须选择“别的东西”并手动在另一个驱动器上创建分区,我创建〜 128mb部分用于启动,然后我输了,如果我用剩余的空间创建一个加密分区,我无法拆分它,所以我没有交换; 如果相反我创建两个加密分区,它似乎不正确,因为它想要设置两个不同的密码…

那我怎么设置掉掉呢? (在安装期间或之后)。

如何使用 LVM和单个加密分区来实现此目的

警告

首先128M太小了,不能开机! 我用的是1G。 否则,必然会发生的事情是您可能忘记删除旧内核并且/ boot会填满,并且您将不得不处理尝试从系统中删除旧内核的痛苦,以便您可以获得aptapt-get再次工作。 即使使用1G,也要确保不时删除旧内核。

接下来的步骤不适合新手用户。


从实时操作系统预安装

您想在手动分区时设置LUKS和LVM! 我在Ubuntu 16.04.2上测试了这个

从Live OS启动Ubuntu并选择无需安装即可尝试Ubuntu的选项。 按照下面列出的步骤进行操作。 我们假设您正在安装到/ dev / sdb。

  1. 使用您选择的工具对驱动器进行分区:我使用fdisk在msdos分区表上设置如下:
    • 其他分区:现有操作系统 – 我们不关心这些
    • sdb1:/ boot(1G)
    • sdb2:LUKS分区(磁盘的其余部分)
  2. 设置LUKS
    • sudo cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdb2
    • sudo cryptsetup luksOpen /dev/sdb2 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

从实时操作系统安装

  1. 现在您已准备好安装。 当您进入安装的“安装类型”部分时,请选择“其他”选项。 然后手动分配/ dev / mapper / vg0- *分区,如您所希望的那样。 不要忘记将/ dev / sdb1设置为/ boot。 / boot分区不得加密。 如果是,我们将无法启动。 将“用于引导加载程序安装的设备”更改为/ dev / sdb,然后继续安装。
  2. 安装完成后, 请勿重启 ! 选择“继续测试”选项。

来自实时操作系统的安装后配置

如果您希望系统启动,这一点非常重要! 我花了很多时间研究这个以找出这些安装后的步骤。 在我的情况下,我实际上是这样做的,因为我想在/ dev / sda上自定义/ boot的大小,但所有这些工作都应该延续到你的情况。

  1. 在终端中,键入以下内容并查找/ dev / sdb2的UUID。 请注意以后的UUID。
    • sudo blkid | grep LUKS
    • 我机器上的重要行读取/dev/sdb2: UUID="bd3b598d-88fc-476e-92bb-e4363c98f81d" TYPE="crypto_LUKS" PARTUUID="50d86889-02"
  2. 接下来让我们再次安装新安装的系统,以便我们进行更多更改。

    • sudo mount /dev/vg0/root /mnt
    • sudo mount /dev/vg0/home /mnt/home #这可能没必要
    • sudo mount /dev/sdb1 /mnt/boot
    • sudo mount --bind /dev /mnt/dev #我不完全确定这是必要的
    • sudo mount --bind /run/lvm /mnt/run/lvm
    • (仅当您使用EFI时): sudo mount /dev/sd*/your/efi/partition / mnt / boot / efi
  3. 现在运行sudo chroot /mnt来访问已安装的系统

  4. 从chroot,安装更多的东西
    • mount -t proc proc /proc
    • mount -t sysfs sys /sys
    • mount -t devpts devpts /dev/pts
  5. 设置crypttab。 使用您喜欢的文本编辑器,创建文件/ etc / crypttab并添加以下行,使用磁盘的UUID更改UUID。
    • CryptDisk UUID=bd3b598d-88fc-476e-92bb-e4363c98f81d none luks,discard
  6. 最后,重建一些启动文件。
    • update-initramfs -k all -c
    • update-grub
  7. 重启,系统应该要求输入密码才能在启动时解密!

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

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

执行此任务的一种方法是使用ubuntu网络安装程序https://www.ubuntu.com/download/alternative-downloads

它不是图形安装程序。 但是,在您选择使用加密的完整磁盘安装后,它为您提供了明确的磁盘选择。

如何完成这个多个加密分区而没有 LVM

因为我以前的答案太长了,所以如果你不想使用LVM,我会发布第二个答案,采用不同的方法。

您可以创建多个加密分区并使用decrypt_derived脚本,这样您只需输入一次密码。 查看此博客文章,了解分步说明。 作者使用密钥文件,但decrypt_derived LUKS脚本也足够了。