加密自定义安装

加密自定义安装

我的电脑运行的是 Ubuntu。我想在另一个介质上安装 Ubuntu。我希望启用加密,但由于 Ubuntu 安装程序的默认选项(擦除/并排/等...)仅涉及默认驱动器,我必须选择“其他”并手动在另一个驱动器上创建分区,我为启动创建了 ~128mb 部分,然后我就迷路了,如果我用剩余的空间创建一个加密分区,我无法分割它,所以我没有交换;如果我创建两个加密分区,这似乎不对,因为它想设置两个不同的密码...

那么我该如何设置交换?(安装期间或安装后)。

答案1

更新2020-07-16:这可能不适用于已不再使用 Ubiquity 安装程序的 Ubuntu 版本(例如,现在使用 Calamares 的 Lubuntu),因为其中一些安装程序甚至会停用它们自己在预安装过程中未配置的 LVM 分区。因此,配置用于系统安装的分区不可用。

如何实现这一点LVM 和单个加密分区##

警告

首先,128M 对于启动来说太小了!我用的是 1G。否则,你肯定会忘记删除旧内核,导致 /boot 被填满,然后你就必须处理从系统中删除旧内核的痛苦这样您就可以重新开始apt工作apt-get。即使只有 1G,也要确保不时删除旧内核。

以下步骤不适合新手用户。
更新:我已经创建了一个脚本它将为您执行以下操作以及更多操作!您所要做的就是在安装之前从 Live OS 运行它。您可以在我的博客


从实时操作系统进行预安装

您想在手动分区时设置 LUKS 和 LVM!我在 Ubuntu 16.04.2 / 18.04 / 20.04 上测试了这一点

从 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 注意,这可能需要很长时间!
  3. 在 /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

从实时操作系统安装

  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
  1. 最后,重建一些启动文件。
  • update-initramfs -k all -c -update-grub
  1. 重新启动,系统应该在启动时要求输入密码来解密!

特别感谢马丁·伊夫艾吉迪奥·多西尔以及博客.botux.fr他们发布的教程。通过从他们的帖子中提取一些内容并进行一些额外的故障排除,我终于能够解决这个问题。

我尝试了好几次,但都失败了。根据错误消息,我必须自己解决的是sudo mount --bind /run/lvm /mnt/run/lvm

答案2

对于那些一直遇到这个问题并想稍微改变 Ubuntu 默认分区的人来说,这是答案。例如,删除分区swap并增加/boot大小。我认为很多人会因为需要大量步骤而不愿意遵循 b_laoshi 的指示。

因此,对于简单的自定义分区和加密,我建议使用“擦除磁盘并安装 Ubuntu”和“加密新的 Ubuntu 安装以确保安全”选项。我们将更改此默认分区的配置。

这些配置包含在 中/lib/partman/recipes[-arch]/。就我个人而言,我一直在更改/lib/partman/recipes-amd64-efi/30atomic。为了获得 的 538M efi、 的 1024M/boot以及 ext4 的其余部分/,我将文件编辑为

1024 1024 1024 fat32
    $iflabel{ gpt }
    $reusemethod{ }
    method{ efi }
    format{ } .

4096 4096 4096 ext4
    $defaultignore{ }
    $lvmignore{ }
    method{ format }
    format{ }
    use_filesystem{ }
    filesystem{ ext4 }
    mountpoint{ /boot } .    

900 10000 -1 ext4
    $lvmok{ }
    method{ format }
    format{ }
    use_filesystem{ }
    filesystem{ ext4 }
    mountpoint{ / } .

请注意,一旦您在安装程序中选择了要擦除的磁盘,它将提示您分区的摘要,以便您可以检查该技巧是否有效并且您是否获得了所需的分区。另请参阅https://askubuntu.com/a/678074/47073

答案3

如何实现多个加密分区和逻辑卷管理器

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

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

答案4

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

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

相关内容