使用 VirtualBox 启动已有的 Boot Camp

前言

由于又想入一下 Mac 和 Swift 的坑,这几天在配置 Mac,但是当前写的项目又大部分基于 Win 的组件,而且 Windows 有很多不可或缺的软件和功能,所以想着要么新创建一个 Windows 的虚拟机,要么把现在有的 Boot Camp 用某种方式在 Mac 下启动。

新创建虚拟机有三个选择:Parallels Desktop、VMware Fusion、VirtualBox,前两者价格昂贵,安装包巨大,并且声称有强大的功能,后者免费小巧。迫于穷,我只能选择 VirtualBox,VirtualBox 建议的 Windows 10 虚拟机分配硬盘大小为 35G,网上查了一下 Windows 10 全新安装后的占用也在 20G 左右,但是我 Mac 下的剩余容量不够——我之前把大部分的硬盘在创建 Boot Camp 的时候分配给了 Boot Camp——并且使用到现在 Mac 和 Boot Camp 都剩余不多,我用了 Camptune X 把 Boot Camp 的容量重新分配了 20G 到 Mac,然后发现 Mac 的剩余容量是 37G。。

因此我只能放弃新创建虚拟机,寻找方法把现在有的 Boot Camp 用某种方式在 Mac 下启动。Parallels Desktop 和 VMware Fusion 的特性里都有提到可以把现有的 Boot Camp 分区在 Mac 下直接启动,VirtualBox 似乎在官方说明里没有提到这点,Parallels Desktop 贵又坑,直接放弃,似乎 VMware Fusion 是不错的替代,我尝试了一下,十分无语:VMware Fusion 一直提示我没找到这台 Mac 上的 Boot Camp 分区,我直到后来用 diskutil list 发现我的 Boot Camp 分区的 Name 是我创建的时候改过的 Windows,不是默认的 BOOTCAMP,从而导致找不到 Boot Camp 分区。。 那么,只能用 VirtualBox 来启动 Boot Camp 了,VirtualBox 并没有明显的文档说支持 Boot Camp,我本来并不抱希望,但是网上找了一下有人这么做,我就跟着尝试了一下,并且做了一些改进,最后凑合能用了。

环境准备

  • Boot Camp 安装的 Windows 10 x64;
  • VirtualBox 5.1.26 (我安装的是 VirtualBox-5.1.26-117224-OSX);
  • VirtualBox 对应版本的拓展包 ( Oracle_VM_VirtualBox_Extension_Pack-5.1.26-117224.vbox-extpack ),原作者说并不确定拓展包是否需要,我觉得应该是不需要,但装了可以在宿主机和虚拟机之间共享粘贴板、共享文件夹等,建议安装;
  • 关闭 SIP,原作者说在 El Capitan (OS X 10.11) 上必须关闭 SIP 才能正常使用,更高的系统应该也是一样。

设置磁盘权限

首先,在终端运行 diskutil list 以列出系统中挂载的磁盘,记住 NameEFIBOOTCAMP 的磁盘号, BOOTCAMP 磁盘可能在创建 Boot Camp 分区的时候命名成不同名字,注意 TypeMicrosoft Basic Data 的磁盘。 例如,我的 EFIBOOTCAMP 的磁盘号是1和4。

运行以下命令来取消挂载 Boot Camp 磁盘,设置磁盘权限以使 VirtualBox 可读写它们。其中 BOOTCAMP 可能不同,注意上面的列表中的名字。*每次重启都需要重新运行以下命令*:

diskutil unmount /Volumes/BOOTCAMP

sudo chmod 777 /dev/disk0s1 <--- EFI 磁盘的磁盘号

sudo chmod 777 /dev/disk0s4 <--- BOOTCAMP 磁盘的磁盘号

chmod 777 是不被推荐的权限设置方式,可参考 Linux 的文件权限设置,使磁盘可被 VirtualBox 读写。

创建虚拟机镜像

运行以下命令来创建 VirtualBox 的虚拟机镜像。用 EFIBOOTCAMP 磁盘的磁盘号替换 1,4,用你的 macOS 用户名替换 your_username_here

sudo VBoxManage internalcommands createrawvmdk -rawdisk /dev/disk0 -filename windows10.vmdk -partitions 1,4

sudo chown your_username_here *.vmdk

VirtualBox 设置

  1. 打开 VirtualBox,新建一个虚拟机;
  2. 名称输入 Windows10 将自动选择 Windows 10 x64 版本;
  3. 分配内存建议选择 4G;
  4. 选择使用已有的虚拟硬盘文件,位置在 你的个人文件夹/windows10.vmdk
  5. 进入刚创建好的虚拟机的设置-系统-主板-拓展特性-启用 I/O APIC、启用 EFI,选中;
  6. 虚拟机的设置-系统-处理器-处理器数量,设置为和你的 Mac 的 CPU 核心数相同,设置-系统-处理器-拓展特性-启用 PAE/NX,选中;
  7. 设置-显示-屏幕-硬件加速-启用 3D 和 2D 加速,选中设置-显示-屏幕-显存大小,设置为 256MB,必须要选中一次 3D 加速才可以设置成 256MB,否则最大只有 128MB。也可以选中高清 HiDPI 支持,但我测试此项会和 3D 加速冲突,使虚拟机屏幕闪烁,只能选择其一。高清 HiDPI 支持可以更加清晰,但更卡, 3D 加速清晰度和分辨率较低,启动时载入更慢,但相对卡顿小,我建议选择启用 3D 加速;
  8. 设置-存储-属性-使用主机输入输出(I/O)缓存,选中。确认控制器是否 SATA,经测试 NVMe 将导致启动失败。

启动虚拟机

等待进入系统后,多尝试几次调节右下角显示器设置-自动调节显示器尺寸选项、虚拟显示屏1的分辨率,达到最好的显示效果,还可以配合 Moom 调整窗口大小。

VirtualBox 似乎不能正常关闭虚拟机,可以直接用 Windows 的关机。

虚拟机启动 Windows 后需要重新激活。

Enjoy!

恢复挂载 Boot Camp 分区

使用系统自带的 磁盘工具.app 可以方便地装载/卸载 Windows 分区,卸载时虚拟机才可以启动,装载时才可以在 Finder 浏览文件和利用 Boot Camp 启动 Windows。

参考链接:https://danielphil.github.io/windows/virtualbox/osx/2015/08/25/virtualbox-boot-camp.html


comments powered by Disqus