我的笔记本电脑的屏幕亮度控制出了问题,我通过将acpi_osi=linux和acpi_backlight=vendor参数添加到grub.cfg文件中来修复它。我想知道这些参数意味着什么以及它们为什么会起作用。
发布于 2016-03-07 03:28:31
内核参数是记录在kernel.org。
要理解acpi_osi的功能,您大概需要知道ACPI是如何工作的。ACPI由所谓的表组成,BIOS在操作系统启动前将BIOS加载到RAM中.其中一些简单地包含关于主板上固定格式的基本设备的信息,但也有一些像DSDT表一样包含AML代码。此代码由操作系统执行,并为操作系统提供树状结构,描述主板上的许多设备和操作系统在启用节能时执行的可调用函数。反洗钱代码可以通过调用_OSI函数来询问操作系统是哪个操作系统。这经常被供应商用来解决问题,例如在某些Windows版本中解决bug。
由于许多硬件供应商只使用(当时)最新版本的Windows测试他们的产品,没有解决办法的“常规”代码路径通常是错误的。因为这个原因,当被问到是否是Windows时,Linux通常会回答是。当被问到是否是" Linux“时,Linux也会回答”是“,但是导致BIOS供应商处理错误或(当时)最新的Linux内核版本中缺少功能。并没有打开bug报告或提供补丁。当这些bug被修复时,这些解决方案会对所有以后的Linux版本造成不必要的性能损失和其他问题。
当被问到acpi_osi=Linux代码是否是" Linux“时,再次回答是肯定的,从而允许ACPI代码为Linux启用解决方案和/或禁用Windows的解决方案。
acpi_backlight=vendor更改检查背光的ACPI驱动程序的顺序。通常,当ACPI DSDT提供一个要求标准兼容性的背光设备时,Linux将使用通用video驱动程序,如果找不到这种设备,则只会检查其他特定于供应商的驱动程序。acpi_backlight=vendor会逆转这个顺序,因此首先尝试特定于供应商的驱动程序。
https://unix.stackexchange.com/questions/110624
复制相似问题