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


21

我在笔记本电脑的屏幕亮度控制上遇到了麻烦,并通过在文件中添加acpi_osi=linuxacpi_backlight=vendor参数进行了修复grub.cfg。我想知道这些参数的含义以及它们为什么起作用。

Answers:


28

内核参数记录在kernel.org上

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

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

acpi_osi=Linux 当被ACPI代码询问是否为“ Linux”时,使Linux再次回答是,因此允许ACPI代码启用Linux的解决方法和/或禁用Windows的解决方法。

acpi_backlight=vendor更改检查背光ACPI驱动程序的顺序。通常video,当ACPI DSDT提供声称具有标准兼容性的背光设备时,Linux将使用通用驱动程序,并且仅在找不到该设备的情况下才检查其他供应商特定的驱动程序。acpi_backlight=vendor颠倒该顺序,以便首先尝试供应商特定的驱动程序。


3

Google针对“ acpi_osi”的第一个结果说明acpi_osi=linux

如果默认情况下未检测到Windows,BIOS通常会禁用功能,当询问Linux是否正在运行时,内核会响应false。acpi_osi=Linux告诉内核响应为true。(请参阅参考资料drivers/acpi/osl.c)似乎需要告诉BIOS事实。

Google针对“ acpi_osi”的第二个结果说明acpi_backlight=vendor

acpi_backlight=vendor将优先供应商特定驱动器(例如thinkpad_acpisony_acpi而不是ACPI等)video.ko的驱动程序。


我认为这些答案(尤其是对于acpi_osi)不够认真。
Cestarian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.