Terminal on Kaypro 10

Photo by Matthew Ratzloff on Flickr

如果你是 Linux 使用者,不知道你有沒有遇過在桌面環境點關機後若是馬上蓋起螢幕就會進入睡眠(Suspend)而無法繼續關機的情況,亦或是你想將家中不用的舊電腦裝上 Arch 作為伺服器,想要蓋上螢幕省電的話就需要設定 logind,不然電腦就會睡眠,網路連接也會中斷。

ACPI 事件

systemd 會掌管電源相關的 ACPI 事件,事件動作可以是 ignore, poweroff, reboot, halt, suspend, hibernate, hybrid-sleep, suspend-then-hibernate, lockkexec

名詞 翻譯
ignore 什麼都不做
poweroff 關閉電源(直接切斷電源)
reboot 重新啟動
halt poweroff 類似,不管系統狀態直接停止電腦運作
suspend 暫停,和 Windows 的睡眠一樣,資料暫存在 RAM,電腦與週邊設備會保持在低電源消耗模式
hibernate 冬眠,類似 WIndows 中的休眠,暫存資料儲存在磁碟中
hyber-sleep 交互式睡眠,結合暫停與冬眠特性,資料會同時儲存在 RAM 和磁碟,只會對 RAM 供電,其他元件斷電
lock 鎖定螢幕
kexec kernel execution,允許略過 BIOS 從現有內核啟動新的內核(其實我也不太了解 kexec 的作用)

修改設定檔

logind 設定檔位於 /etc/systemd/logind.conf/etc/systemd/logind.conf.d/*.conf,Arch Linux 則是在 /etc/systemd/logind.conf

找到 HandleLidSwitch 的那行並取消註解,值改為 ignore 後儲存離開,蓋上螢幕時就會不進行任何動作。

要應用變更必須重啟 systemd-logind.service

1
$ sudo systemctl restart systemd-logind.service

所有事件處理器

事件處理器 功能描述 預設動作
HandlePowerKey 當按下電源鍵 poweroff
HandleSuspendKey 當按下睡眠鍵 suspend
HandleHibernateKey 當按下休眠鍵 hibernate
HandleLidSwitch 當螢幕蓋上 suspend
HandleLidSwitchDocked 當系統連接上擴展基座或多台顯示器時蓋上螢幕 ignore
HandleLidSwitchExternalPower 當電腦連接外部電源時蓋上螢幕 使用 HandleLidSwitch 的動作

Reference