Hackintosh黑苹果+外置网卡+Null Ethernet通过App store验证
首先,我要说下为什么要网卡内建?在某些特殊的情况下, 比如说网卡驱动不行,版本不合适等等这些原因,会导致你的iTunes、iBooks、APP store无法登陆,会提示无法验证此Mac。出现这种情况就说明你的网卡没有内建。
上面引自一篇网卡内建教程。坑爹的是,教程中只提到了如何将已经驱动起来的PCI网卡设置为内建,对本来就是外置的USB网卡却无能为力。
还有一条路是使用OS-X-Null-Ethernet
,该软件的思路是在系统中虚拟出来一个内建网卡。此网卡虽然不能用来上网,但可以欺骗App store
使其认为机器是有内置网卡的,然后拿这个网卡的信息去验证。显然,苹果不会给这种项目发签名证书的,如果走这条路,需要关闭SIP功能(System Integrity Protection)。
OS-X-Null-Ethernet
官方教程是英文且并不详细,显然是写给高手看的,我研究半天才看懂。网络上其他地方关于OS-X-Null-Ethernet
的教程很少,且无一例外漏掉了非常重要的一步内容(可能是因为后来苹果重新加了一条验证规则),造成验证失败,本文将之补全了。
适用范围
- 主板原装网卡无解
- 笔记本,无法加装PCI网卡
- 不想或不能更换网卡
以我的机器为例,是小米Pro顶配版,内置网卡是无解的intel。有些本子可以自己加一个或者换一个网卡,也就五六十块钱就好了,偏偏此机的无线网卡是焊死的,也没有其他能插内置无线网卡的接口。拿个迷你USB无线网卡其实用起来也没多大不便,但是堵死了常规方法做内建网卡的路径。
下文提到的资料和软件,链接见文末“参考资料”。
替代办法
前置说明:摸索出来这个办法之后,我跟其他人交流,发现可能有更简单的办法,但是没有条件尝试(因为我的验证已经过了),所以将这些可能性列在下面,供对自己人品有信心的人尝试:
- 找一台白苹果或者iPhone,把账户在正版设备上登陆一次,也许就不需要验证了;
- 科学上网;
操作步骤
以下教程针对基于Clover
的黑苹果,使用变色龙等方案的可以参考执行。
- 数字列表项目
- 首先,下载预编译的
OS-X-Null-Ethernet
并解压,对预编译不放心的可以下载源码自己编译; - 挂载
EFI
分区; - 复制
Release/NullEthernet.kext
到EFI/CLOVER/kexts/Other/
文件夹; - 此时重启,开机后在
系统偏好/网络
中点+
符号,应该已经能看到一个以太网
项目;如果添加它,可以在高级/硬件
中看到它的MAC
地址为11:22:33:44:55:66
; - 不要激动,此时还是不能用的;如果你此时去
App store
进行认证,会卡在填写支付方式那一项,也不说原因,就是让你联系支持; - 但是如果你此时连这个网卡都看不见,说明kext没有加载成功,需要找找原因,例如
SIP
还没关闭;可以用kextstat | grep -i NullEthernet
命令测试到底有没有加载成功; - 下一步,将解压出来的
ssdt-rmne.aml
文件,拷贝到EFI/CLOVER/ACPI/patched
目录;一般此文件夹中已经有了几个补丁;强迫症可以将文件重命名一下,没关系的; - 最关键的一步来了。网上的其他教程的核心部分都是到上一步为止,但我机器上仍然过不了验证。经我测试,还有很关键的一步是:把默认的
MAC
地址11:22:33:44:55:66
改成一个看起来真实一点的地址;这个验证可能是苹果后来加的;修改方法继续往下看; - 下载
MaciASL
软件,安装运行; - 用
MaciASL
打开刚才拷贝进去的*.aml
文件;*.aml
是编译过的文本文件,直接打开只能看到base64
编码一类的东西,但MaciASL
可以把它们反编译成类似如下的源码:<code> DefinitionBlock (“”, “SSDT”, 2, “RehabM”, “RMNE”, 0x00001000) { Device (RMNE) { Name (ADR, Zero) ADR: Address Name (HID, “NULE0000”) _HID: Hardware ID Name (MAC, Buffer (0x06) { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66
}) Method (DSM, 4, NotSerialized) _DSM: Device-Specific Method { If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x03
}) } </code> - 修改Name (MAC, Buffer (0x06)
下面的一行,0x11, 0x22, 0x33, 0x44, 0x55, 0x66
中的11,22,...
修改成1A, 3F
一类的,前缀0x
不要动,最后结果应该是0x1A, 0x2B, 0x3F, 0x4C, 0x5D, 0x61
这样的,但是不要照抄; - 我建议用你的外置网卡MAC
地址为基准,末尾两位稍微变动一下作为此虚拟网卡的地址; - 点击“编译”,如果没有错误,File/Save
保存;可以尝试再次打开此*.aml
以确认修改成功; - 重启,运行命令ifconfig
,查看网卡地址是否修改成功;同时检查修改过的网卡标识是否为en0
; - 如果不是,按如下步骤操作: + 删除/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
(其实我机器里没有这个文件……) + 在系统设置偏好里/网络 里删除所有网络连接 + 重新启动 + 重新在系统设置偏好里/网络 里加所有网络连接,这次记得首先添加“以太网”一项,也就是虚拟网卡 - 虚拟网卡的IP设置为自动获取就好; - 再次检查:关于本机/系统报告/网络
一项,应该是类似下午那副图那样的。 - 如果都没问题,去登陆App store
吧!# 参考资料 黑苹果有线网卡DSDT内建等方法汇总整理 OS-X-Null-Ethernet源码发布地址 预编译的OS-X-Null-Ethernet MaciASL发布地址 关闭SIP验证 macOS安装教程兼小米Pro安装过程记录