以下 dmesg 输出表示什么意思?

以下 dmesg 输出表示什么意思?

我不确定以下内容是什么意思:-

[    0.652039] ACPI: Added _OSI(Module Device)
[    0.652044] ACPI: Added _OSI(Processor Device)
[    0.652049] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.652054] ACPI: Added _OSI(Processor Aggregator Device)
[    0.656286] ACPI: EC: Look up EC in DSDT
[    0.660361] ACPI: Executed 1 blocks of module-level executable AML code
**[    0.720310] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored**
[    0.721539] ACPI: SSDT 000000009ce70798 00727 (v01  PmRef  Cpu0Cst 00003001 INTL 20100121)
[    0.722623] ACPI: Dynamic OEM Table Load:
[    0.722630] ACPI: SSDT           (null) 00727 (v01  PmRef  Cpu0Cst 00003001 INTL 20100121)
[    0.752832] ACPI: SSDT 000000009ce71a98 00303 (v01  PmRef    ApIst 00003000 INTL 20100121)

这是什么类型的错误?这个错误会影响我的系统性能吗?

答案1

据我所知,这意味着与 ACPI 相关的 Bios/Firmware 的查询(如果您正在运行笔记本电脑,则意味着电池,如果您正在运行台式电脑,则意味着 UPS 或类似设备)无法被识别。

Ubuntu 的做法是忽略查询以避免出现问题。有些东西你可能看到因为这个是:

  1. Ubuntu 电池状态无法检测电池是否已断开连接。仍显示相同的“电池已连接”符号。

  2. 电池充电通知未正确更新。

这并不意味着电池无法正确充电,或无法正确检测电池状态,只是意味着您在桌面上无法正确看到它。这甚至不意味着它无法正确显示给您。

对于与性能相关的内容,您不会遇到任何性能问题。它将像往常一样运行。

基本上,这来自 BIOS,首先假设操作系统是 Windows,然后对其进行查询以确认一些信息。

无论如何,不​​用担心,Ubuntu 和任何其他 Linux 发行版都可以有效地告诉 BIOS 它实际上是 Windows,并从中获取正确的查询。Dmesg 和启动系统只是在那里发布该消息,以通知您 BIOS 向操作系统询问某事(请记住,它假设是 Windows),而 Linux 试图伪装它,以便 BIOS 发送完整的查询。这就是为什么 BIOS 制造商不应该假设他们唯一可以在 Windows 上运行的硬件的原因。

答案2

ACPI 表 (DSDT、SSDT) 由 BIOS 提供。这些 ACPI 表允许操作系统通过抽象层 (ACPI) 控制硬件。制造商可以使用 ACPI_OSI方法 (操作系统接口) 向操作系统查询某些功能。

通过这种机制,ACPI 可以检测操作系统(和版本)并在必要时应用一些特殊功能。这对于 Windows 机器尤其有用,因为较旧的 Windows 版本可能不支持机器的较新功能。然而,在 Linux 中,理念是如果 Linux 内核不支持某个功能,BIOS 制造商不应排除该功能。相反,社区(内核开发人员)必须添加代码以支持较新的机器中的这些功能。

过去,如果 BIOS 制造商检测到 Linux 系统,他们会删除某些功能。虽然 BIOS 发布时可能不支持某些功能,但将来可能会支持。因此,对“Linux”的查询将被忽略。

答案3

BIOS 中有一个表正在被查询,一些 BIOS 程序员用它来做不该做的事情 - 以至于严重影响了一些发行版。内核编写者决定使用的解决方案是在查询时返回 FALSE,以阻止这种噪音。

据称,如果你添加acpi_osi=Linux到你的内核命令中,它可能会修复它,但我发现它在我的华硕 H81T 上不起作用。

所以基本上,忽略它。

相关内容