将 /boot 移动到 USB Fedora

将 /boot 移动到 USB Fedora

我是一个 Linux 菜鸟,对我来说太赤裸裸了。

基本上我在笔记本电脑上对 SSD 进行了正常安装。现在我想将引导加载程序和内核以及每个未加密的文件移动到 USB,这样只有插入 USB 才能启动。

基本上我正在尝试做与这个问题相反的事情: 将 GRUB 从 USB 移动到 HD

我在互联网上浏览了很多,但找不到分步指南。我的长期目标是在 SSD 上安装 Windows,但只能在没有插入 USB 的情况下启动 Windows。

我该如何设置?

谢谢 :)

答案1

由于(根据评论)您拥有 UEFI 系统,因此仅迁移引导加载程序实际上可能相当简单。

将 USB 磁盘格式化为 FAT32。如果它安装为eg /media/usbdisk,则创建目录/media/usbdisk/EFI。然后将/boot/efi/EFI/fedora目录的完整内容复制到/media/usbdisk/EFI

cp -r /boot/efi/EFI/fedora /media/usbdisk/EFI/

将该目录复制fedoraboot,并在其中重命名shim.efibootx64.efi

cd /media/usbdisk/EFI
cp -r fedora boot
cd boot
mv shim.efi bootx64.efi

现在您的 USB 磁盘应该能够启动磁盘上的 Linux 安装!此时就可以测试一下了。如果有效,您可以更改为/etc/fstab挂载 USB 磁盘,而/boot/efi不是现有的 EFI 系统分区。

不过,仍然存在一个可能的问题:每当您安装新的内核软件包时,软件包管理器都会更新 中的引导加载程序配置(在 USB 磁盘上)/boot/efi/EFI/fedora/grub.cfg,但启动时实际使用的配置文件可能是/boot/efi/EFI/boot/grub.cfg.如果您遇到此问题,您可以替换/boot/efi/EFI/boot/grub.cfg为只有一行的“虚拟”配置文件:

configfile /EFI/fedora/grub.cfg

启动时的事件顺序将是:

  1. 固件在 UEFI 模式下使用标准 UEFI 可移动介质/后备启动路径从 USB 启动:(/EFI/boot/bootx64.efi相对于 USB 磁盘文件系统的根目录)
  2. bootx64.efi实际上是shim.efi处理安全启动问题,然后grubx64.efi在同一目录中启动
  3. grubx64.efigrub.cfg读取同一目录中的虚拟对象。它告诉它从USB 记忆棒上的目录configfile /EFI/fedora/grub.cfg中读取实际的配置文件。/EFI/fedora
  4. grubx64.efi读取实际的 GRUB 配置文件。由于使用的安全启动垫片grubx64.efi必须是完全独立的版本,因此它需要的任何 GRUB 模块都将是内置的。因此,它可以使用与 SSD 安装版本完全相同的配置,从 SSD 上的任何位置(加密或未加密)加载内核和 initramfs 文件。
  5. grubx64.efi引导 Fedora 内核和 initramfs,引导加载程序的工作就完成了。
  6. 当 Fedora 启动时,它会按照 挂载 USB 磁盘/boot/efi/etc/fstab因此以后的任何内核更新都会自动更新/boot/efi/EFI/fedora/grub.cfgUSB 磁盘上的。

如果您有一个单独的/boot分区,并且您特别希望将其也移动到 USB 磁盘上,那么您将需要 USB 磁盘上的两个分区:一个 FAT32 分区(要挂载为/boot/efi)和一个 Linux 分区(要挂载为/boot)。在这种情况下,与 SSD 引导情况相同的 GRUB 配置将不再起作用;但是,如果您在运行之前设置了其他所有内容grub2-mkconfig,它仍然应该能够为您创建合适的配置文件。

答案2

总结:您希望将引导加载程序放在 USB 支持上,以便启动 Linux 系统,同时无需包含引导加载程序的 USB 磁盘即可启动 Windows 系统。 这是不可能的。 事实上,引导加载程序将加载 GNU Linux 系统和 MS Windows 系统。如果没有引导加载程序,您将无法启动 MS Windows 操作系统

相关内容