解决INTEL E7200安装ideneb10.5.5无法双核启动的问题(cpus=1)
昨天在[url=http://bbs.kenapple.com/viewthread.php?tid=13681&page=1&extra]http://bbs.kenapple.com/viewthread.php?tid=13681&page=1&extra[/url]=这个帖子中写的第一个问题,在逛远景论坛的时候偶然看到,但是没有看明白,还请相似配置的朋友多多指教。主板:MSI P43 NEO3-F(BIOS:AMI V1.5)
CPU:E7200 今天发这个帖子的时候本来想找在远景上的原帖,直接转载,可是怎么也找不到了,希望原帖的楼主不要怪罪小弟哈.......
以下为具体方法:(从原帖复制保存下来的)
MMtool + iasl解决cpus=1([b]仅限AMI的BIOS[/b])
在macgood已经发过一次了,我就是那一帖的楼主。
——————————————————————————————————
这个方法是从insanelymac上得来的,原帖在这里(相信不少人已经看过):
[url=http://forum.insanelymac.com/index.php?showtopic=90505]http://forum.insanelymac.com/index.php?showtopic=90505[/url]
顶楼是大名鼎鼎的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,下载地址为:
[url=http://acpica.org/download/iasl-win-20080729.zip]http://acpica.org/download/iasl-win-20080729.zip[/url]
我们只需要里面的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的原帖也是知其然而不知其所以然,故谢绝一切代为修改的请求。但本人对文中每一步都切身实践过,可以保证其真实性,胆大心细的网友不妨一试。
本人没有试过,还请高手试过后补充详细步骤.......
[[i] 本帖最后由 zyb0503 于 2008-11-21 12:09 编辑 [/i]] 高手啊,学习了,哈哈感谢中!! 还是看不懂 我是双核 但是在下这个版本的准备装呢 太复杂了
页:
[1]