黑苹果
Posted 小猴子日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑苹果相关的知识,希望对你有一定的参考价值。
黑苹果
由于 Linux 系统下企鹅软件的糟糕体验,于是决定转战 macOS。经过一番折腾,成功将 macOS 最新版本 Catalina 10.15.5 安装到 Acer TraveMate P249 笔记本,除 WIFI 之外各项功能基本完美(由于 Apple 使用的都是 Broadcom 无线网卡,机器自带的 Intel 无线网卡无法驱动,目前已有大神移植了驱动,基本可以使用。苹果拆机卡及可以黑苹果的其他 Broadcom 卡价格被 js 炒的太高,不建议购买。如果想要使用 Airdrop、接力和随航,就必须更换无线网卡了)。
工作状态
• CPU 变频、原生电源管理• 核显• 以太网• WIFI• 蓝牙• 声卡• 触控板• 摄像头• USB• HDMI 输出• 关机、重启、睡眠
桌面:
系统版本:
Apple ID:
App Store:
系统安装
网上教程很多,这里就不多说了,系统下载及安装推荐参考黑果小兵的教程[1]。
ACPI 调整
想要在普通 PC 上运行 macOS 就需要对 ACPI 进行调整,特别是笔记本需要大量调整。具体可参考黑果小兵的补丁库 OC-little[2] 。需要了解的知识如下:
•ACPI (Advanced Configuration and Power Management Interface) 高级配置和电源管理接口,是操作系统与 Bios 的中间层,提供上层操作系统对主板上设备的配置以及包含设备在内的整个系统的电源管理进行控制。Apple 对 ACPI 进行了定制,因此普通 PC 安装 macOS 后部分设备是无法识别驱动的。•DSDT (Differentiated System Description Table) 差异系统描述表,是 ACPI 的一张表,包含了除基本系统以外所有不同设备的信息。DSDT 就是我们修改的主角。Clover 引导界面按 F4
键提取 PC 原始 DSDT,保存路径为EFICLOVERACPIorigin
。•ASL (ACPI Source Language) ACPI 的编程语言,新版本的 ASL 语法有点像 C 语言。具体的编码规范可以参考黑果小兵补丁库 OC-little 中的总结。
操作系统补丁
操作系统补丁用于解除系统对某些部件的限制。当系统加载时,ACPI 的 _OSI
函数会接收到一个参数,不同的系统,接收的参数不同,ACPI 执行的处理也不同。当加载 macOS 时,_OSI
函数接受的参数 ACPI 无法识别,于是OSYS
被赋予了默认值,而这个默认值通常小于 Win8 要求的值,导致 I2C 设备(触控板、触摸屏等设备)无法工作(Win8 开始才支持 I2C 设备)。
补丁列表:
•SSDT-XOSI.aml
设备仿冒补丁
EC 设备仿冒补丁
EC (embeded Controller) 嵌入式控制器,是笔记本电脑特有的设备,担负着笔记本内置键盘、触摸板、电池智能充放电管理以及温度监控等任务。如果笔记本原始 DSDT 的中的 EC 设备名称不为 EC
,就需要进行仿冒。而台式机则需要禁用 EC 设备。
补丁列表:
•SSDT-EC.aml
环境光传感器仿冒补丁
从 macOS Catalina 开始,笔记本设备需要仿冒环境光传感器 ALS0
来实现屏幕亮度保存。
补丁列表:
•SSDT-ALS0.aml
注入设备
注入 x86
注入 X86,实现 CPU 原生电源管理。
补丁列表:
•SSDT-PLUG-_PR.CPU0.aml
亮度调节补丁
注入 PNLF,实现屏幕亮度调节。同时需搭配环境光传感器仿冒补丁(必须使用,否则亮度调节之后无法保存)、亮度调节快捷键映射补丁,才能完美使用。
补丁列表:
•SSDT-PNLF.aml
二进制更名与预置变量
禁用 AWAC 启用 RTC
较新的主板启用了 AWAC system clock
功能,而 macOS 无法与 AWAC system clock
进行通信,因此我们需要强制使用旧版 Legacy RTC clock
。经过尝试发现,只需要禁用 AWAC 就会自动启用 RTC。
补丁列表:
•SSDT-RTC_Y-AWAC_N.aml
键盘按键映射补丁
由于普通 PC 键盘键位与 Apple 键盘不一样,我们需要进行键盘按键映射调整。
补丁列表:
•SSDT-RMCF-PS2Map.aml (屏蔽F12、PrtSc SysRq、Pause Break键)•SSDT-BKeyQ8EQ8F.aml (亮度快捷键映射调整)
电池补丁
为了让 macOS 读取笔记本电池电量,需要对电池进行调整。幸运的是我的本子自动识别了电池电量,因此没有打补丁。
0D6D补丁
设备的_PRW
函数定义了设备的唤醒方法。其 Return 2 个或者 2 个以上字节组成的数据包。有这么一些设备,由于 _PRW
和 macOS 发生了冲突从而导致机器刚刚睡眠就被立即唤醒。为了解决问题,必须对这些设备实施补丁。这些设备 _PRW
函数 Return 的第 1 个字节是 0D
或者 6D
。因此,这种补丁被称为 0D/6D 补丁,也叫秒醒补丁,也叫睡了即醒补丁。搜索原始 DSDT 发现电脑 USB 设备的 _PRW
存在问题,需要调整。
补丁列表:
•SSDT-GPRW.aml
I2C设备补丁
为了让 macOS 识别并驱动触控板(只有部分老设备的触控板为 PS2 协议),需要对触控板进行调整。这是我遇到的最难的补丁,没有之一,困扰了我至少一周时间。具体教程参见 enghubingzhou 的博客[3]。
补丁列表:
•SSDT-GPI0-GPEN.aml(打开 GPI 中断)•SSDT-TPDE.aml
驱动
需要额外安装的驱动:
序号 | 驱动 | 说明 |
1 | Lilu | 核心驱动 |
2 | WhateverGreen | 显卡驱动 |
3 | RealtekRTL8111 | 以太网卡驱动 |
4 | VirtualSMC | 虚拟 SMC 设备驱动 |
5 | USBInjectAll、USBPower | USB 驱动 |
6 | SMCBatteryManager、SMCLightSensor、SMCProcessor、SMCSuperIO | 各类传感器驱动 |
7 | VoodooPS2Controller | 键盘驱动 |
8 | VoodooI2C、VoodooI2CHID | 触控板驱动 |
9 | AppleALC | 声卡驱动 |
10 |
IntelBluetoothFirmware、IntelBluetoothInjector | 蓝牙驱动 |
11 | itlwm | 无线网卡驱动 |
总结
macOS 也是基于 Unix 的,跟 Linux 算是同宗同源吧,用惯了 Linux 很快也就上手了 macOS。不得不说 macOS 的生态比 Linux 好太多了。最后给大家献上调试好的 EFI[4] 。
References
[1]
黑果小兵的教程: https://blog.daliansky.net/[2]
OC-little: https://github.com/daliansky/OC-little/[3]
enghubingzhou 的博客: https://www.penghubingzhou.cn/tags/I2C/[4]
EFI: https://github.com/217heidai/Acer_TraveMate_P249_hackintosh
以上是关于黑苹果的主要内容,如果未能解决你的问题,请参考以下文章