为了在不投资多台计算机的情况下明确分离不同任务(工作、开源编程、游戏)的关注点,我更喜欢在单独加密的分区上安装并行操作系统。
愿望清单,目标:
使用以下步骤在一台机器上设置三个独立的 Ubuntu 系统。效果很好!
refind
而不是grub
管理系统选择。/boot
每个 Linux 实例使用单独的分区。让我们refind
直接从EFI 系统分区 (ESP)引导内核。refind
.refind
并确保它通过安全启动启动。refind
启动过程。假设GUID 分区表 (GPT)和 ESP 已由 Windows 安装程序设置,并且 Ubuntu 实例有额外的分区或空磁盘空间。
为了保持一致性,我将在下面使用此分区路径命名。路径在您的系统上会有所不同,并且会因实例而异,因此请做好记录。
/dev/nvme0n1p11
是你的ESP。/dev/nvme0n1p22
是你的临时/boot
分区。/dev/nvme0n1p33
是您的每个实例“用于加密的物理卷”(锁定)根/
分区。/dev/mapper/nvme0n1p33_crypt
是您的(未锁定的)根/
分区。sudo apt update && sudo apt dist-upgrade -y
ubiquity --no-bootloader
efi
为 ESP的分区。
/dev/nvme0n1p11
./dev/nvme0n1p22
./boot
./dev/nvme0n1p33
._crypt
。
/dev/mapper/nvme0n1p33_crypt
./
。refind
了新的实例。进入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
/etc/fstab
并注释掉/boot
. 其他条目是正确的。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/
/dev/nvme0n1p33
加密此实例的物理卷。记下(或复制到剪贴板)UUID(但不是 PARTUUID)。sudo blkid
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"
chroot
并重新启动。记得在refind
.exit
sudo reboot
可选的。这将删除refind
. 我喜欢保留它们作为备份,直到系统稳定为止。
# 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 的手动复制步骤。
/boot
的 ESP复制到未加密的 ESP,ubuntu-instance
如上所示。refind
通过选择自定义启动选项进入单用户模式。/boot
./boot
的 ESP复制到 ESP ubuntu-instance
。refind
能够读取加密LUKS分区,调查不守在未加密的ESP的内核。这可能会大大简化上述设置。ubiquity --no-bootloader
跳过安装shim-signed
,因此第三方 DKMS 模块/驱动程序(nvidia 等)需要手动签名才能安全启动。这可以在每次内核/驱动程序更新后使用kmodsign
for/lib/modules/x.y.z/updates/dkms/*.ko
完成。更顺畅的替代方法是安装shim-signed
(包括 的部分grub
),它会自动签名。也许有一个不那么肮脏的替代品?refind
。/boot
文件。不希望因意外格式化或类似方式而破坏 ESP 的风险增加,但可能也能正常工作。谢谢!
refind
.1这个Wayland 加 Nvidia grapics 驱动程序问题引起了我的注意。磁盘解锁后会导致黑屏。幸运的是,它很容易修复,并且一旦安装了更新的 Nvidia 驱动程序,Wayland 就可以恢复——只需记住将更新的内核 + initrd 复制到您的 ESP。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句