如何在多个驱动器上安装具有全盘加密的 Ubuntu?

如何在多个驱动器上安装具有全盘加密的 Ubuntu?

我想使用 LVM 安装具有全盘加密的 Ubuntu,但分成多个驱动器。

例如,如果我想要 /dev/sda 上的所有内容,但 /var 除外,而 /var 转到了 /dev/sdb?我可以看到如何在不使用 LVM 的情况下通过使用“其他”选项编辑分区来做到这一点

从安装程序来看,选择 LVM 时似乎只能安装到单个驱动器。我是否遗漏了什么?

答案1

安装程序不支持这种情况,因此您必须手动执行此操作。

您可以采用多种方法,并且因为您/var明确希望位于单独的物理卷上,所以我将执行以下操作:

  • 首先,使用安装程序在第一个物理卷 (sda) 上使用 LUKS 加密和 LVM 安装 Ubuntu,然后添加第二个卷。这将安装/var在您不想要的驱动器上,但这只是暂时的。

  • 然后在第二个物理卷 (sdb) 上设置 LUKS。您可以使用密码:

    cryptsetup luksFormat /dev/sdb1 # Assuming that sdb1 is the partition where
                                    # you want to create the LUKS container.
                                    # You can also use your entire drive (/dev/sdb)
                                    # and have no partition table.
    
  • 打开刚刚创建的 LUKS 容器:

    cryptsetup luksOpen /dev/sdb1 lvm-var
    

    现在如果你检查的话,dmsetup你应该会看到两个 LUKS 容器:一个是在 Ubuntu 安装期间创建的(我们lvm-ubuntu为了简单起见就这么称呼它,尽管名称会有所不同),另一个是我们刚刚创建的:

    $ dmsetup ls --target=crypt
    lvm-ubuntu ...
    lvm-var    ...
    
  • 初始化 LUKS 容器以便与 LVM 一起使用:

    pvcreate /dev/mapper/lvm-var
    

    现在如果你输入,pvs你应该会看到两个 LVM 物理卷:一个是你安装 Ubuntu 的地方,另一个是新的物理卷lvm-var

    $ pvs
      PV                     VG         Fmt  Attr PSize    PFree   
      /dev/mapper/lvm-ubuntu ubuntu-vg  lvm2 ...  ...      ...
      /dev/mapper/lvm-var               lvm2 ...  ...      ...
    
  • 在我们的新 LVM 物理卷内创建一个新的 LVM 卷组:

    vgcreate var-vg /dev/mapper/lvm-var
    

    现在vgs应该将其与安装期间创建的卷组一起列出:

    $ vgs
      VG         #PV #LV #SN Attr   VSize    VFree   
      ubuntu-vg    1   1 ...
      var-vg       1   0 ...
    
  • 在组内创建一个新的 LVM 逻辑卷:

    lvcreate -L<size> -n var var-vg # Choose a size for your volume group. You can
                                    # specify 100%, but I always recommend using a
                                    # fraction of the available space, because you
                                    # can always grow logical volumes and
                                    # filesystems online, but shrinking it is a
                                    # pain.
    

    lvs应反映我们的变化:

      LV   VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root ubuntu-vg -wi-ao---- ...
      var  var-vg    -wi-a----- ...
    
  • 在该逻辑卷上初始化 ext4 文件系统(或您喜欢的任何文件系统类型):

    mkfs.ext4 /dev/var-vg/var
    

    确认文件系统已使用 创建lsblk

  • 快完成了!现在我们需要告诉 Ubuntu 在启动时自动打开安装 LUKS 容器和文件系统。为此:

    • 将此行添加到/etc/crypttab

      var-vg UUID=<uuid of /dev/sdb1> none luks,discard,keyscript=decrypt_keyctl
      

      您可以使用 获取 UUID lsblk -f。这样keyscript=decrypt_keyctl您就不必在启动时输入两次相同的短语(以防您的两个 LUKS 容器使用相同的短语)。

    • 将此行添加到/etc/fstab

      /dev/var-vg/var /var ext4 defaults 0 1
      

大功告成!现在您可以将/var第一个驱动器上的所有文件复制到第二个驱动器上的新逻辑卷。

相关内容