我今天才发现,人们可以创建 VirtualBox VMDK 文件,这些文件只需引用本地磁盘上的真实分区,不用说,我非常兴奋。“这意味着我可以从在 Linux 中运行的 VirtualBox 启动我的 Windows 7 安装!”
我像这样创建了 VMDK 文件:
sudo VBoxManage internalcommands createrawvmdk -filename .VirtualBox/Hard\ Disks/Windows\ 7\ Local.vmdk -rawdisk /dev/sdb -partitions 2,4,5
分区 2 是我的 EFI 启动分区,分区 4 是 Windows msft 分区,分区 5 是实际的 NTFS Windows 分区。一切顺利,所以我将 VMDK 文件的所有权更改为我当前的用户,这样我就可以用我的登录用户运行它们了。
这导致了第一个问题。我似乎无法以除 root 之外的任何用户身份将此映像添加到 VirtualBox,并且如果可能的话,我真的不想以 root 身份运行它。有解决方法吗?
下一个障碍是 EFI。我在 VirtualBox 中启用了 EFI 启动,但每当我启动 EFI/Microsoft/Boot/bootmgfw.efi 映像时,我都会看到以下代码:
BlXmiInitialize failed 0xc000009a
并且无法启动。另外,必须使用实际的 UEFI shell 才能启动,这很麻烦。
如何才能以非 root 用户身份从 VirtualBox 中的 Linux 启动我的实际本地 Windows 7 安装?
更新
通过将您的 Linux 用户添加到disk
组,您可以以非 root 用户身份使用 VMDK 驱动器:
sudo adduser me disk
但我仍然无法解决启动错误。
我认为这可能是由于其他问题引起的,因此我尝试使用 Windows 7 安装盘进行启动修复,但似乎甚至看不到 Windows 安装,因为磁盘提示我只需安装 Windows。
为了解决缺少重要信息的潜在问题,我执行以下操作来创建整个磁盘(而不仅仅是单个分区)的 VMDK:
VBoxManage internalcommands createrawvmdk -filename ".VirtualBox/Hard Disks/Windows 7 Local.vmdk" -rawdisk /dev/sdb
该驱动器/dev/sdb
是硬件英特尔 RAID 卡 (RS2BL080) 提供的虚拟驱动器。
答案1
根据VirtualBox 团队成员并根据VirtualBox 手册:
请注意,VirtualBox EFI 支持处于试验阶段,将随着 EFI 的成熟和普及而得到增强。虽然 Mac OS X 和 Linux 客户机可以正常工作,但 Windows 客户机目前无法使用 VirtualBox EFI 实现进行启动。
这很无趣,但却是事实。有趣的是,这可以说是更多的在 Mac OSX 上实现 EFI 比在 Windows 上实现要困难,因为基本上每个现代主板都有与 Windows“兼容™”的 UEFI 固件,而 Apple 使用的是专为自己的硬件设计的专有 EFI 实现。
总结:截至撰写本文时,EFI 支持实际上并不适用于 VirtualBox 中的 Windows。
答案2
关于 Windows EFI 启动错误的信息似乎非常有限。我只能找到下面两个链接,它们似乎是互相备份的,都是俄语的
它没有解决 VirtualBox Windows EFI 启动问题。但是,它演示了如何修改 WindowsBootmgfw.efi
以实现使用 grub-efi 的双重启动。也许您可以使用该技术检查 bootmgfw.efi 内容并找出实际问题。
成功的故事
但是,没有提到使用 efi。所以他们可能使用旧式 bios。
潜在问题 - 激活
根据这个帖子每次切换启动模式(VM vs Native)时,Windows 都可能要求激活。我认为这是可以理解的,因为在模式之间切换就像切换到不同的主板和 CPU 一样。