使用 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
以列出系统中挂载的磁盘,记住 Name
为 EFI
和 BOOTCAMP
的磁盘号, BOOTCAMP
磁盘可能在创建 Boot Camp 分区的时候命名成不同名字,注意 Type
是 Microsoft Basic Data
的磁盘。 例如,我的 EFI
和 BOOTCAMP
的磁盘号是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 的虚拟机镜像。用 EFI
和 BOOTCAMP
磁盘的磁盘号替换 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 设置
- 打开 VirtualBox,新建一个虚拟机;
- 名称输入
Windows10
将自动选择 Windows 10 x64 版本; - 分配内存建议选择 4G;
- 选择使用已有的虚拟硬盘文件,位置在
你的个人文件夹/windows10.vmdk
; - 进入刚创建好的虚拟机的设置-系统-主板-拓展特性-启用 I/O APIC、启用 EFI,选中;
- 虚拟机的设置-系统-处理器-处理器数量,设置为和你的 Mac 的 CPU 核心数相同,设置-系统-处理器-拓展特性-启用 PAE/NX,选中;
- 设置-显示-屏幕-硬件加速-启用 3D 和 2D 加速,选中设置-显示-屏幕-显存大小,设置为 256MB,必须要选中一次 3D 加速才可以设置成 256MB,否则最大只有 128MB。也可以选中高清 HiDPI 支持,但我测试此项会和 3D 加速冲突,使虚拟机屏幕闪烁,只能选择其一。高清 HiDPI 支持可以更加清晰,但更卡, 3D 加速清晰度和分辨率较低,启动时载入更慢,但相对卡顿小,我建议选择启用 3D 加速;
- 设置-存储-属性-使用主机输入输出(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