内核引导参数“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。 这个参数让你解决这个愚蠢的问题。