答案1
這取決於 Ubuntu(和 BIOS 功能)。不可能是任何其他方式,因為作業系統需要協調大量事情才能進入 S2 以上的任何狀態。然而,BIOS 可能會通知作業系統它想要進入特定狀態。
Ubuntu、Linux 和現代 PC 中一般有兩種掛起模式:
掛起至 RAM (ACPI S3) 會關閉 CPU 和所有其他裝置的電源,除非它們表示需要在 S3 中保持開啟。主記憶體 (RAM) 保留其電源並維持系統狀態以供稍後恢復。
掛起到磁碟或「休眠」(ACPI S4) 將系統狀態儲存到非揮發性儲存媒體(通常是硬碟或 SSD),並完全關閉系統電源。作業系統可以在重新啟動時看到儲存的系統映像並選擇從中復原。
目前,它並未預設啟用或向 Ubuntu 桌面用戶公開。
您提到的其他 ACPI 全域狀態是:
S1 和 S2 是節能潛力較小但恢復速度較快的狀態。這些通常不被視為掛起狀態,但一旦 CPU 閒置幾毫秒,電腦可能會選擇自動進入它們。這通常由 CPU 和 BIOS 完成,無需與作業系統直接互動。
斷電(S5)的含義正如您所想像的那樣。
(來源)
答案2
Q1。我如何知道在 Ubuntu 16.04 中按下暫停按鈕是否會導致 S1、S2、S3、S4 或 S5?
答1:在我的系統上,我在文件中找到了訊息/proc/acpi/喚醒。另外,命令acpitool -w或者acpitool -e提供與中找到的資訊相同的信息/proc/acpi/喚醒。
Q2。這是由 UEFI/BIOS 或 Ubuntu 或兩者中的設定決定的(即 ACPI 全域狀態)?
答2:答案是UEFI/BIOS。可以在 Ubuntu 中修改 UEFI/BIOS 定義的 ACPI 全域狀態,但是任何變更只能用於偵錯和開發目的。
根據 Linux/ACPI,“DSDT修改僅用於調試和開發”。也,「DSDT 是區分系統描述表的縮寫。該表包含區分定義區塊,它提供有關基本系統的資訊和配置資訊。它始終由作業系統在啟動時插入到 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 應該在未經修改的韌體上運行。因此,舊的 DSDT 資料庫 acpi.sourceforge.net網站現在很大程度上已成為歷史文物。
若要詳細了解 ACPI 以及全域狀態和 S 狀態,請閱讀“進階配置和電源介面規格”www.acpi.info。
答案3
根據我的經驗,暫停狀態將由 BIOS 決定。在我的一台電腦上,BIOS 中的電源狀態可以設定為「S3」或「停用」。設定“S3”使 PC 進入暫停/“待機”狀態。將其設為「禁用」會使 PC 進入 S1,因為處理器的風扇會持續旋轉。休眠始終為“S4”,關閉電源則為“S5”。