内核引导参数“set acpi_osi=Linux”有什么作用?

AIB*_*AIB 58 acpi kernel laptop graphics

我的笔记本电脑具有 Intel 高清显卡和 64 位 Ubuntu 10.10,我的笔记本电脑面临亮度控制问题。因此,当我搜索修复程序时,我发现一个常见的建议是编辑 GRUB 文件行,GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux acpi_backlight=vendor"

引导参数的文档acpi_osi说明:

acpi_osi=   [HW,ACPI] Modify list of supported OS interface strings
            acpi_osi="string1"      # add string1 -- only one string
            acpi_osi="!string2"     # remove built-in string2
            acpi_osi=               # disable all strings
Run Code Online (Sandbox Code Playgroud)

http://redsymbol.net/linux_boot_parameters/

我没有找到为什么这应该解决任何笔记本电脑问题的原因。

那么有人能告诉我内核引导选项的acpi_osi=Linux作用吗?

小智 35

我想你的意思是=Windows,不是Linux。该参数告诉内核骗ACPI BIOS,并告诉它的东西其他比Linux(这就是为什么指定Linux是愚蠢的)。

我敢肯定他的意思是他写的。是的,如果未检测到 Windows,BIOS 通常会禁用功能,但指定 Linux 并不愚蠢,因为默认情况下内核在询问 Linux 是否正在运行时响应 false。acpi_osi=Linux告诉内核响应 true。(参见drivers/acpi/osl.c) 看来您需要告诉 BIOS 真相。

这要么是驱动程序问题,要么是不正确的 ACPI 实现。您必须取出dsdt并反汇编它以查看代码并更好地了解 Linux OSI 下损坏或禁用的内容。

参考

  • 这对于我在带有 nvidia GeForce GT 525M 和 Intel HD 显卡的戴尔 vostro 3750 上安装 ubuntu 14.04 非常有用。 (2认同)

dan*_*uer 18

当内核询问 BIOS“嘿,你支持什么”时,该参数将“Linux”添加到支持的操作系统列表中。通过添加该字符串,稍后使用 ACPI 的东西会说“嘿,我有一个需要 ACPI 的功能,我正在运行 Linux - 支持哪些平台?” 他们会得到一个包含 Linux 的列表。

通过将其设置为 Linux,您基本上可以禁用任何检查以查看 BIOS 是否表明某些 ACPI 功能将适用于某些操作系统。这通常会使以前隐藏的事情起作用。但它也可能破坏过去有用的东西,在[希望]罕见的情况下。:)