如何在现有的 LUKS 加密系统上重新安装 Ubuntu focal 20.04?

如何在现有的 LUKS 加密系统上重新安装 Ubuntu focal 20.04?

我是一个长期的 Ubuntu 用户(超过十年),但我没有来过这里,因为我没有遇到过 Ubuntu 问题。随着 Ubuntu 20.04 LTS 的到来,我决定加密我的数据(或系统,如果需要)。我正在寻找以下内容:

  • 在 Windows 10 双启动系统上,在以前使用 LUKS 加密的 Ubuntu 安装上重新安装使用 LUKS 加密的 ubuntu 的方法。
  • 保留我的所有个人文件(即/home文件夹)完好无损,无论是否有单独的分区。我不希望将所有内容移出,重新安装,然后再将内容移回。
  • 通过标准安装程序使用简单的基于 GUI 的方法。我知道如何使用命令行,但我宁愿不用,尤其是对于像加密这样敏感的东西。

我正在寻找的是基本上与本文件相同。只是我需要在 LUKS 加密系统/分区上使用它。我尝试在装有 Ubuntu 20.04 的备用系统上执行此操作,但找不到告诉安装程序加密系统密码的方法。最终结果是重新安装无法启动或加密分区被清除。我还尝试在预解锁和不预解锁加密分区的情况下运行安装程序,但无济于事。

我可以使用 Fedora、OpenSUSE、Manjaro 完成上述所有操作(尽管它们仅/home在单独的分区上时才执行此操作,这对我来说没问题),所以我不确定我在 Ubuntu 中做错了什么。

答案1

根据我使用 Ubuntu 20.04 安装程序的个人实验、在线研究以及询问各种论坛(但缺乏答案),我得出结论,截至今天,无法完成以下所有操作:

  • 正在安装/重新安装 Ubuntu ...
  • 使用安装程序 GUI...
  • 在预加密系统(LUKS,带有/home或不带有单独分区)上,而不会破坏预先存在的个人文件......
  • 双启动另一个操作系统。

当然,如果您依赖命令行,也有办法做到这一点,而这正是我想要避免的。我决定切换到 Fedora 32,因为它满足所有这些要求。Ubuntu 十多年来一直为我服务得很好,希望在上述问题解决后能回来。

对于那些对我的 Fedora 32 设置感兴趣的人:

  • 与 Windows 10 的双启动设置。
  • 重复使用(请勿格式化)/boot/efiWindows 10 安装中的分区
  • 创建未加密的/boot分区
  • 创建/重新使用加密/分区
  • 创建/重新使用加密/home分区
  • 提供密码来解锁上述加密分区。
  • 安装后,添加 RPMFusion 存储库和 Gnome Tweaks 扩展

这就是总结,已经使用一周了,到目前为止 Fedora 32 运行顺利。我并没有真正注意到它与 Ubuntu 在我的需求(电子邮件、浏览、查看照片/视频、音乐、Skype、电子表格、文档)方面有太大区别。

谢谢!

答案2

我可以用我的电脑来管理它,但我必须重新安装,因为 Ubuntu 从 18 LTS 升级到 20 LTS 失败了。

我有一个带有两个分区的 Ubuntu 18 LTS:

  • /dev/sda1 用于 /boot没有加密
  • /dev/sda5 用于 LVM PV加密(扩展分区,因为 Ubuntu 18 LTS 安装程序在去年圣诞节以这种方式创建)

在 LVM 分区内,我使用 luks 加密了所有内容:

  • gabor2-vg VG
    • 根 LV 格式化为 ext4,挂载为 /
    • 已格式化为 ext4 的主 LV,已安装到 /home
    • 交换 LV

与您的情况类似,当我将整个系统重新安装到带有 Cinnamon UI 的最新 Ubutnu 20.04.1 LTS 时,家庭 LV 包含我想保持不变的所有重要内容。

我家里有一个 PXE 服务器,可以使我的工作更轻松,但您也可以使用 USB 记忆棒在 iso 映像和 rufus 映像写入器软件的帮助下完成同样的工作。

在第一轮中,我尝试了 Ubuntu 20.04 LTS 网络启动安装程序。它启动正常,但只显示我的分区:sda1 和 sda5,因此没有关于 LVM 和 LUKS 的任何信息。

我在右上角的帮助菜单中找到了一个 bash shell 选项。我希望在那里打开 LUKS 卷,来回走动,但安装程序仍然没有看到 LVM 卷。

cryptsetup luksOpen /dev/sda5 gabor2-crypt

作为第二轮,我也尝试了与 Ubuntu 20.04 LTS Live CD 完全相同的操作。我打开了一个终端,打开了 luks 容器,然后从桌面图标启动了安装程序。

