加入收藏
网站地图
网站搜索
阅读内容

编译内核使Linux实现对笔记本的ACPI电源管理支持

[日期:2010-06-15] 来源:realasking  作者:realasking

2010年06月09日
本帖内容作废,Fedora 13和Ubuntu 10.4均不再需要这样的操作,
内核已经能够较好的支持ACPI了。

--------------------------------------------------------------

注:以前一直觉得Linux在我的清华同方笔记本上电源管理有问题,不止是电池电量显示不对,而且很多功能键也老出错,也发生过死机,因此以前常常是关闭acpid而开启apmd了事; 后来不知道从什么时候起,功能键都正常了,死机也不见了,所以就没有再注意过它,但是昨天学点软件的时候我长时间开着笔记本,后来结果机器居然又死掉了,开机之后做了一次磁盘检查,结果正在写的和课题有关的东西不见了,真是郁闷。然后我检查了一下系统,估计问题可能还是出在ACPI上,于是就在网上查了些资料,花了一天时间,应该算是解决了这个问题了,所以就写了本文以记录自己操作及参考的文章。由于本文没有任何原创内容,方法完全参照参考的文章,没有太大价值,故请勿转载本文,如需参考的,不妨注意文末列出的参考文章。
——by realasking

我的笔记本主板是微星做的,BIOS版本是:A1414NT2 V1.08,
我的操作系统是:Fedora Linux 12
在操作中使用了如下工具:dmidecode,acpi,iasl, cat, gnu编译器
所有这些工具都可以从源里直接下载。

由于学校Ftp上已经有新的内核的源代码了,所以我顺便更新了一下内核,因此这个办法是通过重新编译内核来实现的:

1.把系统原来内核的.config文件拷到新内核的文件夹下,然后做好其它配置工作。

2.生成需要的文件(先用dmidecode查bios版本号,看有没有人解决过):
a. sudo cat /proc/acpi/dsdt > dsdt
b. iasl -d dsdt
c. 执行一下iasl -tc dsdt.dsl,记录下全部错误信息和警告信息
然后修改dsdt.dsl,再执行,使这些信息全部消失为止
我只是按照下面的参考文章,简单的把所有的warning中的地址都改为0xFFFF,
并把 If (MCTH (_OS, "Linux"))
{
Store (0x3, OSVR)
}
节的0x3改成了Zero,然后把这一节移动到了正确的位置。
d. iasl -tc dsdt.dsl生成dsdt.hex

3.修改内核配置:
a. 把生成的dsdt.hex拷贝到内核目录的include文件夹下
b. vi .config,
删除:CONFIG_STANDALONE=y
添加:CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="dsdt.hex"

编译内核即可。然后我又跑了昨天跑的软件,发现这次没有死机了,而且发现conky的电池状态显示也正常了,同时各个热键依然能够使用,此外还有一个意外的惊喜:再次进入系统,自动错误报告没有再弹出内核出现mtrr错误是否报告的提示了,估计问题已经解决。

使用效果如图所示,注意右边的conky和右下角的KDE小工具:






另外,如果不想升级内核的话,不重新编译内核应该也能解决这个问题,估计有人弄过。




相关资讯       Linux内核 
本文评论       全部评论
  好的,那你们就留着吧,不过新的内核ACPI支   (realasking ,07月03日 )
  当时也没仔细看是否可以转载,就让这篇文章   (Linux会员 ,07月03日 )
  为啥我不让转载的到处都在转载?之所以写明   (realasking ,07月03日 )
发表评论

请您注意:
遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。
LinuxIDC.com拥有管理笔名和留言的一切权利。

点评: 字数
姓名: