Virtualbox 无法从 GPT 物理分区启动来宾

Virtualbox fail to bootup guest from GPT physical partition

Virtualbox 无法从 GPT 物理分区启动来宾,它停在黑屏,光标(不闪烁)位于左上角。 Virtualbox 版本是 5.0.10 x64。

PhysicalDrive0是一个GPT驱动器,这里是分区信息:

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands listpartitions -rawdisk \.\PhysicalDrive0
Number Type StartCHS EndCHS Size (MiB) Start (Sect)
1 0x00 0 /0 /0 0 /0 /0 100 2048
2 0x00 0 /0 /0 0 /0 /0 128 206848
3 0x00 0 /0 /0 0 /0 /0 409372 468992
4 0x00 0 /0 /0 0 /0 /0 409600 838862848
5 0x00 0 /0 /0 0 /0 /0 409600 1677723648
6 0x00 0 /0 /0 0 /0 /0 662640 2516584448
7 0x00 0 /0 /0 0 /0 /0 16288 3873671168

通过 BIOS 双启动工作正常。

首先,通过 BIOS 使用 Ubuntu14.04.3 启动计算机,运行 下面的命令创建 .mbr 文件:

sudo grub-install /dev/sdb
sudo dd if=/dev/sdb of=~/my.mbr

/dev/sdb是一个USB闪存,在这些命令之后,我可以通过这个USB闪存启动Ubuntu14.04.3。

然后使用 Win7 启动计算机,运行 在 DOS 提示符下创建 vmdk 文件,运行 在管理员权限下:

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands createrawvmdk
-filename e:\VirtualBox\a.vmdk -rawdisk \.\PhysicalDrive0 -partitions 6,7 -mbr
e:\VirtualBox\my.mbr
RAW host disk access VMDK file e:\VirtualBox\a.vmdk created successfully

以管理员权限启动 Virtualbox,创建一个虚拟机,Ubuntu 64 位,4G 内存,使用现有的 a.vmdk。启动虚拟机,它停在黑屏,左上角有一个光标(不闪烁)。

我做了很多搜索,但没有得到解决方案。这里有人可以帮我吗?

我终于做到了,虽然还有一些问题我无法解释。在此记录一下,以供遇到同样问题的人,以备日后记忆。

  1. 创建vmdk文件时,-mbr参数不是必须的,但要 确保不包括主机 OS 所在的分区,即 是,在 vmdk 中包含整个物理驱动器将失败。我的决赛 命令行(不包括主机分区 #3)是:

    C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands createrawvmdk -filename e:\VirtualBox\Ubuntu.vmdk -rawdisk \.\PhysicalDrive0 -partitions 1,2,4,5,6,7
    
  2. 创建来宾机器后(如问题中所述),去 来宾设置,系统,主板,扩展功能,一定要 保持 "Enable EFI (special OSes only)" 检查。

  3. 启动guest,快速按Del进入 来宾的 VirtualBox BIOS,然后显示 Windows 启动菜单。如果 你没有这样做并进入 Windows 启动菜单,强行打开 给客人断电再开始。

  4. 在 BIOS 中,转到引导维护管理器、引导选项、更改引导 命令。将 EFI Internal Shell 移动到第一个选项,Commit Changes 和退出。按启动维护管理器中的重置系统菜单项 屏幕。有关如何更改引导顺序的说明,请访问 BIOS 屏幕底部。

  5. 客户机再次重启时,会进入EFI shell(而不是 Windows 启动菜单)。现在你需要弄清楚哪个分区是 EFI 引导加载程序。输入 shell 后,它会打印出分区 和他们的名字,但它似乎并没有为我把它们全部打印出来。 一旦你确定了哪个是你的 EFI 引导加载程序,运行:

    BLK2:\EFI\ubuntu\grubx64.efi
    

    如果不是 EFI bootloader 会return报错

  6. 现在显示 GRUB 引导菜单,我们可以启动 Ubuntu。

有时我发现来宾停留在空白 Ubuntu 屏幕上,有时 VirtualBox 会显示错误。我一直重启来宾直到它工作。您可能还必须从第 3 步重新开始,因为您的 BIOS 设置似乎丢失了。

希望这对您有所帮助。我想澄清一下,我只在以下情况下进行了测试: * VirtualBox 5.0.10 x64 * 主机 OS: Win7 sp1 x64 * 访客 OS:Ubuntu 14.04.3 x64 * 具有描述的特定磁盘分区。

要非常小心,因为这直接在物理驱动器上运行。您的数据由您负责。