Ubuntu 卡在一个不寻常的屏幕上

Ubuntu 卡在一个不寻常的屏幕上

这有点奇怪,因为当我尝试从我的 MacBook Pro 使用 VirtualBox 启动 Ubuntu 时,出现了这个屏幕。

在此处输入图片描述

我使用 UEFI 启动安装了 Ubuntu,因为我想启用虚拟化 (vt-x)。这似乎不是一件好事。有人能告诉我如何退出此屏幕并返回到原始屏幕吗?

答案1

问题不在于 Ubuntu 或其安装;而是 VirtualBox 的限制。详细说明一下……

在 EFI/UEFI 下,正常安装涉及操作系统将其引导加载程序安装到EFI 系统分区 (ESP),使用特定于操作系统的名称。(Ubuntu 使用EFI\ubuntu\shimx64.efiEFI\ubuntu\grubx64.efi。)由于引导加载程序名称因操作系统而异,因此计算机必须知道要运行哪个文件。它通过在 NVRAM 中记录数据来了解这一点。Ubuntu 将此信息注册到程序中efibootmgr。这两个细节都由 Ubuntu 安装程序处理;在正常安装过程中,您看不到它们。

问题是 VirtualBox 似乎无法记住其 NVRAM 数据 - 至少,当它被efibootmgr正在运行的 Ubuntu 安装记录时无法记住。根据我的经验,只要虚拟机正在运行,VirtualBox 就会记住数据,但是当您关闭并重新启动它时,它会忘记这些信息。结果是虚拟机重新引导到 EFI shell,如您共享的屏幕截图所示。有几种解决方案可以解决此问题:

  • 使用 BIOS 模式启动-- 您可以将 VirtualBox 切换为使用 BIOS 而不是 EFI。根据您的评论,这是您正在使用的解决方案。对于 99% 的时间启动 Linux 来说,这是一个非常合理的解决方案。但是,如果您出于某种原因需要 EFI(例如,如果您正在开发 EFI 应用程序),这将不是一个可接受的解决方案。FWIW,在 VirtualBox 下,EFI 模式启动比 BIOS 模式启动稍快。
  • 使用 EFI shell 启动 GRUB-- 您可以学习 EFI shell 命令来定位和启动引导加载程序,并使用它们来启动 GRUB。通常,以下命令应该可以完成这项工作:
    1. fs0:(但在某些情况下可能是fs1:其他设备)
    2. cd \EFI\ubuntu
    3. grubx64.efi
  • 使用 EFI 启动脚本启动 GRUBstartup.nsh-- EFI shell在启动时会尝试运行一个名为 的 shell 脚本。如果您有此脚本 launch grubx64.efi,它将在 EFI shell 启动时启动。不过,这将需要几秒钟。
  • 使用 EFI 设置实用程序注册 GRUB-- 尽管 VirtualBox 不会记住由 创建的条目efibootmgr,但它会记住用自己的设置工具创建的条目。输入exitEFI shell 应该会进入设置工具。然后,您可以使用启动维护菜单 -> 启动选项 -> 添加启动选项来找到 GRUB 并为其添加条目。但请注意,VirtualBox EFI 的设置实用程序很挑剔,因此很容易忽略关键步骤或以其他方式错误地执行。
  • 重命名 GRUB-- EFI 识别一个特殊的“后备”文​​件名(EFI\BOOT\bootx64.efi在 x86-64 系统上),如果它找不到另一个可启动映像,它就会启动这个文件名。因此,您可以重命名 GRUB 以使用此名称。您可以从 EFI shell 执行此操作:

    1. fs0:(再次强调,这有时可能是另一个设备)
    2. cd EFI
    3. mv ubuntu BOOT
    4. mv BOOT\grubx64.efi BOOT\bootx64.efi

    或者,您可以使用 Ubuntu 执行相同的操作。您可以使用安装介质的“安装前尝试”模式,或者使用 EFI shell 启动 GRUB 一次,然后使用常规安装。无论哪种方式,ESP 通常是/dev/sda1,因此您需要挂载该分区才能进行更改。(如果您使用常规安装,ESP 应该/boot/efi默认挂载在。)

从一开始就以 BIOS 模式安装可能是最简单的解决方案;但如果虚拟机已经安装或者您需要或想要 EFI 模式启动,重命名EFI/ubuntu/grubx64.efi通常EFI/BOOT/bootx64.efi是最好的解决方案。

答案2

那不是 Ubuntu,而是 UEFI Shell。这意味着,你的 Ubuntu 安装混乱了,甚至无法启动。

相关内容