avatar

联想M910Q 黑苹果折腾系列③ Hackintosh opencore完善 EFI分享

本系列文章预计4篇:

1.装机展示

2.BIOS魔改

3.黑苹果折腾

4.黑苹果展示

本教程参考:

  • 司波图 黑苹果系列视频教程
  • XJN’s Blog
  • OpenCore Desktop Guide
  • 远景爬贴

免责声明:

我是5月17买的机器,5月18司波图就发了M920Q黑苹果视频教程,所以起初主要参考司波图M920Q黑苹果视频教程。但是M910Q和M920Q毕竟不是一个平台,涉及到魔改操作,而且在我实际折腾过程中发现一些不同之处,甚至原则性的错误,参考了XJN大佬的博客,以及官方guide,远景大量爬贴后有了本文。当然本人也是小白一枚,有错误的地方在所难免,对此造成的任何损失请自行负责,本文仅做折腾分享,感谢理解!

大体思路和司波图相同,司波图把过程讲的很清楚,建议多观看几遍视频教程。我这里不讲过程,着重讲一下M920Q和M910Q的区别以及一些操作的原理。

有关EC屏蔽

首先还是提取DSDT,并反编译为dsl文件,用到SSDTTime和iasl。(可以下载司波图整理的文件包,能用到的东西基本上都有)

img

直接用文本编辑器打开,推荐notepad++

img

搜索关键词:PNP0C09

img

可以看到有关EC部分系统默认屏蔽的,所以就不用FakeEC生成SSDT-EC.aml,这里司波图没有查验这一步直接生成的,可能并不影响,但是opencore尽量少用SSDT补丁及更名补丁,有利于启动速度以及系统稳定性,我作为一个强迫症必须要知道。

有关AWAC时钟

img

继续搜索关键词:AWAC ,搜索不到说明M910Q主板没有用到AWAC时钟,用不到SSDT-AWAC去切换时钟,这里是和M920Q不同的地方。

有关NVRAM:

NVRAM Testing: You can test if your NVRAM is working by running the following Terminal command and rebooting: sudo nvram TestVar=HelloWorld; once you reboot, run sudo nvram -p | grep ‘TestVar’; if you see a result, your NVRAM is working; if not, your NVRAM is broken and needs to be fixed, or otherwise iMessage won’t work; after testing, you can delete the TestVar variable by running sudo nvram -d TestVar

img

输入命令:sudo nvram TestVar=HelloWorld; 写入一个TestVar变量到NVRAM,重启电脑

img

输入命令:sudo nvram -p | grep ‘TestVar’; 可以看到返回结果HelloWorld说明我们的主板原生支持NVRAM。

有关SSDT:

img

SSDT-PLUG:用于加载原生电源管理,这里我们要用到。

SSDT-EC-USBX:用于屏蔽EC和修正USB供电的,我们EC不用屏蔽,而且强烈建议修正USB供电不要使用SSDT补丁,Xjn大佬解释是opencore没有判断win还是mac系统,双系统特别注意。经过我实测定制USB接口以后,生成的USBPorts.kext里面有修正USB供电代码,USB供电也正常,所以我们用不到这个。

SSDT-AWAC:用于切换RTC时钟,我们用不上。

SSDT-PMC:用于300系主板使用原生NVRAM,实测M910Q支持原生NVRAM,所以我们也用不上。

img

所以SSDT time用到的就提取SSDT,然后按 3 生成SSDT-PLUG。

有关CFGLock解锁

我们主板没有CFGLock的开关,所以用到opencore的工具CFGLock.efi,这个我的EFI里面会提供

img

opencore启动界面选CFGLock.efi,进入工具。

img

工具会自动识别CFGLock状态以及地址,按Y即可自动解锁。(我这里是解锁好的,是不是比司波图那个简便很多?)

有关驱动文件:

img

我用到的驱动文件如图所示,作用如下:

AppleALC.kext:声卡驱动

Innie.kext:lilu插件,解决nvme识别成外置磁盘,M910Q有这个问题。

IntelMausi.kext:Intel网卡驱动

Lilu.kext:底层依赖

NVMeFix.kext:为NVME硬盘增加ASPT属性来保证节电

SMCProcessor.kext:VirtualSMC插件,CPU核传感器

SMCSuperIO.kext:VirtualSMC插件, IO传感器

USBPorts.kext:USB定制驱动

VirtualSMC.kext:传感器驱动依赖

WhateverGreen.kext:核显&显卡驱动

驱动文件除了常规的一些网卡声卡驱动,要注意的是Innie.kext 这个插件能解决nvme识别成外置黄盘,opencore有ExternalDiskIcons选项,实测不起作用。

有关USB定制:

USB定制教程黑果小兵有详细的视频教程,但是方法比较复杂,现在hackintool可以有更简单的方法:

驱动里面加载Usbinjectall.kext,重启后打开hackintool,定位到USB项目。

img

  1. 用USB2设备挨个插USB口,总共6个USB口,识别7个名称HS开头的USB2设备,因为有一个网卡蓝牙用到的端口,设置为USB2类型。
  2. 用USB3设备挨个插USB口,识别到6个名称SS开头的USB3设备。
  3. 删除多余的接口,然后把鼠标键盘和蓝牙所在USB口连接器类型设为internal(内建)。
  4. 点击下面图标最后一个导出。

img

这里会给到5个文件,我们只用得到USBPorts.kext替换Usbinjectall.kext

img

打开USBPorts.kext包里面的info.plist可以看到有修正USB电源相关的代码,所以SSDT-USBX.aml和类似于USBPower.kext的东西用不着。

SSDT-UIAC和USBPorts.kext端口定义是重复的,所以用不着放两个,只用USBPorts.kext就够了。我看过司波图的EFI,三个文件都丢进去了,咋说呢不一定会有冲突,系统加载速度可能影响也不大,但是强迫症忍不了,不够精致。

有关睡眠

这台机器现在唯一的问题就是睡眠了,折腾了许久真的搞不定,Wake reason一直是XDCI,我猜测是魔改有懂了BIOS ME模块,但是有说没有魔改的M910Q也不行,当然不排除其他地方原因,希望有大神能完善。

有关EFI

我把我的EFI放到GitHub去了,有更新我直接推送过去。
地址:https://github.com/yjce1314/hipda-M910Q-opencore

文章作者: DaChui
文章链接: https://dachui.co/p/11.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 大锤的博客

评论