我在我的 PC 上使用 Linux 已经很长时间了。最近一段时间,文本控制台上出现了新的内核错误消息。
它还在 中显示为红色消息journalctl -p err
。以前并没有出现过这样的情况。
问题:为什么会发生这种变化?
注意:我正在写这个非常普遍的问题,以便在下面提供答案。
注意:特定系统上的 ACPI 错误消息可能有更具体的原因、问题和解决方案。例如,看下面两个问题:
我的错误信息是:
ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359)
ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT0._GTF] (Node ffff8d859a5caaa0), AE_NOT_FOUND (20160831/psparse-543)
ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359)
ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT0._GTF] (Node ffff8d859a5caaa0), AE_NOT_FOUND (20160831/psparse-543)
ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359)
ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT4._GTF] (Node ffff8d859a5ca758), AE_NOT_FOUND (20160831/psparse-543)
ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359)
ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT5._GTF] (Node ffff8d859a5ca9b0), AE_NOT_FOUND (20160831/psparse-543)
ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359)
ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT4._GTF] (Node ffff8d859a5ca758), AE_NOT_FOUND (20160831/psparse-543)
ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20160831/psargs-359)
ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT5._GTF] (Node ffff8d859a5ca9b0), AE_NOT_FOUND (20160831/psparse-543)
答案1
我只想说它只发生在任何发行版的内核 4.9.x [及更高版本]上。
好的,内核二分表示有罪的提交是:
https://github.com/torvalds/linux/commit/b5c0875a16039d90f4cdf6b75ae4031daae01d56
commit b5c0875a16039d90f4cdf6b75ae4031daae01d56
作者:吕征 <[电子邮件受保护]>
日期:2016 年 8 月 4 日星期四 16:42:49 +0800ACPICA:实用程序:引入允许 Linux 设置正确日志记录级别的工具
所以,至少对我来说,这个问题似乎一直存在,只是以前没有报告过。如果我正确理解 bug 43229,根本问题实际上是 BIOS 问题。
我通过恢复上述提交在内核 4.10-rc8 上进一步测试:
doug@s15:~/temp-k-git/linux$ git log --oneline 1dc8c4f Revert "ACPICA: Utilities: Introduce facility to allow Linux to set correct logging levels" 7089db8 Linux 4.10-rc8 ...
事实上,从暂停恢复后,这些消息就不再出现。
答案2
您可以通过使用内核参数禁用 libata ACPI 探测来消除错误libata.noacpi=1
。
GRUB_CMDLINE_LINUX_DEFAULT="libata.noacpi=1"