所以这就是我想做的:
我在笔记本电脑的主 SSD 上留下了一些可用空间,因此我想在加密的 LVM 中安装第二个发行版,并将 /boot 分区放在 USB 记忆棒上,以便需要该记忆棒来引导系统,否则它启动到 SSD 上的主 Debian 系统,没有任何迹象表明该计算机上有另一个操作系统...
我使用的是基于 Debian 的 Parrot OS,因此有一个非常相似的安装程序。我在 SSD 上的可用空间中为 / 和交换逻辑卷创建了一个带有加密 LVM 的新分区,并在 USB 记忆棒上为 /boot 创建了一个 1GB 分区,并在分区程序中相应地设置了挂载点。我确实在 /boot 上设置了可启动标志。在安装过程中,系统询问我是否要将 GRUB 安装到第一个磁盘的 MBR 中。我选择“否”并获取设备列表以手动选择放置位置。我选择带有 /boot 的 USB 驱动器...
安装后尝试启动系统,我打开固件中的启动菜单并选择 USB 驱动器。显然,从这里开始,没有找到可启动设备,因此它会启动主 Debian 系统......
我过去读过以这种方式设置的系统,并认为这不会有问题,但有些东西不起作用,计算机将无法启动新操作系统。我是否错过了什么,或者是否无法启动以这种方式配置的系统?
提前致谢。
答案1
首先,MBR(旧版)现在越来越不常见,并逐渐被 EFI 取代。由于您的问题没有明确表示您知道您使用的是旧启动而不是 EFI,因此我建议您检查您实际使用的启动。要执行此操作,请启动您的工作(主)Debian 系统并查找:
ls /sys/firmware/efi/efivars/
如果存在,那么您将通过 EFI 启动。您还应该注意到那里有一个目录,/boot/efi/
它是挂载 EFI 分区的目录。
设置恢复环境。
您有一个工作环境,因此要解决您的问题,您可能需要使用该工作环境引导到“损坏的”环境。
您提到您正在使用加密的 LVM。这使得事情变得更加复杂。您需要做的第一件事是使用加密恢复密码解锁加密驱动器:
# Assuming your LVM is /dev/vg/encrypted
# This will create a decrypted block device /dev/mapper/decrypted
cryptsetup open /dev/vg/encrypted decrypted
然后将“损坏的”系统挂载/mnt
并 chroot 到其中(假设您的 USB 启动分区是/dev/sdb1
):
mount /dev/mapper/decrypted /mnt
mount /dev/sdb1 /mnt/boot
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /run /mnt/run
# chroot into the recovery environment
chroot /mnt
这应该会在您的“损坏”系统内留下一个命令行。
如果您确实使用旧启动
从恢复系统内部(如上所述),您需要将引导加载程序安装到 USB 驱动器的 MBR,而不是分区/boot/
。如果您/boot
在 USB 驱动器上,/dev/sdb1
那么您需要安装 MBR,而/dev/sdb
不是/dev/sdb1
grub-install /dev/sdb
为了更好地衡量,您还应该运行并更新 grub 配置和 initramfs:
update-grub
update-initramfs -uk all
请注意此处是否有任何错误。
如果你确实使用EFI
某些 BIOS 固件只会使用其中一种,因此如果您从 EFI 启动主系统,那么您也需要从这种方式启动 USB。从您的恢复环境内部(如上所述)...
首先确保您的 USB 驱动器上有 EFI 分区。如果不这样做,最简单的方法可能是复制到/boot
安全的地方并重新格式化 USB 驱动器。使用它在 USB 上以交互方式从头开始/dev/sdb
:
cp -r /boot ~/old_boot
umount /boot
cfdisk -z /dev/sdb
使用cfdisk,创建一个新的GPT分区表,创建两个分区——一个“EFI”一个“Linux”。
然后格式化它们:
mkfs.fat -F 32 -n EFI /dev/sdb1
mkfs.ext4 -L BOOT /dev/sdb2
挂载和恢复/boot
mount /dev/sdb2 /boot
cp -r ~/old_boot/* /boot
检查/etc/fstab
(例如cat /etc/fstab
),确保 UUID 匹配/boot/
并添加一个条目(/boot/efi
如有必要),您可以通过以下方式找到新的 UUID:
blkid /dev/sdb1 /dev/sdb2
然后最后设置EFI。
mount /dev/sdb1 /boot/efi
# If you've not already done so install grub efi:
apt-get install grub-efi-amd64-bin
grub-install /dev/sdb
update-grub
update-initramfs -uk all
答案2
[1]从BIOS将第一启动顺序更改为USB
[2] 使用Rufus制作启动U盘。
为此,您需要一个 Windows 平台才能正确运行 Rufus。获取您想要的 Linux 发行版 ISO,然后使用 rufus 制作启动 USB。
希望它能起作用。
有很多工具可以制作在 Linux 上运行的启动 USB。但我找不到其中任何一个是完美的。所以,我信任鲁弗斯,它从来没有让我失望过。