ThinkPad E480 黑苹果踩坑和黑苹果常用操作备忘
由于囊中羞涩,只好一部 ThinkPad 商务本凑合一年有余。最近赋闲在家无事可干,打算更新一下开发环境。Windows 搭配 Cygwin 的选择毫无疑问被排除在外、WSL 的 IO 性能无法直视、开源拖拉机 Linux 的生态一时半会无法适应。想来想去,不如装个黑苹果(Hackintosh)过把用 macOS 的瘾。
本文前半部分会记录我在 ThinkPad E480 上踩过的几个坑和解决方法,后半部分则是我自己备忘的黑苹果的相关知识。我不是专业安装黑苹果的玩家,在短期内 我也不会考虑开源我的 EFI。 EFI 已使用 Unlicense 开源协议在 GitHub,地址。
ThinkPad 黑苹果无线网卡
ThinkPad E480 出厂时搭载的无线网卡是 Realtek 8821CE Wireless LAN 802.11ac PCI-E NIC
,目前没有办法驱动。
目前最好的选择是换装 DW1560
,在 macOS 下毫不费力就可以驱动,在 Windows 下也能轻易驱动。不推荐用 DW1820A
,在 ThinkPad 系列机型上都需要屏蔽识别针脚、在系统中容易引发冻屏。而且 DW1820A
有的批次可以轻易驱动、有的则难如登天。如果你执意要趟坑 DW1820A
,请参考 黑果小兵的这篇文章。
AppleALC 驱动声卡
ThinkPad E480 的内置的声卡是相对罕见的 Conexant CX20753/4
。但是好消息是,MacPeet 为 AppleALC 添加了 CX20753/4
支持(layout-id: 15
),而且 MacPeet 的机型是 ThinkPad E580、是 ThinkPad E480 的姊妹机型。在实际测试中,layout-id
取 3
或者 15
都可以驱动 ThinkPad E480 的声卡,3.5mm 耳机接口和外放都可以正常使用。
触摸板、键盘、ThinkPad 小红点驱动
建议使用 Rehabman 版本的 VoodooPS2Controller 而不是 acidanthera 的 VoodooPS2Controller。Rehabman 版本的驱动可以直接不加修改和配置即可在黑苹果中直接驱动键盘、触摸板、ThinkPad 标志性的 TrackPoint(小红点)和 ThinkPad 触摸板上部的三个按键(ThinkNav)。如果睡眠唤醒以后,触摸板无法使用、而小红点和 ThinkNav 三个实体按键可以使用,那么可以尝试重建 Kext 缓存。
使用 acidanthera 的 VoodooPS2Controller 和 VoodooInput 成功驱起来了触摸板、ThinkPad 小红点(TrackPoint)和触控板的三个实体按键(ThinkNav)。可能需要额外打一个 SSDT-ThinkPad_Clickpad
的 hotpatch,我直接找了网上姊妹机型 E470 现成的 SSDT-ThinkPad_Clickpad.aml
扔进去。
电量百分比显示
优先使用 VirtualSMC
和 SMCBatteryManager
驱动。使用 FakeSMC
搭配 Rehabman 的 ACPIBatteryManager 虽然也可以实现电量百分比显示,但是电源状态显示不准确(插着 AC 仍然显示电池供电、反之亦然)。
显卡驱动
ThinkPad E480 2018 款使用的是 Intel Core (Kaby Lake) i7-8550U
,核显型号是 Intel UHD Graphics 620
,通过修改 platform-id
伪装成 Intel HD Graphics 620
,相关资料有黑果小兵的 Intel 核显 platform ID 整理及 smbios 速查表 和 Hackintool(原Intel FB-Patcher)使用教程及插入姿势 中关于缓冲帧补丁的相关章节。以下是我的缓冲帧信息:
在 Clover 的 config.plist
中可以修改核显显存为 2048MB,推荐使用 Plist Edit Pro,定位到 Root -> Devices -> Properties -> PciRoot(0x0)/Pci(0x2,0x0) -> framebuffer-unifiedmem
,数据类型为 Number
,修改数值为 2147483648
(2048 MB 转换为字节数),效果如下图所示:
ThinkPad E480 内置一块 Radeon (TM) RX 550 (2GB)
独立显卡,只能屏蔽掉。屏蔽掉独显以后风扇竟然不会乱转,应该说运气不错。
ThinkPad 黑苹果休眠、睡眠和唤醒
往 EFI/CLOVER/kexts/Other
下面扔一个 HibernationFixup.kext
,然后在启动参数里加上 -hbfxbeta
,就可以实现 hibernatemode 3
休眠了。
如果合盖后遇到偶发性的随机唤醒,禁用 proximitywake
即可:
sudo pmset -a proximitywake 0
「合盖后随机唤醒」指,合盖后 ThinkPad A 面的红色指示灯开始闪烁、表示设备已经睡眠;一会以后指示灯进入常亮,但此时开盖屏幕不会点亮。
如果还遇到各种奇奇怪怪的休眠唤醒问题,建议直接禁用掉休眠相关选项:
sudo pmset -a hibernatemode 0
sudo rm /var/vm/sleepimage
sudo mkdir /var/vm/sleepimage
sudo pmset -a standby 0
sudo pmset -a autopoweroff 0
ThinkPad USB 定制与蓝牙
博通无线网卡(DW1560
和 DW1820
)上的蓝牙模块是接在 USB 总线上的,如果 USB 定制时如果类型设置为「Internal」后、可能主板就不会给蓝牙模块供电了(开机后「系统报告」里显示找不到蓝牙设备)。
虽然一般不推荐用 SSDT-USBX
模拟苹果 USB 供电(苹果大功率 USB 供电可能烧坏设备),不过查阅 ThinkPad 手册后发现 ThinkPad 的 USB 接口的设计载荷是满足要求的。使用 SSDT-EC-USBX
模拟苹果 USB 供电以后,蓝牙也可以在 USB 定制时选用「Internal」内建了。
SATA SSD 固态硬盘开启 TRIM
在终端中使用下述命令强制开启第三方 SSD 的 TRIM。
sudo trimforce enable
执行完上述命令后会自动重启。如果重启后「关于本机 - 系统报告」中还显示 TRIM 未开启,则需要通过 Clover Configurator 打个补丁。在 Clover Configurator 中打开 config.plist
,左边侧边栏选择 Kernel and Kext Pathches
,添加下述补丁:
- Name*:
IOAHCIBlockStorage
- Find*[HEX]:
4150504C452053534400
- Replace*[HEX]:
00000000000000000000
如何获取黑苹果相关资料
国内黑苹果的社区寥寥无几,威锋相关板块冷冷清清,而远景论坛(PCBeta)非常封闭、注册门槛也很高。而且国内黑苹果社区中知识都非常零散、并不系统,大部分帖子中的经验都主要针对特定机型和驱动,不具备普适性。
我在获取安装黑苹果的相关知识时,首先将目光放在了国外的几个著名的黑苹果社区。而国外最有名的黑苹果社区莫过于 tonymacx86 和 insanelymac。除此以外,r/hackintosh 上也有不少相关交流。除此以外,一些中文博客上也有详细而实用的黑苹果相关的知识,我自己比较常看的是 黑果小兵的部落阁 和 XJN’s Blog。
GitHub 和 Bitbucket 是获取黑苹果相关资源的一个好去处。GitHub 上可以获取到大部分驱动的最新版本——AppleALC、VoodooPS2Controller、HoRNDIS 等等,而且也有很多黑苹果玩家在 GitHub 上分享自己的 EFI。
常用工具
截至本文写就,OpenCore 和 Clover 是目前最常用的黑苹果引导工具。虽然 OpenCore 优势多多,但是 OpenCore 相关资料较少,而 Clover 相对更加成熟、资料也充足。虽然 Lilu、AppleALC 等插件已经优先兼容 OpenCore,但是也有很多实用驱动如 FakeSMC 和 VoodooPS2Controller (Rehabman) 仍然是面向 Clover 开发的。
Clover 和黑苹果常用的工具有:
- Clover Configurator
- HackinTool
- PlistEdit Pro
- CPU-S 或 Intel® Power Gadget
使用 HackinTool 重建 Kext 缓存、修复权限
可能是最简单的重建 Kext 缓存的方法、不需要 Kext Utility、也不需要在 Terminal 里敲命令。
打开 HackinTool 中的「Tool」选项卡,点击底部操作栏最右边的按钮(如果将光标悬浮在这个按钮上,你可以看到这个按钮的注释是「Rebuild KextCache and Repair Permissions」),输入密码即可。
使用 HackinTool 升级驱动
打开 Hackintool,找到 Installed
选项卡,点击下面控制栏最左边的按钮,检查驱动版本:
红色的是存在更新版本的驱动。勾选需要升级的驱动,点击下面控制栏中间的按钮开始下载。
驱动会保存在桌面上 HackinTool_Kexts
目录中。手动挂载 EFI 分区,并在 Finder 中将 kext
文件手动覆盖进 EFI/CLOVER/kexts/Other
目录中即可。
升级 Clover
使用 Clover Configurator 可以直接下载执行 Clover Installer。打开 Clover Configurator,在左边侧边栏点击 TOOLS
下的 Install/Update Clover
,然后点击右下角 Check Now
开始获取你现在使用的 Clover 版本以及可以下载到的最新版本。
勾选 Package
(下载 Installer)和 Save to Desktop
,然后点击右下角的 Update
。耐心等待一会,下载成功后会自动打开安装界面(如果没有,去桌面找找 pkg 文件)。
如果觉得打开软件太麻烦,可以前往 SourceForge 或 GitHub 直接下载安装器 pkg 文件或
CLOVERX64.EFI
文件。
安装器可能会提示 This package will run a program to determine if the software can be installed.
,点击 Continue
即可。在安装界面,连续点击右下角的 Continue
直到到达「安装类型」(Installation Type
),选择「自定义」(Customize
)。
在自定义界面,手动勾选 仅安装 UEFI 开机版本
(Clover for UEFI Booting Only
) 和 安装 Clover 到 EFI 系统区
(Install Clover in the ESP
),如下图所示。
现在可以点击右下角的 安装
了。
生成三码以使用 iMessage、FaceTime、iCloud
- 使用 Clover Configurator 打开
config.plist
。左侧边栏选择SMBIOS
,复制Serial Number
前往 Apple 官网查询序列号 ,如果显示有购买日期和机型等保修信息,说明这个序列号别人在用,不建议使用,点击Generate New
生成新的Serial Number
,直到出现提示:「很抱歉,这个序列号无效。请检查您的信息并再试一次」。 - 左侧边栏选择
System Parameters
,生成一个 UUID,系统生成或随机生成都可以。
- 复制生成的 UUID 粘贴到
SMBIOS
的SmUUID
里(位于Serial Number
右边),保存。 - 复制
SMBIOS
里的Board Serial Number
,粘贴到Rt Variables
的MLB
里,保存之后,点击ROM
的获取,确保下方三码正常匹配自己生成的,保存重启即可。
双系统时间同步
Windows 把系统硬件时间当作本地时间,即操作系统中显示的时间跟 BIOS 中显示的时间是一样的。而 Linux / macOS 把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是 GMT+8
,则系统中显示时间是 硬件时间 + 8
。
解决方法是修改 Windows 对硬件时间的对待方式,让 Windows 把硬件时间当作 UTC,在 CMD 中执行下述命令即可:
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
笔记本完美黑苹果八项检查
- 使用 CPU-S 进行「变频测试」,二档够用、八档以上优秀。
我这个 12 档全都是睿频是怎么回事(
- 分辨率和显存显示正常,支持 DP、HDMI 外接显示,风扇不持续高速旋转,原生亮度调节正常
- VoodooHDA 能响,如果是 AppleALC 就优秀
- 以太网需位于 en0;无线支持 2.4G/5G 双频,支持 AirDrop 和 Handoff 优秀
- USB 接口 2.0/3.0/3.1 均能识别,3.0 及以上接口的识别速度应有 5G/s
上述五项是黑苹果使用的最低需求。
- 系统偏好设置正常识别电池电量状态
- 合盖睡眠,开盖唤醒后正常点亮不黑屏
- 自带键盘和触摸板都能正常使用
如果满足上述三项,则这台黑苹果已经可以满足主力使用需求了。打开「关于本机 - 系统报告」检查其他几项:
NVMExpress
和SATA/SATA Express
中均显示 TRIM 支持已开启
小版本系统的直接更新
一般的小版本更新,如 macOS 10.15.2 升级 10.15.3 可以直接在系统内升级。在「系统偏好设置」或「关于本机」中进去系统更新检查。当进度条走完后点击重启,在 Clover 引导界面会出现 Boot macOS install from xxxxx
,方向键选中并按空格,勾选 Verbose(-v)
和 nv_disable=1
后再启动。跑完日志和进度条后会开始升级、自动重启,如果重启后 Clover 中的 Boot macOS install from xxxxx
没有消失则重复上述操作(一般系统更新也需要二次安装)。升级成功后 Clover 引导界面下的 Boot macOS install from xxxxx
会消失。选择 Boot macOS install from xxxxx
进入系统即可。