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

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

我的主板是微星做的,BIOS版本是:A1414NT2 V1.08,
我的操作系统是: 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小工具:






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


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

郑重声明:资讯 【编译内核使Linux实现对笔记本的ACPI电源管理支持】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——