离了就想 发表于 2018-12-24 14:34

真正的分享thinkpad E 440 装macOs Mojave10.14.2

      授人以鱼不如授人以渔,下面我把我的ThinkPad E440装macOs Mojave10.14.2全过程分享一下,本文不提供任何成品文件,但是如果你按照我的操作进行,我保证你的E440也能吃上黑苹果
    首先我们要在BIOS里进行必要的设置
电脑开机按F1键进入BIOS,然后按下图操作



设置完按F10进行保存然后下载小兵的制作的macOS Mojave 10.14.2(18C54)正式版 with Clover 4792原版镜像(镜像发布链接https://bbs.pcbeta.com/viewthread-1800369-1-1.html)进行安装。(写入映像进行安装的安装过程的帖子详细太多了,我就不多说了)下面跟着我一起来完善我的本子吧首先上一张鲁大师硬件检测图然后我们开始第一步处理DSDT1.clover提取dsdt,ssdt等acpi表单在clover选择操作系统的那个界面按F4(Fn+F4也按一下,有的时候F4不一定提取出来)进入MacOS系统后,打开EFI分区,我们需要的dsdt,ssdt文件就在origin文件夹里把上图红框中的dsdt,ssdt文件提取出来,放到了桌面上新建的tables文件夹里然后打开终端运行cd Desktop/tables(意思是在终端下打开tables文件夹)回车后接着输入pbpaste>refs.txt(意思是在当前目录新建refs.txt文件)然后打开新建的refs.txt文件把下面的内容复制进去,然后保存文件External(MDBG, MethodObj, 1)

External(_GPE.MMTB, MethodObj, 0)

External(_SB.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)

External(_SB.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)

External(_SB.PCI0.LPCB.H_EC.ECMD, MethodObj, 1)

External(_SB.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)

External(_SB.PCI0.GFX0.DD02._BCM, MethodObj, 1)

External(_SB.PCI0.SAT0.SDSM, MethodObj, 4)

External(_GPE.VHOV, MethodObj, 3)

External(_SB.PCI0.XHC.RHUB.TPLD, MethodObj, 2)
做完这些以后在终端输入iasl -da -dl -fe refs.txt *.aml就会在tables文件夹里生成反编译的dsdt,ssdt等文件(后缀为dsl的)然后删掉后缀为aml的那些我们通过clover提取的dsdt,ssdt文件用MaciASL分别打开这些dsl文件,按下面的步骤操作做完上面这些我们就可以点击Compile查错了(检查我们反编译的这些文件是否有错误)看看哪几个文件有错误出现,就像下图红框里的那样我的这些文件发现只有两个文件有错误,其中的SSDT-4-CpuPm.dsl打开后,它的OEM Table ID是CpuPm这个文件是关于CPU变频的我们不需要,一会我们要自己制作变频文件替换它。有错误的文件就剩下一个了SSDT-3-Cpu0Ist.ds我发现它的错误都是相同的,点击每一行的错误提示,它们定位的都是下面那样一堆零的东西下面我们就开始修复它,点击patch,在左侧找派奇的补丁集合,如果像我这样的没有这个补丁集合我们就要添加它点击右下角的close关闭掉这个窗口,按下面的操作添加派奇补丁集在5,6处添加补丁集的名字和地址daxuexinsheng 大神的补丁源:派奇 http://raw.github.com/Yuki-Judai/dxxs-DSDT-Patch/master下面是添加后的样子如果需要别的补丁集也可以这样添加下面我们就可以给那个错误文件打补丁了,在派奇补丁集里找到下图红框里的那个补丁,点击它等右侧显示出内容时,然后点击Apply打完补丁后,我们再点击Compile进行查错,就会发现错误全都消失了好了错误都修改完了,下面我就要给这些dsdt,ssdt,文件打必要的补丁了我先打了电池的补丁,在终端下输入cd Desktop/tables转到tables文件夹,然后输入grep -i EmbeddedControl *.dsl(意思是在tables文件夹里的所有后缀是dsl的文件里查找EmbeddedControl字符,我们也可以通过这个命令查找别的字符)搜索结果说在dsdt.dsl文件里发现了EmbeddeControl字符,那我的电池补丁就要打在这个文件上
打开dsdt文件在派奇和rehabman的补丁集里查找我的电池补丁,就是下图的两个补丁集发现没有找到我需要的E440的电池补丁,不死心的我依次打开了每一个关于联想的电池补丁终于在T440P的补丁里看见了下面的字符works for: E440,具体看上图,原来某一个补丁可以试用多个型号的本子,没有找到电池补丁的你们也可以找找看点击apply就开始打补丁,打完补丁还是要进行排错,然后,没有错误就可以保存了。我的E440没有产生错误,我就直接保存了在dsdt里打完了电池补丁,我们还需要进行一些其他的操作才能使电池正确的工作起来通过Clover Configuarator在config.plist里勾选上FixMutex,DSDT name里填上dsdt.aml(这个是我们将来修改以后的dsdt文件)还要在other文件夹里添加ACPIBatteryManager.kext这样我们的电池补丁就彻底的处理好了先写到这里,等通过审核接着写,省的写太多了乱套

离了就想 发表于 2018-12-24 18:58

本帖最后由 离了就想 于 2018-12-26 09:11 编辑

给这些dsl文件打上_DSM重命名的补丁,因为有的时候这些dsl文件里定义了一个_DSM方法,我们添加别的补丁的时候还需要添加_DSM方法,同时出现两个同名的方法会产生错误,所以要先打这个补丁,把原来的重命名
可以通过下面的方法查找哪些dsl文件需要这个补丁

grep -l (查找命令)         Method.*_DSM (查找的内容)         *.dsl(在哪些文件里查找)这个命令大家可以记下来,非常方便,后期我们还要用到,上图中我们查找到了两个文件

下面说一下修改方法

用M按此ASL打开我们想要修改的dsl文件,找到这个补丁以后,点击它,等一会儿(补丁在线加载因网络的关系有可能比较慢)直到右侧显示出文字为止。见下图


添加DTGP函数,DTGP函数是黑苹果必要的函数,没有它,向dsdt添加某些东西的时候会有Object does not exist (DTGP)
这样的提示
添加方法是把下面的代码
Method (DTGP, 5, NotSerialized)
    {
      If (LEqual (Arg0, Buffer (0x10)
                {
                  /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                  /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
      {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                  Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                  Return (One)
                }
                If (LEqual (Arg2, One))
                {
                  Return (One)
                }
            }
      }
      Store (Buffer (One)
            {
                0x00
            }, Arg4)
      Return (Zero)
    }添加到下图位置

添加到顶部42行左右我们要每对dsdt进行处理的时候,都要保存上一步的底档,这样方便于我们出现错误的时候退回添加完还是要排错,没有错误就保存声卡注入id打开dsdt,搜索HDEF然后添加下面的代码Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x0A)
                  {
                        "hda-gfx",
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        },
                        "codec-id",
                        Buffer (0x04)
                        {
                            0x0F, 0x51, 0xF1, 0x14
                        },
                        "layout-id", 代码插入的位置见下图

下面来说说,要修改插入部分的哪些内容首先是codec-id,也就是声卡的硬件ID,我们按照下图找到它我们找到了这个id要怎么注入呢?肯定不能直接拿来用,我们要给它进行必要的修改,见下图这样我么的硬件id就填写完了下面修改layout-id也就是声卡的注入id上图我注入的是28但是上面为什么写成那样呢最后要修改的是声卡型号上面的声卡注入ID我们讨论声卡的时候需要注入多少这里就填写多少然后排错,我的dsdt没发现错误如果你上面没打那个_DSM重命名补丁就可能出现下图这样的错误我们注入了声卡的id还需要配合两个补丁才能生效这里的HPET补丁也可以通过clover Configurator打在config.plist上
















离了就想 发表于 2018-12-24 18:58

本帖最后由 离了就想 于 2018-12-25 21:37 编辑

站楼备用站楼备用2加载原生电源管理这块,写了又删,删了又写,不知道怎么写了,需要的朋友再等等吧

离了就想 发表于 2018-12-24 18:59

站楼备用3站楼备用3

离了就想 发表于 2018-12-24 19:00

站楼备用4站楼备用4

离了就想 发表于 2018-12-24 19:01

站楼备用5站楼备用5

离了就想 发表于 2018-12-24 19:01

站楼备用6站楼备用6

离了就想 发表于 2018-12-24 19:01

站楼备用7站楼备用7

离了就想 发表于 2018-12-24 19:02

站楼备用8站楼备用8

离了就想 发表于 2018-12-24 19:02

站楼备用9站楼备用9

离了就想 发表于 2018-12-24 19:02

站楼备用10站楼备用10

yly469 发表于 2018-12-24 19:29

{:5_294:我站十一楼

loveqp 发表于 2018-12-24 20:16

选上FixMutex是什么意思呢。楼主的教程很好

812366431 发表于 2018-12-24 22:24

期待楼主的更新,我是E430,希望能从楼主学到一些东西完善我的电脑

zxm0317 发表于 2018-12-25 13:42

继续啊 大神

smartbread 发表于 2018-12-25 13:46

楼主的教程很好,有时间试一下

busi99 发表于 2018-12-25 15:58

niuB,真是太详细了。期待学习

理想的海洋 发表于 2018-12-25 16:30

很详细 也测试看看能不能成功

inlefthand 发表于 2018-12-25 16:48

楼主教程不错,期待HD4600显卡部分,我原来用DSDT驱动显卡,发下在10.14.2下面修补缓冲帧的方式已经失效,一直弄不好,现在全部改用hotpatch+fbpathcer的方式驱动了

busi99 发表于 2018-12-25 17:00

inlefthand 发表于 2018-12-25 16:48 https://www.pcbeta.com/static/image/common/back.gif
楼主教程不错,期待HD4600显卡部分,我原来用DSDT驱动显卡,发下在10.14.2下面修补缓冲帧的方式已经失效,一 ...

你什么本子?我的洋垃圾 HP envy 17 M7也是4600核显,昨天直接用Redxxx大神的教程就搞定了。就差换个无线网卡了,HDMI显示输出正常,不过暂时没有HDMI audio。
页: [1] 2 3
查看完整版本: 真正的分享thinkpad E 440 装macOs Mojave10.14.2