听说macOS上可以正常运行一个软件,又不想买MAC, 怎么办, 装个虚机呗。

KVM安装的巨大坑

我是参照这个网页(https://zhaoyongtao.github.io/posts/638d5663/)来用KVM来安装macOS虚机的,结果遇到一个巨大巨大的坑。
就是都照着那个网页的步骤做了之后,启动虚机时报和这个网页同样的错:

internal error: process exited while connecting to monitor: 2017-04-05 T06\:\25:53.648209Z qemu-system-x86_64: -drive id=MacDVD,if=none,snapshot=on,file=/opt/Install_macOS_Sierra_OS_X_10.12.iso: Could not open ‘/opt/Install_macOS_Sierra_OS_X_10.12.iso’: Permission denied

网上提到的方法全部用尽,问题依旧。结果看到这个网页提到了这个问题, 它说解决的办法是安装selinux模块,安装之后重启机器就再也起不来了。
因为我的机器已经快半年没重启了,启动时总是在systemd启动一些服务时超时然后反复循环巨慢无比且进不了系统, 于是进恢复模式禁用掉这些服务之后,问题依旧。
正在无计可施之时,想到了是不是因为安装了selinux的原因,于是删除selinux并安装apparmor之后就成功进入系统了。
有意思的是, 进入系统之后, 上面的错误居然也自动消失了。 当然,继续启动虚机时还是出错, 可以是OSX-KVM的bug太多吧, OSX-KVM也没有专门和Sierra版本匹配的功能,只能放弃。
这个让机器起不来的巨坑让我调试了一下午。

VirtualBox安装macOS

然后, 发现VirutalBox安装macOS要顺利的多。参照的是这个网页: https://medium.com/@twister.mr/installing-macos-to-virtualbox-1fcc5cf22801

1, 照上面网页中的图配置其他部分
2, 运行下列命令:

VBoxManage modifyvm "MacOS" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
VBoxManage setextradata "MacOS" VBoxInternal2/EfiGopMode 4

刚开始启动虚机时也是报内核错误,但同样的上面的命令多执行了几遍再试时莫名其妙地又不报错误了(其实报错误时也是执行了上面命令的), 然后顺利安装成功

sudo systemsetup -setremotelogin on
ssh hua@127.0.0.1 -p2222
Command+Shift+. 可以显示隐藏文件

感想

感觉systemd还是挺不好的,挂在内核好办,系统起来之后挂在systemd处也好办, 现在是系统还没起来挂在第一个用户态进程systemd处还真挺难办的.