我为这个标题道歉。我不知道如何将我的情况变成一个合理的标题问题。如果有人能给我一个好的建议,我很乐意修改它。
我的目标:
我希望我的自定义 Ubuntu USB 驱动器(不是 Linux Live 副本,而是实际安装到 USB 驱动器)能够像 Linux Live USB 一样在多台机器上启动。无论 UEFI 设置如何,Ubuntu USB 都可以在我的所有 PC 上顺利启动。
我几年前就这样做过(那时我不需要处理 UEFI)并且现在它已经在一定程度上发挥作用了。
我拥有的:
- 我有一个包含 Ubuntu 安装程序的 Ubuntu live USB
- 我有一个带有 GPT 分区表和以下布局的 USB 驱动器:
- 数据分区 (NTFS),允许驱动器在插入正在运行的系统时充当普通 USB 驱动器
- 带有 boot 和 esp 标志的 ESP 分区(fat32,500MB),用于 UEFI 启动(或者在我的情况下可能不是?)
- 我安装了 Ubuntu 20 的操作系统分区(ext4,30GB)
- 交换分区
- 已使用两年的 Dell Precision
- 已使用 3 年的 Dell Precision
- 已有 10 年历史的 Dell Precision
我做了什么:
- 我尝试使用我使用了 2 年的 PC 将 Ubuntu 安装到 USB,但由于使用了 RST 而无法完成。由于这是我的工作 PC,而且我手头还有其他 PC,所以我继续使用。
- 我使用 10 年的 PC 成功将 Ubuntu 安装到 USB 上。遗憾的是,如果不将较新的 PC 设置为传统启动模式,USB 就无法启动。
- 我在 USB 上添加了一个 ESP 分区,并使用我使用了 3 年的 PC 来安装 Ubuntu。我在 Ubuntu 安装程序中遇到了两个错误。安装程序会询问在 UEFI 模式下将引导加载程序放在哪里,尽管 Ubuntu 文档中是这样说的。显然这是一个已知错误,是的,我仔细检查了我是否处于 UEFI 模式。下一个问题是,如果有多个 ESP 分区(在多个驱动器上),安装程序将使用它看到的第一个分区,即使您告诉它不要这样做并使用另一个分区。
- 我从使用了 3 年的 PC 中取出硬盘,并将 Ubuntu 安装到我的 USB 驱动器上,就好像它是真正的硬盘一样。
现在我的 USB 驱动器可以在所有 PC 上启动,但是存在一些问题:
- 当它在我使用了 2 年和 3 年的 PC 上启动时,它会抱怨 USB 没有 PC 硬盘上的 ESP 分区条目。这不是什么大问题,它会为您添加一个。不过这很烦人,而且看起来也不好。
- 它只能在我使用了 10 年的 PC 上启动,但前提是我从启动菜单中手动选择它(是的,我已经设置了启动顺序)。它似乎也不稳定(屏幕变黑)。(我知道屏幕变黑可能无关)
概括: Ubuntu live USB 有一个 fat32 分区,其中设置了 boot 和 lba 标志。它可以在我的所有 PC 上启动(并运行),不会出现问题,也无需更改任何设置。我怎样才能让我的 USB 以这种方式启动?我觉得这应该是可能的,因为 Ubuntu live USB 可以做到这一点。然而,我对 Linux live 的工作原理和 UEFI 的工作原理的了解充其量只是新手。
答案1
一般来说,您应该使用 MBR/MSDOS 分区表以实现最大(向后)兼容性。它不会阻止您创建 EFI 系统分区。
然后,您可以通过明确指定何时将 grubi386-pc
和x86_64-efi
变体(嗯,甚至i386-efi
对于那些具有 32 位 UEFI 的垃圾机器来说)都安装到驱动器中。--target
grub-install
答案2
为什么不放Ubuntu Live坚持不懈在 USB 上(或者更好的是,外部 SSD,因为大多数闪存 USB 驱动器在运行操作系统时速度极慢)?只需在每台机器上将启动顺序设置为首先从 USB 启动。
A执着的live 设备是完整的 Ubuntu 安装,可以根据需要进行修改,并且会保留所有更改。例如,如果您安装dconf-编辑器在机器 A 上使用 USB 驱动器时,它也可以在 B 和 C 上使用。如果您编辑dconf在 B 上,这些更改对于 A 和 B 仍然有效。保存在 C 上的 LibreOffice 文档应该可以在 A 和 B 上编辑。