我是一个 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/
将该目录复制fedora
为boot
,并在其中重命名shim.efi
为bootx64.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
启动时的事件顺序将是:
- 固件在 UEFI 模式下使用标准 UEFI 可移动介质/后备启动路径从 USB 启动:(
/EFI/boot/bootx64.efi
相对于 USB 磁盘文件系统的根目录) bootx64.efi
实际上是shim.efi
处理安全启动问题,然后grubx64.efi
在同一目录中启动grubx64.efi
grub.cfg
读取同一目录中的虚拟对象。它告诉它从USB 记忆棒上的目录configfile /EFI/fedora/grub.cfg
中读取实际的配置文件。/EFI/fedora
grubx64.efi
读取实际的 GRUB 配置文件。由于使用的安全启动垫片grubx64.efi
必须是完全独立的版本,因此它需要的任何 GRUB 模块都将是内置的。因此,它可以使用与 SSD 安装版本完全相同的配置,从 SSD 上的任何位置(加密或未加密)加载内核和 initramfs 文件。grubx64.efi
引导 Fedora 内核和 initramfs,引导加载程序的工作就完成了。- 当 Fedora 启动时,它会按照 挂载 USB 磁盘
/boot/efi
,/etc/fstab
因此以后的任何内核更新都会自动更新/boot/efi/EFI/fedora/grub.cfg
USB 磁盘上的。
如果您有一个单独的/boot
分区,并且您特别希望将其也移动到 USB 磁盘上,那么您将需要 USB 磁盘上的两个分区:一个 FAT32 分区(要挂载为/boot/efi
)和一个 Linux 分区(要挂载为/boot
)。在这种情况下,与 SSD 引导情况相同的 GRUB 配置将不再起作用;但是,如果您在运行之前设置了其他所有内容grub2-mkconfig
,它仍然应该能够为您创建合适的配置文件。
答案2
总结:您希望将引导加载程序放在 USB 支持上,以便启动 Linux 系统,同时无需包含引导加载程序的 USB 磁盘即可启动 Windows 系统。 这是不可能的。 事实上,引导加载程序将加载 GNU Linux 系统和 MS Windows 系统。如果没有引导加载程序,您将无法启动 MS Windows 操作系统