acpi_os_name 和 acpi_osi 语义

acpi_os_name 和 acpi_osi 语义

我的笔记本电脑在休眠时遇到奇怪的行为,我想假装我正在运行最新版本的 Windows,看看这是否有帮助。

微软的如何使用 _OSI 识别 ACPI 中的 Windows 版本 指的是_OSI我假设映射到内核命令行acpi_osi

然而基于内核文档acpi_os_name提到了欺骗:

    acpi_os_name=   [HW,ACPI] Tell ACPI BIOS the name of the OS
                    Format: To spoof as Windows 98: ="Microsoft Windows"

奇怪的是,这个 gentoo 页面不是说要修改acpi_os_name,而是acpi_osi说要冒充Windows。

内核文档说这acpi_osi是针对受支持的操作系统的:

    acpi_osi=       [HW,ACPI] Modify list of supported OS interface strings
                    [...]  
                    acpi_osi=!*             # remove all strings
                    acpi_osi=!              # disable all built-in OS vendor strings

文档似乎很少,对我来说提出了这些问题:

  1. 两者之间有什么区别/相互作用?

    1.1 一个是否会凌驾于另一个之上?

  2. 如果我设置了acpi_os_name,我是否也应该将其添加acpi_osi为“受支持”的操作系统?

  3. acpi_osi=!在设置另一个值之前我应该​​禁用所有 with 吗?

  4. 禁用和删除字符串有什么区别?是否在重新启动后仍然存在?

  5. 有没有办法找出 ACPI/UEFI 支持或期望的值是什么?

答案1

5)的部分答案

列出来自 ACPI 的匹配字符串Windows

(cd /tmp && mkdir acpi && cd acpi && sudo acpidump -b && for i in *; do echo $i:; strings -a $i | grep -i windows; done)

我的输出是:

[...]
dsdt.dat:
Windows 2001
Windows 2001 SP1
Windows 2001 SP2
Windows 2001.1
Windows 2006
Windows 2009
Windows 2012
Windows 2013
Windows 2015
[...]
ssdt9.dat:
Windows 2013

我不知道为什么ssdt9只包含Windows 2013.

相关内容