如何使用单独的分区加密和 UEFI/安全启动运行多个 Ubuntu 18.x?

乔尔·普拉

为了在不投资多台计算机的情况下明确分离不同任务(工作、开源编程、游戏)的关注点,我更喜欢在单独加密的分区上安装并行操作系统。

愿望清单,目标:

  • 使用带有单个硬盘驱动器的单机。
  • UEFI安全启动结合使用
  • 并行安装多个高度分离的 Linux 实例。
    • 单独加密的分区以确保无法(轻松)访问其他实例的磁盘。
    • 保留自己的软件、设置和主文件夹。
    • 目前Ubuntu 18.x 桌面
    • 可能是其他发行版,但此处未涵盖。
  • 安装一个 Windows 实例。
  • 可以选择将其他分区或磁盘用于一般(共享)存储。
    • 此处不赘述。
乔尔·普拉

使用以下步骤在一台机器上设置三个独立的 Ubuntu 系统。效果很好!

想法

概述

  • 显然,事先为任何有价值的数据创建多个备份。更改引导程序、格式化磁盘、启用加密等可能是危险的,需要小心。
  • 首先安装Windows。
    • 似乎是一般性建议,但对于 UEFI 应该不那么重要。
    • 它将准备 GPT 和 ESP,这也可以使用Ubuntu USB/DVD 中的GNOME 分区编辑器手动完成
    • Windows 安装程序创建的 ESP 可能不够大,具体取决于 Ubuntu 实例的数量和内核大小。512 MB 似乎足以容纳 2 个 Ubuntu 实例,但 1 GB 会更安全并允许更多实例。
  • 安装refind并确保它通过安全启动启动。
  • 对于每个所需的 Ubuntu 系统实例:
    • 从 USB 或 DVD 运行默认的 Ubuntu 安装程序。
    • 选择“其他”选项以手动设置加密并选择分区。
    • 安装后不要重新启动,而是继续设置refind启动过程。
  • 随着时间的推移,如果有内核或驱动程序更新,请执行维护任务。

每个实例安装

假设GUID 分区表 (GPT)和 ESP 已由 Windows 安装程序设置,并且 Ubuntu 实例有额外的分区或空磁盘空间。

分区路径和名称

为了保持一致性,我将在下面使用此分区路径命名。路径在您的系统上会有所不同,并且会因实例而异,因此请做好记录。

  • /dev/nvme0n1p11 是你的ESP。
  • /dev/nvme0n1p22是你的临时/boot分区。
  • /dev/nvme0n1p33是您的每个实例“用于加密的物理卷”(锁定)根/分区。
  • /dev/mapper/nvme0n1p33_crypt是您的(未锁定的)根/分区。

分区并安装一个新的(额外的)Ubuntu 实例

  1. 在 USB 或 DVD 上获取 Ubuntu,选择“试用 Ubuntu”启动它。
  2. 打开终端以更新并启动安装程序。
    sudo apt update && sudo apt dist-upgrade -y
    ubiquity --no-bootloader
    
  3. 当询问安装类型(与其他操作系统共存)和磁盘格式化/分区时,选择“其他”以查看磁盘和分区列表。
  4. 找到类型efi为 ESP的分区
    • 在我的系统上,这是/dev/nvme0n1p11.
    • 记下分区路径名称,因为您在下面需要它。
    • 在继续之前检查它是否至少有 200 MB 可用空间,因为新实例内核将需要它。
  5. 选择或创建一个引导分区。
    • 在我的系统上,这是/dev/nvme0n1p22.
    • 记下引导分区路径名称,因为您在下面需要它。
    • 将重用于后续的 Ubuntu 实例安装。
    • 创建或选择一个小的(最大 512 MB)分区。
    • 擦除/格式化为 EXT4。
    • 单击“更改”并将其挂载为/boot.
  6. 为 Ubuntu 选择或创建一个根分区。
    • 在我的系统上,这是/dev/nvme0n1p33.
    • 记下根分区路径名称,因为您在下面需要它。
    • 它将被删除。
    • 最小 5 GB,完整安装 25+ GB。
    • 单击“更改”并使其成为“用于加密的物理卷”。
    • 选择一个与其他实例不同的密码。
  7. 找到以 结尾的新的未锁定分区_crypt
    • 在我的系统上,这是/dev/mapper/nvme0n1p33_crypt.
    • 将挂载点更改为 root /
  8. 让安装程序完成,但不要通过选择“继续测试”在最后重新启动。

