家里的台式机很久前就装过黑苹果,一路从mavericks,el capitan,sierra走来,由于硬件和tonymacx86推荐的类似,原版安装还是比较简单的,但总是不太完美,有一些小问题,不影响使用就是了。

  • 休眠唤醒:唤醒会导致bios重置
  • clover引导界面扁苹果:影响美观,原先用的5770,据说可以修改uefi的bios解决,但是原卡上的bios空间不足,需要额外买bios芯片,只能不了了之了。后来换了3770的CPU,集成卡HD4000现象依旧。
  • 安装high sierra有很多问题,磁盘不停地报错(apfs,hfs+都出错),启动非常缓慢。

前阵子在网上突然看到一篇文章:macOS 10.13安装中常见的问题及解决方法,提到ICH10要打上补丁,虽然H61芯片组用的不是ICH10,抱着死马当活马医的想法,发现打了补丁后的机器安装high sierra再也没有disk i/o error之类的错误了,加之最近空闲时间很多,于是有了本文。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    <dict>
        <key>Comment</key>
        <string>修复ICH10芯片 I/O Error 错误</string>
        <key>Disabled</key>
        <false/>
        <key>Find</key>
       <data>RYX2D5XCiciD4P5mhcl4D4TSdQs=</data>
        <key>MatchOS</key>
        <string>10.13.x</string>
        <key>Name</key>
        <string>AppleAHCIPort</string>
        <key>Replace</key>
        <data>iciD4P5mhckPmMFBCMyQkJCQdQs=</data>
     </dict>

下文以high sierra为例,记录一下各种问题的修复方法。

disk i/o error

Apple在high sierra上将AppleAHCIPort升级到了v329版本,该版本存在bug,对第三方的sata接口不兼容从而导致的问题,上文讲到可以通过打ICH10补丁的方法解决,但是,这并不是一个很好的解决办法,仅适用于high sierra, mojave上就失效了。一个更好的解决办法是patch ICH id,通用性更好。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<dict>
    <key>Comment</key>
    <string>patch AppleAHCIPort for ICH* 40600200 to 00000000</string>
    <key>Disabled</key>
    <false/>
    <key>Find</key>
    <data>
    QGACAA==
    </data>
    <key>InfoPlistPatch</key>
    <false/>
    <key>Name</key>
    <string>AppleAHCIPort</string>
    <key>Replace</key>
    <data>
    AAAAAA==
    </data>
</dict>

变频

CPU从i3-2100升级成了i7-3770,用ssdtPRGen重新生成ssdt.aml,放到EFI/CLOVER/ACPI/patched下面即可。

开机特别缓慢,2分钟左右

kernel打印存在kextd stall[0], (240s): ‘pci8086,1c3a字样,同样是由于更换CPU引起的,3代i7-3770本应搭配7代的芯片组,搭配H61的话,导致IMEI加载错误,从而显卡fb初始化失败。可以通过dsdt打补丁解决。

1
2
3
4
5
If (0x1c3a == Local2 && Ones != Match(Package() { 0x0166, 0x0162 }, MEQ, Local1, MTR, 0, 0))
{
    // HD4000 on 6-series, inject 7-series IMEI device-id
    Return (Package() { "device-id", Buffer() { 0x3a, 0x1e, 0, 0 } })
}

休眠/唤醒bios重置

这个问题其实困扰很久了,一直以来都是在设置里面禁止休眠解决的,搜索发现其实可以通过dsdt解决,参见[Solved] High Sierra - need CMOS reset after sleep

简而言之,替换dsdt里面rtc部分。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Device (RTC)
{
    Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
    Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
    {
    IO (Decode16,
    0x0070, // Range Minimum
    0x0070, // Range Maximum
    0x00, // Alignment
    0x02, // Length
    )
    })
}

USB 3.0

很久以前就给dsdt打过patch,用起来没有问题。

声音

放入AppleALCLilu解决,Lilu是high sierra及之后版本需要的。

iMessage

clover自动生成的smbios,iMac13.2

clover开机扁苹果

这块是最不可思议的,其实U盘启动是不会扁苹果的,硬盘启动才会,试过注入EDID,load vbios,patch vbios,统统没用,偶然发现,硬盘上存在额外的fat32分区的话,就不会扁苹果,非常神奇。

log显示clover LegacyRegion2模块被加载了,从而设置了正确的分辨率。但这个函数是在模块初始化函数里面,不理解为什么会这样。

知道了解决办法,果断将windows的msr分区格式化为fat32格式,貌似windows一般不会用到这个分区的。

开机默认进linux

Windows,Linux都是gpt分区,UEFI安装,启动文件在EFI分区,单纯设置DefaultVolume为EFI的话,默认进Windows,Sierra进mac,如果默认想进Linux,需要额外设置DefaultLoader为grubx64.efi。

1
2
3
4
<key>DefaultLoader</key>
<string>grubx64.efi</string>
<key>DefaultVolume</key>
<string>EFI</string>

蓝牙

用这个纯属家里有个小米的蓝牙音箱,接有线的话,需要每次插拔一下音频线,太麻烦了。以前闲散的BCM92046DG-CL1ROM竟然可以免驱使用,方便不少,算是意外之喜吧。

总结

至此,这台电脑的clover引导基本完美,原版安装没有任何问题。