rtcwake 無法在 MacBook Air 上安裝的 Ubuntu 14.04 上執行(2012 年中)
我在 MacBook Air(2012 年中)上安裝了 Ubuntu 14.04 GNU/Linux。我正在嘗試用來
rtcwake
實現“從掛起延遲休眠”,如https://askubuntu.com/a/33192(此處的特定案例並不重要)。但是rtcwake
,發佈為,例如,sudo rtcwake --seconds 120 --mode mem
只進入暫停(
--mode mem
)幾秒鐘(不管--seconds
選項說什麼)並立即返回。在這個系統上,掛起和休眠都可以正常工作,例如當由pm-suspend
orpm-hibernate
(使用核心的swsusp
)觸發時,或者在關閉蓋子時。機器保持正確的時間,並可以在 Ubuntu 中顯示或更新它。相同的命令在具有類似 GNU/Linux 作業系統的另一台(非 Apple)機器上按預期工作。我知道 MAC OS X 具有這種功能,可以在預設時間或預設持續時間後從睡眠中喚醒。所以,我相信,他們正在訪問一個內部時鐘。我的問題是(所有相關的):
是否有一些在幕後發生的喚醒事件觸發了這種立即喚醒?我懷疑這可能是罪魁禍首,因為正如我上面提到的,否則機器會正確掛起。(但話又說回來,正確掛起可能是由於
SUSPEND_MODULES
在這種“正常”掛起之前被鉤子移除了有問題的模組。)此外,機器不會從正常掛起中喚醒,例如由合上蓋子,當預定的時候rtcwake
說它應該。如果沒有任何“隱藏”喚醒事件,我如何使用這個內部時鐘來觸發 GNU/Linux 中的掛起計劃喚醒,因為
rtcwake
它似乎不起作用?此時鐘 RTC 是否兼容以支持來自 GNU/Linux 工具的標準驅動程序模型喚醒標誌?是否有任何其他方法/解決方法來實現此結果?
我已經找出了罪魁禍首。執行並逐個
cat /proc/acpi/wakeup
禁用設備(使用,例如,上面輸出中列出的設備縮寫在哪裡),結果證明這是“過早地”喚醒機器。*enabled``sudo echo 'DEVABBRV' > /proc/acpi/wakeup``DEVABBRV``cat``LID0
這可能是由於蓋子中有一些非標準的專有硬體感測器。禁用喚醒功能
LID0
(可以通過添加 使其永久echo 'LID0' > /proc/acpi/wakeup
化/etc/rc.local
)使rtcwake
,特別是sudo rtcwake --seconds 120 --mode mem
,按預期執行。但是,對於我的特定案例(使用https://askubuntu.com/a/33192中的腳本),問題仍未解決,因為在該腳本中執行時
rtcwake
不會喚醒機器。