建立refind了新的实例。

  1. 进入chroot新的操作系统以进行更多更改。

    # NOTE: create temporary mount directories.
    sudo mkdir /mnt/bootpartition /mnt/ospartition
    
    # NOTE: Mount the newly created encrypted partition.
    sudo mount -o subvol=@ /dev/mapper/nvme0n1p33_crypt /mnt/ospartition
    sudo mount /dev/nvme0n1p22 /mnt/bootpartition
    
    # NOTE: Copy the boot files into the encrypted partition.
    # NOTE: Watch those trailing slashes! rsync is very sensitive to them.
    sudo rsync -aXAH /mnt/bootpartition/ /mnt/ospartition/boot/
    
    sudo mount /dev/nvme0n1p11 /mnt/ospartition/boot/efi
    sudo mount --bind /dev /mnt/ospartition/dev
    sudo mount --bind /proc /mnt/ospartition/proc
    sudo mount --bind /sys /mnt/ospartition/sys
    
    # NOTE: change root to the newly installed Ubuntu.
    sudo chroot /mnt/ospartition
    
  2. 编辑/etc/fstab并注释掉/boot. 其他条目是正确的。
  3. 可选:进行其他低级系统文件更改,例如损坏驱动程序的解决方法1
  4. 创建的EFI-引导副本的内核(vmlinuz初始ramdisk( initrd进行refind记得ubuntu-instance用我们自己的东西替换我使用“ubuntu-work”之类的。不要只使用“ubuntu”,因为它可能会被 Ubuntu 安装程序覆盖。
    # NOTE: Choose your own per-instance directory name.
    sudo mkdir /boot/efi/EFI/ubuntu-instance/
    sudo cp /boot/vmlinuz* /boot/initrd* /boot/efi/EFI/ubuntu-instance/
    
  5. 查找用于/dev/nvme0n1p33加密此实例的物理卷。记下(或复制到剪贴板)UUID(但不是 PARTUUID)。
    sudo blkid
    
  6. refind为 中的加密分区准备Ubuntu 实例内核启动选项refind_linux.conf/boot/efi/EFI/ubuntu-instance/refind_linux.conf从以下模板创建,但使用您的路径和 UUID。
    "Boot with standard options"  "root=/dev/mapper/nvme0n1p33_crypt cryptdevice=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:nvme0n1p33_crypt ro quiet splash"
    "Boot to single-user mode"    "root=/dev/mapper/nvme0n1p33_crypt cryptdevice=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:nvme0n1p33_crypt ro single"
    "Boot with minimal options"   "root=/dev/mapper/nvme0n1p33_crypt cryptdevice=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:nvme0n1p33_crypt ro"
    
  7. 退出chroot并重新启动。记得在refind.
    exit
    sudo reboot
    

清理

可选的。这将删除refind. 我喜欢保留它们作为备份,直到系统稳定为止。

  • 删除任何剩余的共享 Ubuntu Grub 引导加载程序。
    # NOTE: The shared Ubuntu Grub EFI loader might be leftover from previous installations.
    #sudo rm -r /boot/efi/EFI/ubuntu/
    
  • 从未使用的引导分区中删除文件。
    # NOTE: Optionally clean up files from the Ubuntu installer.
    #sudo mkdir /mnt/bootpartition
    #sudo mount /dev/nvme0n1p22 /mnt/bootpartition
    #sudo rm -r /mnt/bootpartition/*
    

内核或驱动程序更新后的维护

由于 Ubuntu 不知道refind,内核+驱动程序更新需要 vmlinuz+initrd 的手动复制步骤。

  • 安装更新后,但在重新启动之前,将新的 vmlinuz+initrd 从加密/boot的 ESP复制到未加密的 ESP,ubuntu-instance如上所示。
  • 如果您忘记执行此操作,并且系统损坏或未加载新驱动程序,请启动:
    • refind通过选择自定义启动选项进入单用户模式
    • Ubuntu 安装程序 USB/DVD,并挂载到临时位置:
      • 包含/boot.
      • ESP。
    • 像上面一样将 vmlinuz+initrd 从您/boot的 ESP复制到 ESP ubuntu-instance

未来的改进

  • 如果/当有EFI文件系统驱动程序,以便refind能够读取加密LUKS分区,调查不守在未加密的ESP的内核。这可能会大大简化上述设置。
  • 运行会ubiquity --no-bootloader跳过安装shim-signed,因此第三方 DKMS 模块/驱动程序(nvidia 等)需要手动签名才能安全启动。这可以在每次内核/驱动程序更新后使用kmodsignfor/lib/modules/x.y.z/updates/dkms/*.ko完成更顺畅的替代方法是安装shim-signed(包括 的部分grub),它会自动签名。也许有一个不那么肮脏的替代品?
  • 弄清楚内核+驱动程序更新是否可以自动触发更新每个实例的 ESP vmlinuz+initrd 副本refind
  • 使用以下之一改进临时引导分区的使用:
    • 在每个 Linux 实例中将临时引导分区配置为加密交换空间。
    • 将 ESP 重用于临时/boot文件。不希望因意外格式化或类似方式而破坏 ESP 的风险增加,但可能也能正常工作。

灵感

谢谢!


1这个Wayland 加 Nvidia grapics 驱动程序问题引起了我的注意。磁盘解锁后会导致黑屏。幸运的是,它很容易修复,并且一旦安装了更新的 Nvidia 驱动程序,Wayland 就可以恢复——只需记住将更新的内核 + initrd 复制到您的 ESP。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(X)Ubuntu无法启动,反复打印“ ^ [[18〜”及更多内容

来自分类Dev

如何了解Ubuntu UEFI安全启动安装?

来自分类Dev

如何了解Ubuntu UEFI安全启动安装?

来自分类Dev

如何从 GRUB 启动 Ubuntu 18 live USB?

来自分类Dev

在ubuntu 18.x上编译nginx和naxsi

来自分类Dev

什么是 UEFI 和安全启动?它们如何影响 Ubuntu?

来自分类Dev

Kerberos 和 Ubuntu 18

来自分类Dev

Ubuntu 18.X 和 16.X 启动时间从双启动笔记本电脑需要一个小时或更长时间

来自分类Dev

在Ubuntu 18.X上运行add-apt-repository后,禁用自动执行apt更新。

来自分类Dev

在Ubuntu 18.X上运行add-apt-repository后,禁用自动执行apt更新。

来自分类Dev

Windows 7和Ubuntu 18?

来自分类Dev

如何使用Wine 1.8将Adobe Reader 11.x安装到Mint 18 x64(Ubuntu 16.04)上

来自分类Dev

如何在 Ubuntu 18.x 中的 Coffee Lake CPU 上启用集成 GPU(带 QSV)

来自分类Dev

Ubuntu 18 NetworkManager 导致启动问题

来自分类Dev

Thinkpad X1 Carbon的内置扬声器在Ubuntu 18和19中不会改变音量

来自分类Dev

Thinkpad X1 Carbon的内置扬声器在Ubuntu 18和19中不会改变音量

来自分类Dev

华硕 X202e VivoBook,双启动。如何绕过 UEFI 并拥有 Win8 和 Ubuntu?

来自分类Dev

停止使用电池 [Ubuntu 18]

来自分类Dev

从 USB 启动时 Ubuntu 18 LTS 和 20 LTS 冻结

来自分类Dev

在安全启动上安装Ubuntu锁定UEFI

来自分类Dev

在Ubuntu 18上进行Xrdp的安装步骤,以实现从Mac OS X Sierra到Ubuntu 18的连接

来自分类Dev

如何为双引导运行的 Ubuntu 18 重新分配(或增加)内存

来自分类Dev

如何使用UEFI和Intel Smart Response技术运行Ubuntu

来自分类Dev

如何使用UEFI和Intel Smart Response技术运行Ubuntu

来自分类Dev

如何检查Ubuntu是否以UEFI模式启动?

来自分类Dev

如何检查Ubuntu是否以UEFI模式启动?

来自分类Dev

Ubuntu 18 未在 WSL2 中启动

来自分类Dev

ubuntu 18的openprinting密钥

来自分类Dev

ubuntu 18的openprinting密钥

Related 相关文章

  1. 1

    (X)Ubuntu无法启动,反复打印“ ^ [[18〜”及更多内容

  2. 2

    如何了解Ubuntu UEFI安全启动安装?

  3. 3

    如何了解Ubuntu UEFI安全启动安装?

  4. 4

    如何从 GRUB 启动 Ubuntu 18 live USB?

  5. 5

    在ubuntu 18.x上编译nginx和naxsi

  6. 6

    什么是 UEFI 和安全启动?它们如何影响 Ubuntu?

  7. 7

    Kerberos 和 Ubuntu 18

  8. 8

    Ubuntu 18.X 和 16.X 启动时间从双启动笔记本电脑需要一个小时或更长时间

  9. 9

    在Ubuntu 18.X上运行add-apt-repository后,禁用自动执行apt更新。

  10. 10

    在Ubuntu 18.X上运行add-apt-repository后,禁用自动执行apt更新。

  11. 11

    Windows 7和Ubuntu 18?

  12. 12

    如何使用Wine 1.8将Adobe Reader 11.x安装到Mint 18 x64(Ubuntu 16.04)上

  13. 13

    如何在 Ubuntu 18.x 中的 Coffee Lake CPU 上启用集成 GPU(带 QSV)

  14. 14

    Ubuntu 18 NetworkManager 导致启动问题

  15. 15

    Thinkpad X1 Carbon的内置扬声器在Ubuntu 18和19中不会改变音量

  16. 16

    Thinkpad X1 Carbon的内置扬声器在Ubuntu 18和19中不会改变音量

  17. 17

    华硕 X202e VivoBook,双启动。如何绕过 UEFI 并拥有 Win8 和 Ubuntu?

  18. 18

    停止使用电池 [Ubuntu 18]

  19. 19

    从 USB 启动时 Ubuntu 18 LTS 和 20 LTS 冻结

  20. 20

    在安全启动上安装Ubuntu锁定UEFI

  21. 21

    在Ubuntu 18上进行Xrdp的安装步骤,以实现从Mac OS X Sierra到Ubuntu 18的连接

  22. 22

    如何为双引导运行的 Ubuntu 18 重新分配(或增加)内存

  23. 23

    如何使用UEFI和Intel Smart Response技术运行Ubuntu

  24. 24

    如何使用UEFI和Intel Smart Response技术运行Ubuntu

  25. 25

    如何检查Ubuntu是否以UEFI模式启动?

  26. 26

    如何检查Ubuntu是否以UEFI模式启动?

  27. 27

    Ubuntu 18 未在 WSL2 中启动

  28. 28

    ubuntu 18的openprinting密钥

  29. 29

    ubuntu 18的openprinting密钥

热门标签

归档