Installing macOS Ventura on PVE7.2
为什么要这样做
要是有钱,MacPro拉到顶配,稳定又省心,干嘛要去折腾黑苹果。而且现在的M1 mac据说“生产力”(剪视频)特别牛,收台macmini M1 16+1T大概在7000块一台,我认为如果是拿苹果干活生产的就没必要折腾黑苹果了,系统不稳定工程挂了损失大,而且现在除非自己有闲置的二手硬件,组黑苹果不太值得玩。
那为什么要在虚拟机里面开黑苹果呢?虚拟机有个好处是屏蔽硬件底层,在网上有大神已经搞好了PVE适配的黑苹果安装方式,那么自己的电脑如果不是特别老,能装上PVE的话,基本都能成功点亮黑苹果,就不用自己去操作底层EFI(不同的机型需要特定的EFI),但是运行在虚拟机里面也有那么一些不好的地方,像是有那么一点性能损失、宿主机系统需要占用内存、直通用起来有那么一点膈应……
我是正好组了台新(里面大部分也是二手拆机)的server,然后有多余的硬件资源出来,就在上面整一个黑苹果体验体验,相当于0元购入mac mini 16+512,何乐而不为呢?当然这有个前提是我还有一台稳定的windows大奶台式机,黑苹果只是玩玩+体验,不是用来干生产力的。
参考教程
Installing macOS 13 Ventura on Proxmox 7.2 – Nicholas Sherlock (nicksherlock.com)
nicksherlock的博客
提示
如果需要参考本文进行配置,默认你已经懂得Linux基本操作(命令行、ssh、git、编译),已经成功安装PVE以及有创建PVE虚拟机的经验。
硬件配置
我的硬件平台是 EPYC 7302P,Rome二代,16核32线程,泰安S8030主板,给到黑苹果的是RX560 4G显卡,母鸡(Host)操作系统是PVE 7.2。
这个RX560显卡是240块从小黄鱼收的,说是白牌(无牌)公版卡,刷入gigabyte的显卡bios开核,换了MSI的散热。太灵了,但是我那机箱只能用短显卡,短显卡普遍偏贵,这个卡就入来玩玩,一开始死活点不亮黑苹果然后去刷显卡bios,刷一圈后刷回原来的gigabyte bios,后面才发现是虚拟机直通显卡的时候不能勾选"pcie",否则点不亮。
比起Monterey系统,Ventura系统的硬件要求要高一些,Ventura系统需要CPU支持AVX2,在Intel里面最早到Haswell(4代酷睿、E5 v3、E3 v3),另外AMD的GPU需要GCN4.0以上(Polaris架构的RX460 560开始)
创建恢复镜像
从thenickdude大神的GitHub仓库克隆到自己的本地目录
|
|
这里我用的是Linux系统的另一台电脑(当然PVE里面可以创建一个ubuntu的LXC容器,用完就删掉)先安装需要的工具
|
|
然后去make它
|
|
这个操作会从Apple的软件分发服务器下载ventura安装包,然后build一个叫“Ventura-recovery.img”的恢复镜像。
等待一段时间后,在当前目录下有“Ventura-recovery.img”文件,把它上传到PVE的iso存放目录。
下载OpenCore
从thenickdude的仓库下载OpenCore镜像文件(需要v19及以上版本),解压,同样上传到PVE的iso存放目录。
Releases · thenickdude/KVM-Opencore (github.com)
查找OSK
macOS的osk,是一串64长度的字符串,自己找^_^
因为每一台Mac用的都是同一串osk,不必为了这串osk看起来不像是随机字符而感到惊讶。
创建虚拟机
完成创建虚拟机后,从“硬件”页面添加一个IDE0的iso:“Ventura-recovery.img”
这个时候不要急着开虚拟机,用命令行(网页Shell或者ssh自行选择)修改一下这个虚拟机的conf文件,我习惯用vim,当然nano也可以编辑。
|
|
这个“103”是我刚刚创建的虚拟机的ID,需要替换成自己的。添加一行参数
|
|
确保这行参数在一行里面。
在AMD平台,如果虚拟机无法开机的话,把“-cpu host”换成“-cpu Haswell-noTSX”(我的EPYC罗马CPU需要做这一步,否则无法开启macOS虚拟机)
然后在这个conf文件里面,把ide0和ide2(两个ISO)的“media=cdrom”换成“cache=unsafe”
:wq!
退出vim,保存文件。
设置PVE
为了避免重复启动MacOS,执行这条命令
|
|
为了让每一次pve重启都有效,执行这条命令
|
|
安装MacOS
先在虚拟机的设置选项把opencore的引导设置在第一位
然后开机进入虚拟机
先进去格式化磁盘
右上角erase它,名字随便取,Format要选择APFS
完成格式化后点击“Done”,点击左上角叉出去。选择“reinstall”,continue
装入到刚才格式化的硬盘里面
每一次重启都选择“macOS Installer”
最后两次重启是选择刚才格式化的硬盘的名字"hackintosh",反正不要选那个Base System就行。
重启几次之后进入系统,开始初始化设置,建议不要开启定位、登录Apple ID账号之类的。
完成初始化后,就可以通过web控制台看到界面了
这个时候MacOS已经安装成功,但是还需要后续的一些设置。
关机,在虚拟机的“硬件”把recovery恢复镜像分离掉,重新进入系统。
复制OpenCore到EFI分区
现在还是从opencore引导进入系统,最好能直接从虚拟磁盘引导进入系统而不是OpenCore,而且后面需要更改OpenCore的EFI内容,为的是不污染原有的镜像,以及允许后续的“快照”功能(需要每一个虚拟磁盘都是qcow2)。只要把OpenCore复制到虚拟硬盘的EFI分区就可以了。打开terminal
|
|
看到disk2s1就是OpenCore的EFI分区,disk0s1是虚拟磁盘的EFI分区,把disk2s1覆盖disk0s1就可以了
|
|
dd命令是直接写入的命令,if后面是源,of后面是目标,注意不要敲错目标了,不然一切要重新来过。完成后关机,从虚拟机的“硬件”中分离OpenCore镜像,从“选项”中选择virtio磁盘为启动盘。这个时候可以做“快照”(如果刚才创建虚拟磁盘和EFI分区都是用qcow2而不是raw格式的话,我的步骤就是这样的)
“快照”是qcow2格式才可以做的,这样自己在后续的操作中如果出现问题,可以通过快照回滚恢复到之前的状况,例如手贱点到系统大更新结果无法进入黑苹果,或者某个配置出错导致系统烂掉。强烈建议做快照。
开机自动启动
每一次开机都要选择“hackintosh”硬盘然后回车,这个有点麻烦,所以对opencore修改一下,这样就不用每次都敲回车了。
首先挂载opencore分区,输入diskutil list
命令,查看EFI分区在哪里
可以看到在disk0s1分区,输入sudo diskutil mount disk0s1
命令挂载该EFI分区
这个时候进入EFI挂载目录
|
|
用喜欢的工具编辑config.plist文件(XML格式文本文件)
在vim里面命令模式输入/ShowPicker
可以直接搜索ShowPicker的内容,把true
值改为false
:wq!
保存退出,重启看看是否可以直接开机进入登陆界面而不用选硬盘敲回车。
修复imessage
icloud和App Store都可以正常登录使用了,但是iMessage还需要一些设置。参考:
https://dortania.github.io/OpenCore-Post-Install/universal/iservices.html
涉及到改OpenCore的内容
如果做了这一步修改,虚拟机的“virtio网卡”的MAC地址要改到跟ROM对应的值。因为涉及到特定的序列号和UUID,我就不贴自己用的了。
进行下一步显卡直通前,做一下虚拟机的“快照”避免翻车。
显卡直通——PVE设置
开启iommu,我这里没有设置屏蔽核显,因为服务器自带有板载显卡给PVE启动的时候用,与PCIE插槽上的独显无关。没有核显or板载显卡的上网寻找教程。
|
|
|
|
|
|
|
|
|
|
更新应用,重启PVE
|
|
给macOS直通显卡和USB
直通显卡需要把kvm去除,去除kvm后无法通过PVE网页登录操作macOS,只能连外接的USB键鼠和显示器来使用macOS。
在虚拟机的“硬件”,添加USB设备,直通USB键鼠:
添加PCI设备,直通显卡
显示选“无”,这样macOS启动就只能从显卡输出了,无法从web控制台用虚拟“kvm”进行操作。
这个时候启动虚拟机,外面连显示器和鼠标,就像是操作一台mac一样。
8核Rome,16G内存,512Gssd,Enjoy it!
存在问题
- 硬盘可以加到1T的,现在SSD大概500块能买到1T,对比白Apple的加硬盘划算很多,但是抠了点不买(摆烂)。
如果有独立的1T“HC550”这种免驱nvme硬盘,可以直接直通给macOS,系统直接安装在这个硬盘上,但是用不了虚拟机qcow2的“快照”功能。 - 没有蓝牙,失去airdrop、handoff等功能,买了一块28软的BCM943224PCIEBT“免驱网卡”,
因为目前有线网可以达到千兆甚至万兆,所以不在意wifi速率,单独加蓝牙功能就好了,这个网卡后面需要自己画PCB转接到USB,不清楚能否成功。
垃圾佬就要有必要时候自己画转接板的能力 : -)