将加密的 18.04 安装更改为与 22.04 一起双启动?

将加密的 18.04 安装更改为与 22.04 一起双启动?

我正在尝试在双启动模式下并排安装 Jammy,并且现存的LUKS 加密的 Bionic 安装。

(为了开发目的,我们需要在同一台 PC 上访问这两者,而虚拟机并不是一个真正的选择。)18.04 是使用加密安装的,使用安装程序中提供的 LVM/LUKS 配置作为选项。

我想我已经完成了大部分工作,但是在让引导加载程序解密分区时遇到了麻烦。

以下是我目前尝试的步骤:

(由于我只是在虚拟机中测试可重复的过程,所以磁盘大小很小):

以实时模式启动 22.04 安装程序,通过单击 Nautilus 中显示的加密卷来解锁磁盘。

sudo lvs

演出:

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root vgubuntu -wi-a---- <30g
swap_1 vgubuntu -wi-a---- 976.00m

缩小 18.04 根文件系统所在的现有逻辑卷:

sudo lvreduce --resizefs --size 10G /dev/ubuntu-vg/root

为安装程序创建一个新的逻辑卷(LV)以供 22.04 使用:

sudo lvcreate -n jammy-root -L 15G ubuntu-vg

此时,我可以看到新的和现有的 LV。

接下来,我从桌面启动 22.04 安装程序。

  1. 选择手动分区。
  2. 选择新的 LVM 卷“/dev/mapper/ubuntu--vg-jammy-root”选择格式,用作 EXT4,挂载点:/
  3. 选择现有的交换区,重新用作两个操作系统的交换区
  4. 选择现有的 /boot 分区作为两个操作系统的 /boot(希望这不会导致太多问题并且可行,这似乎比移动所有分区并调整大小以允许 2 个 /boot 分区容易得多。我试图避免这种情况,因为我需要多次执行此过程。)

安装使用这些设置完成。此时,如果我重新启动,我将获得两个操作系统安装的 grub 菜单,两个安装似乎都不知道 LV 位于加密卷上。我收到以下消息:

Volume group "ubuntu-vg" not found
Cannot process volume group ubuntu-vg

我被放入了 BusyBox 壳中。

我还尝试运行与上述相同的过程,而不是在安装程序完成运行以下命令时重新启动:

echo 'ubuntu-vg UUID=(uuid without quotes) none luks,discard' > /target/etc/crypttab
mount -t proc proc /target/proc

mount --rbind /sys /target/sys

mount --rbind /dev /target/dev

chroot /target

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck /dev/sda

grub-mkconfig --output=/boot/efi/EFI/ubuntu/grub/grub.cfg

update-initramfs -ck all

exit

reboot

这给出了相同的结果。

有谁能给我一些建议,告诉我如何才能让它发挥作用,并让它成为一个易于重复的过程?

谢谢!

根据评论者的要求添加其他信息:

驱动器布局如下:

/dev/vda1 - A single fat32 EFI partition - 512MB
/dev/vda2 (an ext4 /boot partition) - 732MB
/dev/vda3 LUKS encrypted PV containing: 2 LVs for the root of each OS and 1 LV for shared swap.

树摘要:

Drive: /dev/vda
├─ Partition: /dev/vda1/ [single fat32 EFI partition]
├─ Partition: /dev/vda2/ [ext4, boot partition, created by 18.04 installer, will use for both, mountpoint: boot]
├─ Partition: /dev/vda3/ [LUKS encrpyted PV]
│  ├─ VG: ubuntu-vg [Default LVM VG created by 18.04 installer]
│    ├─ LV: root [Default LVM LV created by 18.04 installer]
│       ├─ Partition: ext4, description/use: Default 18.04 root partition created by 18.04 installer, mountpoint: /
│    ├─ LV: swap_1 [Default LVM LV created by 18.04 installer]
│       ├─ Partition: swap, description/use: 18.04 and 22.04 swap partition created by 18.04 installer, will use for both, use as swap
│    ├─ LV: jammy-root [LVM LV manually created before 22.04 install]
│       ├─ Partition: ext4, description/use: 22.04 root partition manually created and used during 22.04 install as described in original post., mountpoint: /
  1. 启动方式为 UEFI
  2. 这是安装程序使用的默认 LUKS 方案,即包含用于 / 的 ext4 LV 和用于交换的 LV 的加密 PV。
  3. LUKS 版本信息:

/dev/vda3 的 LUKS 标头信息

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha256
Payload offset: 4096
MK bits:        512

答案1

首先,我不认为你的 grub 引导程序打开了 luks。你的设置实际上有清除数据 /boot。你看到的是内核启动后的内容。

您尝试共享 /boot 的主要问题是。/boot 包含一个特定操作系统的内核和 grub 信息。initramfs-tools 将删除/更改其中的文件。操作系统不知道 vmlinz 或 initrd 是否属于其自身。update-grub 将更改 /boot/grub 中的引导加载程序和脚本,因此它将无法正确处理其他 ubuntu 安装中的操作系统。请不要这样做。

您的旧 18.04 无法启动的原因是现在 /boot/grub 包含与其不匹配的新 grub 配置。/boot 也不包含正确的 initrd 和 vmlinz。因此,忘掉 18.04 吧。此时它根本无法工作。除非您费尽心机 chroot 到 18.04 并修复您的 /boot。

您更新 crypttab 的步骤大致正确。我看您会看到 luks 密码输入界面。但这可能会超时。因此请确保您使用详细启动。然后您会看到有关发生的事情的更多信息。

确保 crypttab 中的 UUID 正确。它是 vda3 而不是 ubuntu-vg uuid。

由于您尝试混合使用 2 个操作系统,因此您最终可能会启动到错误的内核或内核实际上使用错误的 initrd。我强烈建议您创建一个新的 /boot 或格式化旧的 /boot。然后重新安装。在重新启动之前,请按照正常加密设置的建议,将 chroot 进入您的安装。然后更新您的 crypttab 和 initrd。

答案2

对他来说,使用一对带有 grub 的 USB 驱动器来安装每个版本的 Ubuntu 是否可行,即插入一个 USB 驱动器并启动他想要使用的版本,因为单个驱动器会安装相应的 /dev/vda*/。我知道这可能不是一种实用的方法,但它应该可以同时备份文件

相关内容