本帖最后由 sdsy1212 于 2015-10-29 09:12 编辑
等等,好像我们直接完成了第二部分,那第一部分呢? 第一部分是有关DSDT的。那么DSDT到底是什么呢,简单的说,DSDT就是描述你主板接口功能等等所有配置的清单。 对于修复USB来说,DSDT方面要做的事很简单,只是查找EHC1 EHC2替换为EH01 EH02而已。这么做的目的就是让osx的系统文件无法找到EHC1 EHC2从而无法描述USB2.0控制器下的设备,而我们后面自制的kext则会担起对EH01 EH02这两个偷梁换柱后的USB控制器进行详细描述,并使其驱动。 但是我知道很多用台式机同学可能都没有提取过DSDT文件,不用担心,我们慢慢聊这个问题,一步一步的解决。 本文所述的方法只能适用于7系8系9系主板,因为6系没有原生USB3.0,10系我又没亲身试过,故不在讨论范围内。 虽然这段我们是谈DSDT的,但是我们先聊点别的。 上一楼所说,USB控制器有2种,Enhanced Host Controller USB2.0 ROOT HUB控制器和eXtensible Host Controller USB3.0 ROOT HUB控制器也就是EHC和XHC。其中EHC控制器有2个EHC1 EHC2,而XHC控制器只有一个,其名称就是XHC。 对于7系主板来说,黑色的纯USB2.0口是在EHC1 EHC2控制下的,蓝色的USB3.0口不管插USB2.0设备还是USB3.0设备,都会在XHC控制下。对于8系9系主板来说,不管是黑色的纯USB2.0口还是蓝色的USB3.0口,你插什么设备都在XHC控制器下。 说这么多,那这到底有什么用呢? 是这样的,如果你是8系9系的主板,那么EHC1 EHC2和你没半毛钱关系,也就是说你可以不管DSDT了。直接看下一楼怎么制作injector kext就好了。 如果你是7系主板,那么很不幸,DSDT还是和你有关系的,因为你的黑色纯USB2.0口是受EHC1 EHC2控制的,你得把DSDT里的EHC1 EHC2改成EH01 EH02。可是有些同学心里犯怵了,我没DSDT文件啊,而且听说改DSDT有很多错误的,我弄不来怎么办。 我要说不幸中也是有万幸的。 因为我们毕竟不是在DSDT里搞什么大动作,也不是注入整段的补丁代码,只是修改几个名字。所以我们可以用clover的配置文件config.plist里的补丁代码来实现这个改名字的操作,而不提取DSDT。 具体代码是 <key>DSDT</key> <dict> <key>Patches</key> <array> <dict> <key>Comment</key> <string>change EHC1 to EH01</string> <key>Find</key> <data>RUhDMQ==</data> <key>Replace</key> <data>RUgwMQ==</data> </dict> <dict> <key>Comment</key> <string>change EHC2 to EH02</string> <key>Find</key> <data>RUhDMg==</data> <key>Replace</key> <data>RUgwMg== </data> </dict> </array> </dict> 怎么在config.plist里添加这段代码,我就不教你了。 改完clover的config后,即使你没DSDT文件,那么,以后你再去提取DSDT,里面也没EHC1 EHC2了,在clover启动时就给自动替换成EH01 EH02了。 然而,人和人还是不一样的,总有把自己的人生设定为困难模式的同学,这里我也简单说下如何提取DSDT,而如果你用了clover注入代码修改EH01 EH02的方法后,也可以试着提取一下未改过错的DSDT,查找一下EHC1 EHC2看看有没有,从而达到让你的心里更踏实的目的。 提取的方法有很多,对于菜鸟,以前没提取过DSDT的,可以下载RehabMan大神的patchmatic程序,并解压放置在桌面(所有涉及的程序已经贴在1楼附件里了),然后打开终端执行 cd ~/Desktop ./patchmatic –extract 桌面上就会生成很多aml文件,这些aml文件就是DSDT和SSDT。但是这些文件是机器能读的文件,我们读不了,所以需要反编译。这时你需要下载iasl程序(解压后放到桌面上)来对aml文件进行集体反编译,让其变成我们能读的格式。 用法是 ./iasl –da –dl *.aml 执行完这个以后,桌面就会出现很多dsl文件,DSDT.dsl就是我们需要的了。 现在你需要下载RehabMan大神的MaciASL工具(解压后放到‘应用程序’里以备用)来对DSDT.dsl进行编辑(双击DSDT.dsl就行,或者选择打开方式->MaciASL),并改错(此处省略两万字)和再编译。注意第一次进入MaciASL后,要在Preferences里的iASL栏里的Compiler Options改成ACPI 5.0,用4.0编译会有更多的错误。 如果你已经用clover注入替换代码了,那么你现在可以查找EHC1 EHC2看看有没有,应该是没有就对了,因为你替换掉了嘛。再找找EH01 EH02,这里应该是有的就对了。 如果你没用clover注入替换代码,我们要查找EHC1,将其全部替换为EH01。查找EHC2,将其全部替换为EH02。注意EHC1和EHC2都不仅仅有一个。 再点Compile(即'编译'的意思),然后查错(被省略的两万字)。错误都搞定后,我们选择另存为。格式选择’ACPI Machine Language Binary’。这就是你的DSDT了,应该是DSDT.aml文件就对了。 把这个修改好的DSDT,aml放到你的CLOVER的EFI/CLOVER/ACPI/patched文件夹下
自此,DSDT的事就干完了。
|