我很难修复 HP 笔记本电脑的 ACPI 子系统(Pavilion DV6-6008el,Ubuntu Natty 64 位)。
只有在 grub 中指定为内核参数时才能启动acpi=off
,否则会出现黑屏和系统挂起的情况。黑屏和 ACPI 禁用都是不可接受的。还有另一个类似问题我在 Ask Ubuntu 上提供了其他详细信息。
我找到了关于如何调试 ACPI 的优秀文档;这种技术特别有用:如果反编译并重新编译 DSDT 表时编译器给出错误,那么... 表已损坏,这可能是启动失败的原因。下一步是修复代码,编译并用修复的代码覆盖系统 DSDT(重新编译内核或将自定义 DSDT 构建到 initrd 中)。这是程序:
# apt-get install acpidump
# dump a system's ACPI table with DSTD signature to an ASCII file
sudo acpidump -t DSDT > dump
# convert ASCII acpidump output to raw binary table. Creates DSDT.dat, binary.
acpixtract dump
# apt-get install iasl
# disassemble AML to ASL, creates DSDT.dsl
# (AML: ACPI Machine Language, binary. ASL: ACPI Source Language, source)
iasl -d DSDT.dat
# recompile AML in assembler (-ta) or C (-tc) hex table. -vr disables remarks.
iasl -vr -tc DSDT.dsl
哎呀,iasl intel 编译器抱怨:
DSDT.dsl 37: External (\TNOT)
Error 4057 - ^ Name already exists in scope (\TNOT)
DSDT.dsl 11050: Method (PAPR, 0, NotSerialized)
Warning 1088 - ^ Not all control paths return a value (PAPR)
DSDT.dsl 12566: Method (_CRS, 0, NotSerialized)
Warning 1088 - ^ Not all control paths return a value (_CRS)
DSDT.dsl 12566: Method (_CRS, 0, NotSerialized)
Warning 1081 - ^ Reserved method must return a value
(Buffer required for _CRS)
ASL Input: DSDT.dsl - 12748 lines, 424447 bytes, 5910 keywords
Compilation complete. 1 Errors, 3 Warnings, 8 Remarks, 20 Optimizations
这里是完整表格来源(36kb)。
任何帮助修复问题、错误和警告的帮助都将不胜感激。非常感谢。
有用的资源
- 高级配置和电源接口规范 V4,2010 (第 18 章 ASL 参考,第 19 章 AML 规范)
- /doc/Documentation/acpi 的索引(内核网站)
澳大利亚临床心理学家协会(ACPI 组件架构)
如何修复有缺陷的 DSDT 文件(ubuntuforums.org)
答案1
您可以尝试安装 fglrx 驱动程序并使用 aticonfig 调整 acpi 选项。以下是非官方 AMD 维基的链接http://wiki.cchtml.com/index.php/Main_Page。它对我帮助很大。如果有帮助,请告诉我。谢谢
答案2
我自己试着这么做。
我发现 Gentoo Wiki 非常有用:ACPI/修复常见问题。
它不能直接适用于 Ubuntu,但几乎可以。
到目前为止我注意到的唯一区别是当您安装“iasl”时。
Gentoo:
echo "sys-power/iasl ~x86" >> /etc/portage/package.keywords; emerge -av iasl
乌本图:
sudo apt-get install iasl
答案3
您可以执行 sudo modprobe fglrx,如果出现相同的错误,则可能需要重新启动。如果这有帮助,请告诉我。谢谢