我想在 USB 设备上安装 Ubuntu 服务器 22.04。我选择 ubuntu 服务器进行最小设置。我下载了服务器 iso 并将其刻录到 USB 驱动器上。
然后我从这个刻录的 USB 驱动器启动,并将服务器安装到另一个 USB 驱动器上。第一次就成功了。我可以启动了。然后我移除了 USB 驱动器并启动到我的默认 Windows 驱动器。
之后我再次尝试从 USB 介质启动,系统只是重新启动或启动到 Windows。我总共使用了 2 个 USB 驱动器
- 安装
- 安装于
我检查了 efi 分区,它有 FAT32 文件系统。有人能帮忙吗?
更新:不断循环重启并显示“重置系统”消息
更新:当我打开笔记本电脑并进入启动菜单(按 F11 而不是 BIOS)时,首先我看到的是选项
- Windows SSD
- UEFI:USB 分区 1
当我选择选项 2 时,系统显示“重置系统”消息并重新启动。之后我再次进入启动菜单,看到 3 个选项
- Windows 固态硬盘
- Ubuntu
- UEFI:USB 分区 1
当我选择第二个选项时,它可以工作。但是如果我移除 USB 驱动器并重新连接它,ubuntu 选项就会消失,我必须再次选择 UEFI:USB 分区 1 选项
请帮忙。
我还注意到,在我拔下 USB 驱动器后,系统时间重置为 UTC 时间。
答案1
我相信这种行为是经过设计的,并且根据 UEFI 规范是正确的。某些 UEFI 固件对可移动媒体和已移除的 HDD 采取不同的行为。这完全没问题,因为规范中没有定义这一点。
简而言之,您可以尝试进入 BIOS 设置,看看是否可以手动创建带有分区 uuid 的条目。但防火墙仍然可以决定删除位于丢失磁盘上的启动条目(我可以确认一些戴尔固件会这样做)
当启动到 ubuntu 时,efibootmgr -v
检查 EFI 启动项。你应该看到类似这样的内容:
Boot0004* ubuntu HD(1,GPT,uuid,0xnnnn,0xmmmmm)/File(\EFI\UBUNTU\SHIMX64.EFI)
检查 uuid 是否是 efi 应用程序所在的分区。有时 uuid 可能是其他值,那么它就是错误的。
长话短说:
可移动设备应该有 /EFI/BOOT/BOOTX64.efi,当固件看不到该磁盘的启动项时,它将采用
/EFI/BOOT/BOOTX64.efi
然后
/EFI/BOOT/BOOTX64.efi
调用 fallback efi 应用程序:fbx64.efi
然后 fallback 应用程序根据 BOOTX64.CSV 生成启动项,并将其设为默认,然后重置机器。这就是你看到的 ubuntu 条目。
然后下次开机就会直接启动到ubuntu
当您拔下 USB 磁盘时,事情就会变糟。下次启动时,固件将尝试从默认选项 ubuntu 启动,然后磁盘丢失。固件决定删除 ubuntu 条目或删除默认标志。这取决于您的固件提供商决定如何执行此操作。
因此,您可以尝试在 bios 或 efimanager 中手动创建 ubuntu 启动项,并且不要将其标记为默认。然后该条目可能会保留。仍然取决于固件实现,如果他们决定删除指向丢失磁盘的条目,那就没问题了。