inst.sh 对于 osx dmg 的支持比想象中简单多了。

跟 windows iso 类似的原理就是把 osx dmg 上的文件解压到硬盘上,最后再 remaster 一下做成硬盘可启动, 美中不足的是它无法注入无人值守设置(当然还有其它跟 win 安装镜像深刻不一样的地方),,具体解包 dmg 做成硬盘可启动布局的细节看 /apps/dipatch_traninstall 源码。

apple osx install app安装镜像都处处防修改,没法,只能整个createmediainstall到一张gpt的sparseimage上再转成为dmg。这对展开过程来说反而省事,缺点就是失去了注入无人值守和其它方面的优势,比如精简支持。只能使用原版本。

这里只介绍下 dmg 支持的使用(跟 winisoinstall 篇一样不使用脚本演示,直接用 installpanelcf 演示,流程全程可见,且清晰):

准备硬件和 efi

需要准备一台efi的独服,而不是bios或efi的vps,虽然opencore支持bios,但流行的普遍支持方案是为efi而作,另外,vps不像独立物理主机,虽然osx的virtio支持也不错,但还是那句,流行的普遍支持方案不是为vps而作(比如嵌套cpu需要msr)
另外,需要独服支持kvm或amt或IPMI或vnc来调试efi文件和配置,虽然inst.sh曾弄过循环grub-boot嵌入自身到菜单,但后来废弃了。

关掉硬件bios中的secure-boot和raid改成ahci这种。

首先,把你的机器装成 win,下载 https://github.com/lzhoang2801/OpCore-Simplify , 启动 OpCore-Simplify.bat 先导出硬件,然后指定 osx 版本,生成 efi 文件夹,删掉里面的 boot 文件夹仅留 oc,然后对 efi 文件打包成 7z

然后准备你的仓库和调试基础 (如果接下来 DD 一次成功,这步是可选的)

fork https://github.com/minlearn/inst , 替换_build/release/inital 中的 efi-default.7z, 把 7z 中的 oc/config.plist 解出来放_build/release/inital,修改 /apps/dipatch_traninstall 把 wget config.plist 注释打开和 cp -f config.plist 到 oc 打开

当然,如果你省掉这一步,在接下来的开始 dd 中一遍通过,这步完全不需要 (直接在下一步使用 inst.sh 面板和仓库即可),fork 仓库这步是为接下来调试准备的。

开始 dd 和调试

然后把你的机器重装成 debian,直接下载 inst.sh 的 instsupportforwin.exe 就地 dd,打开 inst.sh 网页服务:

root 登录,target 选择某个 osx dmg,把 repo 镜像改成你的仓库 https://github.com/你的仓库名 /inst/raw/master ,然后点击命令预览下面的长条 execute install 按钮开始安装即可。等 debconf 连上,即可连上右上的 vnc 查看进度。
全程无须啥多余手动操作。
差不多 debconf 失联一会,就可以连目标 ip 的 vnc 了,从这里开始,你需要重启到 recovery 或 ipmi 下调试 efi 直至安装和启动都成功。

关于efi调试:

关于生成的配置文件可能不适用你的独服。黑苹果调试,最重要的永远是acpi表,如果这个调通,可以解决在config.plist层的相当多的问题(比如nvme不认拉,黑屏拉~)

所以你往往需要多次调试才能成功看到osx安装器启动。github上也有一些配好的efi文件。

使用以下命令在 recovery 下或 ipmi 下测试和刷新你硬盘上的 config.plist:

mkdir p3;mount /dev/你的硬盘名p3 p3
wget --no-check-certificate https://github.com/你的仓库名/inst/raw/master/_build/releases/download/inital/config-default.plist -O p3/EFI/OC/config.plist

祝你玩得开心!!


至于脚本用法,还是给一下:

命令参考:

wget -qO- inst.sh|bash -s - -t https://guest:[email protected]/dav/osx11/macos-bigsur-11.7.11-20g1443.dmg_000:https://guest:[email protected]/dav/osxp2/macos-bigsur-11.7.11-20g1443.dmg_001

项目地址:
https://github.com/minlearn/inst
https://github.com/lzhoang2801/OpCore-Simplify

演示视频:
无(面板一图即够,无须过程演示)