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

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

我的笔记本电脑配有 Intel HD 显卡和 Ubuntu 10.10 64 位,在亮度控制方面遇到了问题。因此,当我搜索修复方法时,我发现一个常见的建议是编辑 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

http://redsymbol.net/linux_boot_parameters/

我找不到理由使固定任何笔记本电脑问题。

那么有人能告诉我内核启动选项有什么acpi_osi=Linux作用吗?

答案1

我认为你的意思是=Windows,不是Linux。该参数告诉内核对 ACPI BIOS 撒谎,并告诉它这是其他比Linux更糟糕(这就是为什么指定Linux是愚蠢的)。

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

这要么是驱动程序问题,要么是 ACPI 实现不正确。您必须拆开它dsdt并对其进行分解,以查看代码,并更好地了解 Linux OSI 下哪些地方损坏或禁用。

参考

答案2

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

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

答案3

我认为你的意思是=Windows,不是Linux。该参数告诉内核对 ACPI BIOS 撒谎,并告诉它这是其他比 Linux 更糟糕(这就是为什么指定 Linux 是愚蠢的)。某些 BIOS 会检查它们是否在 Windows 或特定版本的 Windows 下运行,如果不是,则会禁用功能。此参数可让您解决这种愚蠢的问题。

相关内容