由于版权的关系,MacOS 目前只能在苹果自家的硬件设备上运行,虚拟机方面只有 VMWare。本文介绍一种在 Linux KVM 下运行的方式,请确保在 MacOS 下运行你的 Linux 虚拟机,当然一般的 Linux 系统可以, 但是因为版权的问题,责任自负 :-)
目前苹果 QEMU 虚拟机只能在 UEFI 模式下启动,在这里你需要先下载一个特殊的UEFI固件。
下面,我将手把手教你在 KVM 下安装运行你的苹果操作系统
1. 准备一个 USB 启动盘
请参考此处
2. 设置你的 UEFI 固件
已测,最新的 OVMF 版本即可,不需要而外的 patch
3. 准备 QEMU
推荐 2.10 以上,或者 2.9 但合并了 patch“77af8a2b95b79”
hw/i386: Use Rev3 FADT (ACPI 2.0) instead of Rev1 to improve guest OS support
4. 创建系统盘
请参考此处脚本文件
5. 使用 Libvirt 管理你的虚拟机,参照以下步骤生成你的 libvirt 配置文件
第一行,添加
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
复制代码
然后加入 UEFI 引导文件
<os>
<type arch='x86_64' machine='pc-q35-2.10'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
<nvram template='/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd'>/var/lib/libvirt/qemu/nvram/macos-test-org-base_VARS.fd</nvram>
<bootmenu enable='yes'/>
</os>
复制代码
设置 CPU
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Penryn</model>
<feature policy='require' name='invtsc'/>
</cpu>
复制代码
设置系统盘
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/>
<source dev='/dev/path/to/lvm/volume'/>
<target dev='sda' bus='sata'/>
</disk>
复制代码
设置网络
<interface type='network'>
<source network='default'/>
<model type='e1000-82545em'/>
</interface>
复制代码
加入 usb 外设
<input type='tablet' bus='usb'/>
<input type='keyboard' bus='usb'/>
复制代码
设置标准视频输出
<video>
<model type='vga' vram='65536'/>
</video>
复制代码
添加额外的 SMC 外设,因为 libvirt 还不支持,我们在这里通过 QEMU 命令行来实现
<qemu:commandline>
<qemu:arg value='-readconfig'/>
<qemu:arg value='/path/to/macintosh.cfg'/>
</qemu:commandline>
复制代码
macintosh.cfig 文件如下:
[device "smc"]
driver = "isa-applesmc"
osk = "<insert-real-osk-here>"
复制代码
6. 直接使用 QEMU 命令行管理你的虚拟机
qemu-system-x86_64 -machine q35,accel=kvm -bios ~/OVMF.fd -m 4096 \
-cpu Penryn -smp 4,cores=2 \
-usb -device usb-kbd -device usb-tablet \
-device isa-applesmc,osk="insert-real-64-char-OSK-here" \
-netdev user,id=usr0 -device e1000-82545em,netdev=usr0,id=vnet0 \
-device ide-drive,bus=ide.2,drive=MacHDD \
-drive id=MacHDD,if=none,file=~/mac_hdd.img \
-monitor stdio
复制代码
结语:
这样,我们就可以在 Linux 的 KVM 下运行苹果操作系统了。
Enjoy, have a lot of fun!
参考:
http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/
https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/
评论