内核参数 acpi_osi=linux 和 acpi_backlight=vendor 有什么作用?

use*_*655 33 linux grub acpi linux-kernel

我在笔记本电脑的屏幕亮度控制上遇到了问题,我通过将acpi_osi=linux和acpi_backlight=vendor参数添加到文件中来修复它grub.cfg。我想知道这些参数是什么意思以及它们为什么起作用。

cg9*_*909 42

内核参数记录在 kernel.org 上。

要了解acpi_osi它的作用,您需要大致了解 ACPI 的工作原理。ACPI 由所谓的表组成,BIOS 在操作系统启动之前将这些表加载到 RAM 中。其中一些仅以固定格式包含有关主板上基本设备的信息,但有些如 DSDT 表包含 AML 代码。该代码由操作系统执行,并为操作系统提供树状结构,描述主板上的许多设备以及在启用节能等情况下由操作系统执行的可调用功能。AML 代码可以通过调用该_OSI函数来询问操作系统它是哪个操作系统。供应商经常使用它来解决某些 Windows 版本中的错误等问题。

由于许多硬件供应商仅使用(当时)最新版本的 Windows 测试他们的产品,因此没有变通方法的“常规”代码路径通常有问题。因此,当被问及是否是 Windows 时,Linux 通常会回答“是”。当被问及它是否是“Linux”时,Linux 也曾经回答是,但这导致 BIOS 供应商解决(当时)最新 Linux 内核版本中的错误或缺失的功能,而不是打开错误报告或提供补丁。当这些错误被修复后,变通办法会导致所有后来的 Linux 版本出现不必要的性能损失和其他问题。

acpi_osi=Linux 当 ACPI 代码询问它是否为“Linux”时,使 Linux 再次回答“是”,从而允许 ACPI 代码启用 Linux 的变通方法和/或禁用 Windows 的变通方法。

acpi_backlight=vendor更改检查背光 ACPI 驱动程序的顺序。通常 Linux 将使用通用video驱动程序,当 ACPI DSDT 提供声称标准兼容性的背光设备时,如果找不到此类设备,则只会检查其他供应商特定的驱动程序。acpi_backlight=vendor颠倒此顺序,以便首先尝试供应商特定的驱动程序。