我曾经在这台机器上使用旧版 BIOS 启动,在三个硬盘上双启动 Ubuntu 16.04 和 Windows 10。我使用 GRUB 在 SSD 和 HDD 组合上启动 Ubuntu,在自己的 SSD 上启动 Windows 10,但我也可以在 Ubuntu 中的虚拟机中启动该 Windows 10 磁盘。
当我升级到 Ubuntu 18.04 时,我以 UEFI 安装方式重新安装了 Ubuntu 和 Windows。一切正常,除了我无法再在 Virtualbox 中使用物理 Windows 10 驱动器。
我尝试调整权限好几天了,但最终我只是在启动时被转储到 GRUB 恢复 shell。我可以将虚拟机启动到活动磁盘并正常访问驱动器。
我对 EFI 启动分区及其工作原理确实不太熟悉。我甚至不确定是否需要为每个操作系统设置一个 EFI 分区,但我希望能够在没有 Ubuntu 硬盘的其他机器上使用 Windows 10 磁盘。
谁能告诉我我做错了什么?
这是我的设置。/dev/sda 是我的主目录和 var 挂载点。sdc 是我的根目录。sdb 是 Windows 磁盘。
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 1D529F06-982A-4C10-86F1-9AABFA271304
Device Start End Sectors Size Type
/dev/sda1 2048 16777215 16775168 8G Linux swap
/dev/sda2 16777216 25165823 8388608 4G Linux filesystem
/dev/sda3 25165824 1659922431 1634756608 779.5G Linux filesystem
*** IGNORE THESE PARTITIONS ***
/dev/sda4 1659922432 1695938559 36016128 17.2G Linux filesystem
/dev/sda5 1695938560 1704327167 8388608 4G Linux filesystem
/dev/sda6 1704327168 1828964351 124637184 59.4G Linux filesystem
/dev/sda7 1828964352 1926782975 97818624 46.7G Microsoft basic data
Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C76B0EBA-27D6-4FE0-A92F-F78276F26981
Device Start End Sectors Size Type
/dev/sdb1 2048 1023999 1021952 499M Windows recovery environment
/dev/sdb2 1024000 1228799 204800 100M EFI System
/dev/sdb3 1228800 1261567 32768 16M Microsoft reserved
/dev/sdb4 1261568 500117503 498855936 237.9G Microsoft basic data
Disk /dev/sdc: 29.8 GiB, 32017047552 bytes, 62533296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D7616B5D-A0FA-4ACD-9122-DAB9BA2F21ED
Device Start End Sectors Size Type
/dev/sdc1 2048 411647 409600 200M EFI System
/dev/sdc2 411648 62531583 62119936 29.6G Linux filesystem
答案1
我发现您只需要在 VM 启动时按 Delete 键进入 BIOS,然后手动添加 Windows 的 EFI 启动选项。
答案2
目前,我正在使用 EFI shell 来启动 Windows。
您可以使用 EFI shell 手动启动引导加载程序:键入 fs0: 以访问第一个文件系统,通常是 ESP。键入 cd EFI{osname},其中 {osname} 是您的操作系统安装其引导加载程序的目录的名称。(您没有说您安装了什么操作系统,所以我不确定那是什么。键入 ls EFI 将显示那里的内容。)通过键入其名称来启动引导加载程序。同样,我不知道那是什么。对于 Linux,它通常是 grubx64.efi。对于 Windows,它是 bootmgfw.efi。
请参阅此处的答案: 如何在虚拟盒中退出 EFI shell
您还可以重新创建物理磁盘而不包括主机分区。
创建 vmdk 文件时,-mbr 参数不是必需的,但请确保不要包含主机操作系统所在的分区,也就是说,在 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