当前位置: 首页>>技术问答>>正文


内核启动参数“设置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的内核启动选项是什么吗?

最佳解决办法

I think you mean =Windows, not Linux. The argument tells the kernel to lie to the ACPI BIOS and tell it that it is something other than Linux (which is why specifying Linux is silly).

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

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

参考

次佳解决办法

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

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

第三种解决办法

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1747.html,未经允许,请勿转载。