我见过从 Debian 到 Arch 以及多种不同设备上都会弹出 ACPI 错误。我知道 ACPI 的大致含义:
ACPI(高级配置和电源接口)是一种有效处理台式机和移动计算机功耗的行业规范。
我也知道这往往只是一个显基于 *nix 的发行版上会出现错误,因为它们往往比 Window$ 具有更详细的内核反馈。
我的问题如下:
- 到底是谁的错呢?是厂家支持不好,还是内核支持不够?
- 处理这些错误的“最佳实践”是什么?在大多数情况下,我遇到的这些问题只是一个碍眼的问题,但是像我们微软的朋友一样把这些问题隐藏起来可以吗?
- 什么是实际上当这些错误发生时会发生什么?仅从定义来看,听起来任何统治权力如果做得不好都会产生一些相当负面的副作用,但这些似乎大多是被动的。它到底应该做什么?
答案1
尽管 ACPI 最初是一个“处理功耗的接口”,但它已经变得更加复杂,并且还指定了其他内容,例如硬件资源的分配。
问题是 ACPI 规范相当复杂。硬件供应商经常违反 ACPI 规范,但当他们提供带有 Windows 驱动程序的硬件时,并以驱动程序能够很好地处理损坏的 ACPI 数据的方式编写驱动程序,没有人注意到。直到您在 Linux 上尝试相同的操作(它需要符合规范的数据),然后您就会收到这些错误。
更有趣的是,ACPI 数据可能会根据操作系统的不同而有所不同(ACPI 有查询操作系统的函数),但查询函数有时有效,有时无效,有时会尝试为 Linux 提供正确的值,同时保持为 Windows 提供损坏的值,因为它们碰巧与驱动程序一起工作,有时为 Linux 提供完全未经测试的值等。您可以看到这是怎么回事:这一切都是一团糟。
我个人的“最佳实践”是:忽略任何错误,直到您需要的东西出错为止。在这种情况下,摆弄操作系统识别,摆弄内核参数作为覆盖,如果其他一切都失败,坐下来反编译 ACPI 表并尝试找出到底出了什么问题。最后一点不好玩。