在Ubuntu 16.04中,ACPI Global State做了Suspend的结果?

我已经阅读了“ 什么是暂停 ”的post。

但是,我想确切地知道哪个ACPI Global State按下Suspend按钮。 有人可以解释一下吗?

具体来说,我怎么知道按Ubuntu 16.04中的Suspend按钮是否会导致S1,S2,S3,S4或S5? 这是通过设置UEFI / BIOS还是Ubuntu或两者来确定的?

这取决于Ubuntu(以及BIOSfunction)。 它不可能是任何其他方式,因为操作系统需要协调大量的事情才能进入S2以上的任何状态。 然而,BIOS可以通知操作系统它想要进入特定状态。

Ubuntu,Linux和现代PC中有两种暂停模式:

  • 挂起到RAM(ACPI S3)关闭CPU和所有其他设备的电源,除非它们表明它们需要在S3中继续运行。 主存储器(RAM)保留其电源并维持系统状态以便以后恢复。

  • 挂起到磁盘或“hibernate”(ACPI S4)将系统状态保存到非易失性存储介质(通常是硬盘驱动器或SSD),并完全关闭系统电源。 操作系统可以在重新启动时查看存储的系统映像,并选择从中恢复。

    这些天默认情况下,它没有启用或暴露给Ubuntu桌面用户。

您提到的其他ACPI全球州是:

  • S1和S2是节能潜力较小但恢复较快的状态。 这些通常不被认为是暂停状态,但计算机可以选择在CPU未使用几毫秒后自动输入它们。 这通常由CPU和BIOS完成,无需操作系统的直接交互。

  • 断电(S5)意味着您的想法。

( 来源 )

Q1 。 如何知道在Ubuntu 16.04中按暂停按钮是否会导致S1,S2,S3,S4或S5?

Ans1:在我的系统上,我在文件/ proc / acpi / wakeup中找到了信息。 此外,命令acpitool -wacpitool -e提供与/ proc / acpi / wakeup中相同的信息。

Q2。 这是(即ACPI全局状态)是由UEFI / BIOS或Ubuntu中的设置决定的还是两者兼而有之?

Ans2:答案是UEFI / BIOS。 可以在Ubuntu中修改UEFI / BIOS定义的ACPI全局状态,但是任何更改只能用于调试和开发目的。

根据Linux / ACPI , “DSDT修改仅用于调试和开发” 。 此外, “DSDT是区分系统描述表的首字母缩写。此表包含区分定义块,它提供有关基本系统的信息和配置信息。它始终由OS在启动时插入ACPI命名空间。”

根据IntelOpenSource.org Linux * -ACPI :

DSDT(区分系统描述表)是BIOS中的主要AML表。 根据acpidump的描述,可以从机器中提取DSDT,修改ASL,并且可以编译新的AML DSDT。 以下部分显示了两种告诉Linux使用此修改后的DSDT的方法,而不是BIOS附带的版本。

请注意,覆盖DSDT仅是一种调试技术。 它不是运行生产系统的可行方式,因为当客户修改系统固件时,没有供应商会支持系统,也没有Linux分销商可能支持修改过的系统固件。

在Linux ACPI的早期,DSDT修改常见于解决BIOS错误和Linux错误。 但是,Linux ACPI项目的既定目标是Linux应该在未经修改的固件上运行。 因此,旧的acpi.sourceforge.net网站上的DSDT数据库现在主要是历史工件。

有关ACPI以及全局状态和S状态的详细信息,请阅读http://www.acpi.info上的“高级配置和电源接口规范”。

根据我的经验,暂停状态将由BIOS确定。 在我的一台PC上,BIOS中的电源状态可以设置为“S3”或“禁用”。 设置’S3’使PC进入暂停状态/’待机’。 将其设置为“已禁用”会使PC进入S1,因为处理器的风扇一直在旋转。 hibernate总是’S4’,以及断电 – ‘S5’。