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

我的笔记本电脑中有亮度控制的问题,它有英特尔高清显卡和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 

– http://redsymbol.net/linux_boot_parameters/

我没有找到解决任何笔记本电脑问题的原因。

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

我认为你的意思是=Windows ,而不是Linux 。 该论点告诉内核欺骗ACPI BIOS并告诉它它不是Linux(这就是为什么指定Linux是愚蠢的)。

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

这可能是驱动程序问题或ACPI实现不正确。 您必须取出dsdt并对其进行反汇编以查看代码并更好地了解Linux OSI下的dsdt或禁用。

参考

  • 为什么Linux ACPI驱动程序假装为Windows并默认禁用OSI(Linux)
  • ACPI / Fix常见问题 – Gentoo Linux Wiki
  • 如何添加内核启动参数?

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

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

我认为你的意思是=Windows ,而不是Linux 。 该论点告诉内核欺骗ACPI BIOS并告诉它它不是Linux(这就是为什么指定Linux是愚蠢的)。 已知某些BIOS会检查它们是在Windows下运行还是在特定版本的Windows下运行,如果不是,则禁用function。 这个参数让你解决这个愚蠢的问题。