登录

MMtool + iasl解决cpus=1(仅限AMI的BIOS)

发帖
在macgood已经发过一次了,我就是那一帖的楼主。

——————————————————————————————————

这个方法是从insanelymac上得来的,原帖在这里(相信不少人已经看过):
http://forum.insanelymac.com/index.php?showtopic=90505
顶楼是大名鼎鼎的Kabyl发现的双核引起重启的原因及修改的原理,487楼是AMI BIOS的详细修改方法。

本人的机器主板是精英G31,型号是比较少见的G31T-M2,AMI的BIOS。由于没有现成的BIOS下载,不得已自力更生。在紧张得心都快跳出来之后,按帖子里的方法操作成功,装iDeneb顺利开启双核。现将其步骤分享如下:

1. 从原BIOS中提取DSDT表
在Windows下有两种方法:
1) 使用ACPIScope提取:
ACPIScope 01.00.002版:菜单File-->Load ACPI information-->From BIOS,选中左面列表中的DSDT,右键,Save table。
2) 使用MMTool提取:
做过给AMI BIOS添加SLIC以激活VISTA的用户对MMTool应该很熟悉,我们这次的目的和添加SLIC类似,都是要修改ACPI,因此仍然先提取1B模块。同样提取1B的时候要选中“In uncompressed form”。
下面是从1B中提取DSDT表的方法。
先运行everest,查看ACPI表中DSDT的属性,记住表的长度。在我的机器上是23167字节(16进制5A7F)。然后用WinHex打开刚才提取出来的1B模块,查找ASCII字符串“DSDT”,忽略第一个,定位到第二个。这是DSDT表的起始位置(比如0x42975),然后把这个地址加上刚才表的长度减1,得0x483f3,这是DSDT表的结束位置,再往后就是另一个表了。DSDT表最后的四个字节是ASCII字符“WAKh”。把起始位置到结束位置中的内容提取出来,保存成文件DSDT.aml。
这两种方法得到DSDT有几个字节不同,我也不知道为啥。不过我用这两个版本的文件都修改成功了。

2. 修改DSDT
这时我们需要intel的一个工具——iasl,下载地址为:
http://acpica.org/download/iasl-win-20080729.zip
我们只需要里面的iasl.exe。
首先反编译DSDT,在命令行下输入:
iasl -d DSDT.aml
得到一个DSDT.dsl,这是个文本文件,打开找到代码的最前面,把Scope (_PR)后面的大括号里Alias开头的那四行删掉,保存。
然后重新编译:
iasl DSDT.dsl
生成新的DSDT.aml

3. 用新的DSDT替换原DSDT
同样是用HexEdit来编辑刚才的1B模块。替换的时候有个问题,ACPI里面每个表都对应一个偏移量,在替换的时候如果不想带来其它改动,就要保证这个偏移量不变。如果DSDT表的大小变了,就会影响后面的表的偏移量,这是我们要避免的。
由于新的DSDT比老的要小,所以并在结尾补上一些0,保证结束地址不变。另外还要把新的DSDT紧挨着最后一个“WAKh”右面的一个字节改成2E。
原帖中的修改方式如下(参考):
1) 选中1B模块中整个旧的DSDT表,将其全部置为0;
2) 从1B模块DSDT表的起始位置选中与新的DSDT大小相同的块,将其删除(会提示文件大小被改变);
3) 选中整个新的DSDT表,将其复制、粘贴到1B模块DSDT表的起始位置(会提示文件大小被改变);
4) 将新粘入的内容后面的第一个0改成2E。保存退出。

上面和 2) 和 3) 其实可以简化成:选中新的DSDT,复制,然后定位到旧的DSDT表的起始位置,Ctrl+B(在原位置写入,不改变文件大小)。

最后用MMTool把新的1B模块替换到BIOS文件中,刷入。重启,祈祷……

