家建服务器折腾笔记(一)— Linux 笔记本合盖休眠

背景

很久之前就规划要在自己家里放一台电脑在家里跑一些服务(电费比起云服务器的费用来说简直小巫见大巫)。因此去年搬了新家以后第一时间将此事提上日程,装修好以后翻出了我尘封已久的不用的笔记本电脑。虽然键盘摁起来非常的难受,但是服务器嘛,也不需要输入什么东西。因此围绕这个笔记本,开启了家建服务器的折腾之路。

问题

笔记本做好Linux系统以后,合盖后它是默认休眠,因此需要更改配置来让他合盖后仍然可以运行

解决

通过修改 /etc/systemd/logind.conf 文件来使的生效

HandleLidSwitch=ignore # 笔记本合盖时的行为(通常为suspend)
HandleLidSwitchExternalPower=ignore  # 接通电源时合盖的行为

如果没有这个文件,那么就需要新建,此时需要添加 [Login] 节标识 ,新添加的文件如下:

[Login]
# ...其余配置
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
# ...其余配置

修改后,重启服务使配置生效

sudo systemctl restart systemd-logind

扩展

logind.conf配置文件

/etc/systemd/logind.conf 是 systemd-logind 服务的主配置文件,负责管理用户登录会话、电源管理事件和设备权限等关键系统功能。

systemd-logind 服务主要负责:

  • 用户会话的跟踪和管理
  • 电源按钮、休眠、挂起等操作的处理
  • 设备访问权限的控制
  • 多用户环境下的资源管理

logind.conf主要配置项

会话管理配置

配置项 可能的值 默认值 含义
NAutoVTs= 正整数 6 自动分配的虚拟终端数量(tty1-tty6)
ReserveVT= 正整数 6 保留给特殊用途的虚拟终端号
KillUserProcesses= yes/no no 用户完全注销后是否杀死其所有进程
KillOnlyUsers= 用户列表 - 指定注销后要杀死进程的特定用户
KillExcludeUsers= 用户列表 root 指定不杀死其进程的用户(通常包括root)
InhibitDelayMaxSec= 时间(秒) 5s 应用程序可以延迟关机的最长时间
UserStopDelaySec= 时间(秒) 10s 用户会话终止到实际杀死进程的延迟
RemoveIPC= yes/no yes 用户注销后是否删除其IPC对象(共享内存等)
LoginRetryLimit= 正整数 5 认证失败的最大重试次数
StopIdleSessionSec= 时间 infinity 空闲会话多久后自动停止

电源管理配置

配置项 可能的值 默认值 含义
HandlePowerKey= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset poweroff 按下电源键的行为
HandleSuspendKey= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset suspend 按下暂停键的行为
HandleHibernateKey= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset hibernate 按下休眠键的行为
HandleLidSwitch= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset suspend 笔记本合盖的行为
HandleLidSwitchExternalPower= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset suspend 接通电源时合盖的行为
HandleLidSwitchDocked= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset ignore 连接到扩展坞时合盖的行为
IdleAction= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset ignore 系统空闲时执行的操作
IdleActionSec= 时间 30min 系统空闲多久后执行IdleAction

抑制锁相关配置

配置项 可能的值 默认值 含义
PowerKeyIgnoreInhibited= yes/no no 是否忽略对电源键操作的抑制
SuspendKeyIgnoreInhibited= yes/no no 是否忽略对暂停键操作的抑制
HibernateKeyIgnoreInhibited= yes/no no 是否忽略对休眠键操作的抑制
LidSwitchIgnoreInhibited= yes/no yes 是否忽略对合盖操作的抑制
HoldoffTimeoutSec= 时间 30s 系统启动后忽略电源事件的时间

资源和权限管理

配置项 可能的值 默认值 含义
RuntimeDirectorySize= 字节数/百分比 10% 每用户运行时目录(/run/user/$UID)的大小限制
RuntimeDirectoryInodesMax= inode数/infinity infinity 每用户运行时目录的最大inode数
UserTasksMax= 任务数/infinity 33% 每用户最大任务(进程)数量
SessionsMax= 整数/infinity 8192 系统允许的最大会话数
InhibitorsMax= 整数/infinity 8192 最大抑制锁数量

设备相关配置

配置项 可能的值 默认值 含义
EnableMultiSession= yes/no yes 是否启用多会话支持(允许多用户同时登录)
HandleRebootKey= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset reboot 按下重启键的行为
HandleRebootKeyLongPress= ignore/poweroff/reboot/halt/kexec/suspend/hibernate/hybrid-sleep/lock/factory-reset poweroff 长按重启键的行为

配置中可能值的说明

可能值 详细说明
ignore 完全忽略该事件,不执行任何操作。系统继续正常运行。
poweroff 正常关闭系统电源。会通知所有进程关闭,保存数据,卸载文件系统,最后切断电源。相当于执行 systemctl poweroff 命令。
reboot 重新启动系统。会正常关闭所有程序和服务,然后重启硬件。相当于执行 systemctl reboot 命令。
halt 停止系统运行但不切断电源。系统停止但硬件仍保持通电状态,相当于执行 systemctl halt 命令。
kexec 使用 kexec 系统调用执行快速重启,跳过 BIOS/UEFI 初始化阶段直接加载新内核。通常用于无缝系统更新或故障转储。
suspend 挂起到内存(也称为睡眠模式,ACPI S3状态)。系统状态保存在RAM中,大部分硬件断电,仍消耗少量电力维持RAM内容。唤醒较快。
hibernate 休眠(ACPI S4状态)。系统状态完整保存到硬盘,然后完全断电。启动时从硬盘恢复状态。无需电力维持,但唤醒较慢。
hybrid-sleep 混合睡眠模式,结合suspend和hibernate的优点。状态同时保存到内存和硬盘,正常情况下像挂起一样快速唤醒,但如果电源耗尽也可从硬盘恢复。
lock 仅锁定屏幕,不改变系统电源状态。通常会激活屏幕保护程序或显示登录界面,要求用户输入密码才能继续使用。
factory-reset 将系统恢复到出厂设置,会清除所有用户数据。通常需要特殊配置才能使用此功能,以防止意外触发。
posted @ 2025-04-02 16:41  忆故人  阅读(222)  评论(0)    收藏  举报