如果你喜欢的是苹果的工业设计和 Retina 屏,抱歉,这是不可能的。即便你在二手交易平台上也不可能。
但是如果你在意的是 MacOS,那么你可以考虑尝试一下黑苹果 (Hackintosh),也就是在普通的 PC 机上安装 MacOS。
与安装 Linux 相比,安装 MacOS 的难点在于苹果的一些硬件定义不同,并且某些硬件缺乏驱动。
最近花了 4000 多,买了一个笔记本 Dell 15 5577,在业余时间中完成了黑苹果的安装,在此分享一下整个过程,希望对那些希望尝试黑平果的同学有一点帮助。
首先要声明,我绝对算不上什么大神,只是一个勤劳的搬运工,对相关知识一些整理。
因为大神们的不懈努力,现在黑苹果的过程已经越来越简单了。
基础知识
为了成功黑苹果,我们需要科普一些基础的知识。
计算机硬件需要 BIOS,也就是 Basic Input & Output System,顾名思义,定义了计算机的硬件地址和最基础的输入输出功能,例如唤醒与休眠功能等。而操作系统则是在 BIOS 之上,通过 BIOS 来对计算机硬件进行控制的。
对于传统的计算机主板,使用 Legacy BIOS,写在主板的 ROM 中;但是随着技术发展,EFI BIOS 逐渐成为主流。EFI 也就是 Extensible Firmware Interface,它的“可拓展性”是 Legacy BIOS 所没有的。
BIOS 的一个重要任务是引导操作系统加载,即 bootloader。EFI 会有自己的磁盘分区,通过识别这个分区中的 *.efi 文件实现对操作程序的引导。在这个分区中,也可以对 EFI 的行为进行配置。这个分区通常是不可见的。
另外一个概念是 ACPI,Advanced Configuration and Power Management Interface,即高级配置和电源管理接口,也是 BIOS 程序中的一部分,用于操作系统的调用。其中的 DDST 主要描述了计算机中各个设备的详情,而 SSDT 则定义了操作系统对这些设备的调用方法和每个方法的行为。
由于苹果和 PC 在 DDST 中对设备的定义不同,所以有时需要修改 DSDT 文件。而 Windows 和 Mac 对某些设备行为的要求也不同,因此需要编辑 SSDT。而 ALC (ACPI Source Language) 就是专门用来修改这 DSDT 和 SSDT 的编程语言。
经过二进制编码、可执行的 DSDT 和 SSDT 文件以 aml 为结尾;借助一些工具,可以将 aml 文件转换为可以阅读、编辑的 dsl 文件。
最后说一下 kext,大致可以理解为 MacOS 上的驱动文件。
开始动手
了解自己的电脑
苹果对不同硬件的支持程度不同,因此在动手之前建议对自己的硬件有一些了解,我有几个小方法。
对于组装台式机,购买的时候自己选择就好。但是对于笔记本而言,最简单的是通过鲁大师查看,但是依然可能会漏一些必要信息,那就建议找找同系列机型的拆机过程,硬件多半是相同的。还是找不到的话可能就需要自己拆开机器了 (我还没这么悲摧)。
参考阅读:
对硬件兼容有初步认识:https://www.tonymacx86.com/threads/laptop-compatibility.106791/
几个黑苹果中的常见问题:https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
基本操作
tonymacx86 中把黑苹果分成了 5 个步骤 ,即
获取 MacOS 安装包
使用 UniBeast 准备引导 U盘 (这一步需要准备好一些必要、基础的驱动)
设置 BIOS
开始安装 MacOS
使用 MultiBeast 设置电脑上的引导区和必要文件
这几个标准步骤完成后,一个 MacOS 就应该可以在电脑上跑起来了。但是完成了这部分工作,可能只完成了整个黑苹果过程的 20%,之后的驱动安装与问题解决才是大头。
基本操作部分请参阅https://www.tonymacx86.com/threads/unibeast-install-macos-high-sierra-on-any-supported-intel-based-pc.235474/
驱动安装与问题解决
这是需要一些技巧、精力和运气的部分,需要用到的工具、技巧我将在下一部分介绍。
通常情况下,键盘、鼠标、基本显示、有线网卡、USB 都已经准备好了。但是还是有很多需要解决的问题。
电源管理
因为 MacOS 的休眠策略,某些设备在休眠唤醒后无法正常工作,这是第一个需要解决的问题。
https://www.tonymacx86.com/threads/guide-native-power-management-for-laptops.175801/
https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/
无线网络/蓝牙
现在的很多笔记本都没有网线接口了,无线网络就变得更重要了。
最简单的是挑选一个 MacOS 支持较好的无线网卡,毕竟更换网卡的技术难度和资金成本都不大,比如 Brcm94352。当然你需要首先确认自己的无线网卡接口和大小。
https://www.tonymacx86.com/threads/guide-airport-pcie-half-mini-v2.104850/
显卡
核心显卡的问题通常不会太多,但是独立显卡就要麻烦很多。
显卡通用问题:
https://www.tonymacx86.com/threads/read-me-first-graphics-setup-troubleshooting.183617/
处理显存问题:
https://www.firewolf.science/2015/04/guide-intel-hd-graphics-5500-on-os-x-yosemite-10-10-3/
处理休眠唤醒后的显示问题:
https://www.tonymacx86.com/threads/solved-black-screen-after-upgrade-to-high-sierra.237050/page-5
声卡
苹果原生支持的声卡,是可以直接使用苹果自带驱动的;而没有支持的声卡,则需要安装第三方的驱动程序
安装声卡驱动前的准备:
https://www.tonymacx86.com/threads/before-you-install-audio-desktop-realtek-applehda-guide.219810/#post-1492288
安装声卡驱动的过程:
https://www.tonymacx86.com/threads/applehda-realtek-audio-guide.234732/#post-1606764
驱动安装与问题解决的工具与技巧
主要工具包括:
Clover:一个非常强大的工具,包括:
能够创建 EFI 引导分区
导出和加载、动态修改 DSDT、SSDT 文件
能够加载 kext
伪装 BIOS 系统信息等
Clover Configurator:编辑 Clover 的配置文件 config.plist
EFI Mounter:用于挂在 EFI 分区
KextBeast:用于安装 kext 文件
iasl:用于将 aml 格式的文件转换为 dsl 格式的文件
MaciASL:用于编辑 DSDT 和 SSDT 文件
IORegistryExplorer:用于查看系统中设备的注册情况
Clover 引导页面设置
进入 Clover 引导页面时,有几个小技巧:
光标移动选中希望启动的磁盘,点击空格后,勾选上 -v (verbose) 后,可以看到启动过程中的日志,这对于问题排查有极大的帮助。
另外 Clover 的页面提供了 EFI Shell 的功能,进入命令行后,输入即可打开 Clover 自身所在的分区,并在命令行中对 config 进行修改,或者增加/删除文件。
在 Clover 的 config 中,有可以直接选择某一个配置文件的配置选项,或者对显卡等设备的属性进行设置。
plist 修改
plist 是一种配置文件,Clover 和 kext 文件中的配置都使用了这个格式。
plist 本身是使用 xml 写的,但是不建议使用纯文本编辑器进行编辑。
编辑 Clover 的配置文件建议使用 Clover Configurator,而且要下载最新版本的,因为封装了 Clover 的所以配置。
编辑 kext 的配置,就建议使用 xcode 或者 PlistEditor Pro,同样会对数据进行封装,但是更加灵活。
在论坛中看到的绝大多数的设置都是对 Clvoer 配置文件的设置。因此先熟悉一下 Clover Configurator 中的配置项会有比较大的帮助。
处理 DSDT 和 SSDT
明白十六进制/十进制/二进制当然是必备的,有一点编程知识是最好的,熟悉 ASL 就更棒了。
具体如何进行处理,建议参考https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/这里有非常详细的说明。
如果希望对 ASL 有深入的了解 (当然也不是很有必要),可以查阅http://www.acpi.info/DOWNLOADS/ACPI_5_Errata%20A.pdf
修改、安装 kext
根据需求不同,kext 文件可能安装在
EFI 分区,例如 Clover 的
前两个需要使用 KextBeast 这样的 kext 安装工具。而最后一种,直接将文件复制进去就好了。
查看设备注册的属性
使用 IORegistryExplorer 即可查看设备的 vendorID、productID 地址信息等必要信息。
Xcode 工程编译
这个技能绝大多数情况下都用不到,我也没用到。但是如果有的硬件比较奇特,而对应的 kext 中没有支持时,就可能需要使用了。
我的电脑
Dell 15 5577 的配置如下:
CPU:i5-7300HQ
主板:HM175
显卡:HD630 + GTX1050
硬盘:128G + 1T SATA
内存:8G
屏幕:15.3inch,1080P
声卡:ALC256
有线网卡:RTL8111
蓝牙/Wi-Fi:Brcm95432
我把具体的过程写在 tonymacx86 网站上了,可以访问以下网址浏览:
https://www.tonymacx86.com/threads/guide-dell-15-5577-works-with-10-13-2.241795/
感悟
我始终相信一句话,有时候你学了什么东西,当时觉得没什么用,但是在不经意的某一天也许就真的有用了。
比方这一次黑苹果的过程,因为之前自己安装过 Windows 系统,所以对系统引导等知识有过了解,在设置 U盘启动盘时,就相对轻松了;plist 文件使用的 xml 格式我之前在做 Python 爬虫的时候有稍微了解,因此编辑起来也相对轻松;ASL 编辑中使用的正则表达式,也是自己在某些文件处理的时候学习过的。
这样说来,这次黑苹果的经历,也很可能会在未来的某一个时刻,给我带来价值。等大家都在天桥上贴膜的时候,也许我可以租一个门面,为大家安装系统,Windows、MacOS 都可以,白的、黑的也都行。
如果大家需要手把手教学的话,欢迎咨询报价!
文章封面来自: jarmoluk from Pixabay
领取专属 10元无门槛券
私享最新 技术干货