整个过程必须慎之又慎,因为是手动替换DSDT表,如果出错后果自不必说。当然真刷坏了也不是啥大不了的事,只要有备份,找个修电脑的再刷回去就行。如果刷成功了再进Leopard就不用cpus=1了。

最后声明:本人对ACPI表和BIOS的源码并不熟悉,看insanelymac的原帖也是知其然而不知其所以然,故谢绝一切代为修改的请求。但本人对文中每一步都切身实践过,可以保证其真实性,胆大心细的网友不妨一试。

[ 本帖最后由 longname 于 2008-8-21 12:30 编辑 ]
1

评分人数

  • TTNK

 

 
如果凤凰bios可用那么我就开心了。
 

TOP

很复杂啊,如果你可以帮我改就好了/sad.gif
 

TOP

不好意思啊,我实在没信心帮别人改,惭愧惭愧……
 

TOP

我安装这个操作了,体会如下:
1.确实能够解决问题.
2.必须仔细看http://forum.insanelymac.com/index.php?showtopic=90505
顶楼是大名鼎鼎的Kabyl发现的双核引起重启的原因及修改的原理,487楼是AMI BIOS的详细修改方法。
3.请使用winhex修改,最好不要用ultraedit修改.
4.replace修改后的DSDT需要用MMTOOL 2.2.2版本,请不要使用MMTOOL 3.12版本,否则会出现"1Bh This is non-editable module!!"的错误.

5.只要你自己按照操作步骤修改了,不会出问题的.
1

评分人数

  • TTNK

 

TOP

没错,尤其是第3点,ultraedit在复制大块数据时经常出问题,所以最好用winhex。
MMTOOL 3.12有些会报错有些不会。
 

TOP

支持一下,这个不错。新极光E6-B062的bios
主板名称        Haier G31T-M2
通过上述方法修改已经验证OK

不知道怎么上传,需要的朋友可以说一声
 

TOP

感谢5楼的,为了找修改方法,找了N久了。试了下,我的海尔T68终于能装Leopard了。
 

TOP

楼主,能帮我改一下Bios吗,我已经被cpus=1困惑很久了。
 

TOP

这么有技术含量的贴,在这里竟然没什么回应,真不应该啊,顶LZ
最好有高手可以写出简单点的工具就好了。

另外建议版主将此贴置顶加精,好让大家都了解这个问题。

[ 本帖最后由 z_kui 于 2008-8-21 00:11 编辑 ]
 

TOP


支持
 

TOP

先强烈支持一下,我的华擎P43Twins1600主板也遇到同样的问题。
但这里想请教一下,是否只要AMI的BIOS,都可以这样修改?而与主板本身的品牌无关?
谢谢。
 

TOP

很遗憾,不是适用于所有AMI。与厂商无关,但有些型号的BIOS DSDT表不在1B模块中。
本帖的方法适用于大多数使用AMI BIOS的G31和P35主板开不了双核的情况。

P43和P45另有方法,insanelymac上有介绍,但我自己没试过。

[ 本帖最后由 longname 于 2008-9-13 13:35 编辑 ]
 

TOP

回一下贴,太高技术含量了,肖化不了,什么时候把AWARD的BIOS也研究出来就好了,,我的是P4 631,LEO 10.5.2破解内核,始终没有识别出双核,郁闷
 

TOP

双核为什么会有这么多的问题呢 郁闷
 

TOP

谢谢分享
 

TOP

谢谢楼主分享。
 

TOP

我用2.22一高级模式载入ROM就出错 连替换的机会都没 郁闷啊
 

TOP

看来大家还是比较在意是否有双核
 

TOP

我也不知怎么弄,能在简单一些吗?
 

TOP

重要公告 关闭


惊喜不断,好礼不停!9月中旬相约远景,我们继续送大礼!

9月中旬,远景携手微软继续为大家送出缤纷大礼,500G饕餮海量移动硬盘、Microsoft 酷炫蓝光鼠标,更有PCBETA 贡献会员,千百论坛虚拟币!还等什么,不怕你来拿, ...


查看