神奇的是,如果我打开 LUKS 容器,这个安装程序就会看到 LVM 逻辑卷,我可以选择哪个 LV 是哪个,哪个应该格式化,哪个不应该。完美,我心想,但我的电脑根本无法启动。我得到了 initramfs 提示。

在安装时,当您为 LVM 卷选择文件系统、挂载点等时,请小心使用格式选项,以避免意外重新格式化主 LV。我重新格式化了 /boot 和 /,以确保没有遗留任何垃圾。

原因很明显:安装程序没有自动设置 /etc/crypttab。

所以我回到了实时 Ubuntu CD(从 PXE 启动,但无论如何),挂载了所有必要的分区,进入 chroot,编辑 crypttab,重新生成 initramfs 和 grub,然后我就可以启动了,而我的主页保持不变。我的 Cinnamon UI 有原始的背景、图标等。非常好。如果它完全自动化就更好了 :)

以下是我用来修复上述启动问题的命令。起点是我们刚刚重新安装并想要修复的 PC 上的实时 Ubuntu 20.04.1 LTS CD。

# open luks container
cryptsetup luksOpen /dev/sda5 gabor2-crypt

# mount LVM volumes
mount /dev/mapper/gabor2--vg-root /mnt
mount /dev/mapper/gabor2--vg-home /mnt/home
mount /dev/sda1 /mnt/boot

# mount some other thing just because to make chroot fully functional
mount --bind /dev /mnt/dev
mount --bind /run /mnt/run
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

# enter into chroot where we want to act as we would be in the properly booted target system which is our new Ubuntu 20.04.1 LTS
chroot /mnt

# get the UUID we have to write to /etc/crypttab file
blkid /dev/sda5
/dev/sda5: UUID="........-....-....-......." TYPE="crypto_LUKS" PARTUUID=".....-.."

# create crypttab (if no vim, install it with apt!)
vim /etc/crypttab
  gabor2_crypt UUID="........-....-....-......." none luks

# regenerate initramfs and grub (initramfs might be enough but I'm lazy enough to reboot and grub update takes quite a little time)
update-initramfs -u
update-grub

# we are done, need to exit from the chroot and unmount and close everything to ensure filesystem consistency, then reboot
exit
umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt/run
umount /mnt/boot
umount /mnt/home
umount /mnt/
cryptsetup luksClose gabor2-crypt
reboot

我希望我对我所做的事情的描述足够准确并且也能为其他人提供帮助。

当我重新启动 PC 而没有卸载逻辑卷和关闭 LUKS 容器时,我遇到了一些文件系统问题:我的根卷会在随机时间自动以只读方式重新安装。在我执行了那一系列冗长的卸载命令后,文件系统问题就消失了。

祝你好运!玩得开心!

答案3

Launchpad 中存在与此相关的错误,解决方法如下:

https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1904270

解决方法

Ubuntu 20.04:重新使用现有 LUKS 加密分区的额外步骤

(将 nvme0n1p8 替换为您的加密 LUKS 分区)

  • 在启动安装程序之前(如果在 Ubuntu 或 Kubuntu live CD 桌面中),或者在第一步(如果使用基于 Ubuntu Server 文本的 live CD 安装程序):
# open existing LUKS partition 
cryptsetup luksOpen /dev/nvme0n1p8 nvme0n1p8_crypt
  • 然后,要么在安装程序运行结束后执行此操作,要么启动到实时 CD 环境(例如 Kubuntu)并执行以下操作:
cryptsetup luksOpen /dev/nvme0n1p8 nvme0n1p8_crypt
mount -o subvol=@ /dev/mapper/MainVG-root /mnt/
mount /dev/nvme0n1p7 /mnt/boot/
mount --rbind /dev/ /mnt/dev/
mount --rbind /sys/ /mnt/sys/
mount --rbind /run/ /mnt/run/
mount --rbind /proc/ /mnt/proc/
chroot /mnt /bin/bash -l
blkid | grep crypto_LUKS
# Example: /dev/nvme0n1p8: UUID="8cb9831a-692e-4b0e-936f-72529a3ed56d" TYPE="crypto_LUKS" PARTUUID="139f23d2-a0ff-4f4f-b41f-8083964ac894"
apt install vim
vim /etc/crypttab
# Add a line for the encrypted partiton, e.g:
# nvme0n1p8_crypt UUID="8cb9831a-692e-4b0e-936f-72529a3ed56d" none luks
#
# MAKE SURE There's a newline at end of /etc/crypttab

# update the initramfs
update-initramfs -u -k all


umount -l /mnt


# Optional, probably not needed
grub-install --recheck /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg

相关内容