资讯专栏INFORMATION COLUMN

linux笔记本设置休眠

AlexTuan / 2825人阅读

摘要:睡眠更准确的名称应该是混合睡眠,所谓混合即存储方式上包含了挂起和休眠两种方式,唤醒时会优先从内存中读取数据,如果设备在此状态下断电,就和休眠一样了。

也可在github上的此处查看(还包含一些笔记本相关的其他设置),一些更新修正推送到github比在博客上更新更方便。

挂起睡眠和休眠的区别

三种存储当前运行状态数据(前后台进程服务,不包含buff cache等)的方式

挂起suspend 存储到内存 设备通电 低功耗

睡眠hybrid-sleep 存储到内存和磁盘 设备通电 低功耗

休眠hibernate 存储到磁盘 设备断电 即设备会关机

三者其实都是suspend,只是存储位置和通电状态不同,三者分别可称为suspend to ram、suspen to ram and disk和suspend to disk,简称str、strd和std,意思很直白。

挂起也被称为暂停或待机,一般的,系统一段时间没有操作,系统就会挂起(到内存中),多数外围设备会关闭,某些设备会运行(如键盘鼠标),可以快速响应这些设备从而唤醒系统。

休眠也被称为冬眠(hibernate实为冬眠之意),保存运行状态存到硬盘中,然后关机。下次开机后,系统从硬盘中读取存储的数据并恢复到关机前的状态。

睡眠更准确的名称应该是混合睡眠,所谓混合即存储方式上包含了挂起和休眠两种方式,唤醒时会优先从内存中读取数据,如果设备在此状态下断电,就和休眠一样了。

linux休眠配置

一些linux发行版的休眠需要用户进行配置才能使用(如archlinux)。

开启休眠

按照以下步骤设置。

合适大小的swap分区

休眠(hibernate)需要将内存中的内容写入磁盘的swap分区,如果swap分区大小比当前休眠所需空间小,则无法保证能够正确地休眠。具体的swap的大小根据个人使用情况(要休眠时的内存占用)而定。
因此,如果 swap 分区过小,需增大 swap分区或减小 /sys/power/image_size

注意:brtfs格式无法设置swap分区;这里的swap是swap分区而不包括swap file的情况。

在bootloader 中增加resume内核参数

需要添加resume=/dev/sdxY (sdxY 是 swap分区的名字) ,让系统在启动时读取swap分区中的内容。

例如,使用了grub2作为bootloader,swap的分区是/dev/sda3。
编辑/etc/default/grub 文件,在GRUB_CMDLINE_LINUX_DEFAULT中添加resume=/dev/sda3 ,假如该行的原有内容是:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_pstate=enable”

添加resume参数后就是:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=enable resume=/dev/sda3"

然后更新 grub 配置 `grub-mkconfig -o /boot/grub/grub.cfg`

配置 initramfs的resume钩子

编辑 /etc/mkinitcpio.conf ,在HOOKS行中添加resume钩子:
例如该行原有内容是:

HOOKS="base udev autodetect modconf block filesystems keyboard fsck"

添加resume后就是:

HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"

注意:如果使用lvm分区,需要将resume放在lvm后面,示例:

HOOKS="base udev autodetect modconf block lvm2 resume filesystems keyboard fsck"

重新生成 initramfs 镜像: mkinitcpio -p linux

设置低电量休眠

当电池电量极低时,使其休眠,以免丢失数据。
修改/etc/UPower/UPower.conf相关配置,示例,在电量低至%5时自动关机:

PercentageLow=15  #<=15%低电量
PercentageCritical=10  #<=10%警告电量
PercentageAction=5  #<=5%执行动作(即CriticalPowerAction)的电量
CriticalPowerAction=Hibernate #(在本示例中是电量<=5%)执行关机

当电池低至5%,设备会自动休眠。
CriticalPowerAction的取值有Poweroff、Hibernate和Hybid-sleep。

更多配置项参考该文件中的说明。

设置盖上盖子或按下电源键休眠

编辑/etc/systemd/logind.conf ,
盖上盖子休眠,添加:

HandleLidSwitch=hibernate

按下电源键休眠,添加:

HandlePowerKey=hibernate

执行 systemctl restart systemd-logind 使其立即生效。

更加详细的设置参看下文。


systemd 能够处理某些电源相关的事件,编辑 /etc/systemd/logind.conf 可进行配置,其主要包含以下事件:

HandlePowerKey:按下电源键

HandleSleepKey:按下挂起键

HandleHibernateKey: 按下休眠键

HandleLidSwitch:合上笔记本盖

HandleLidSwitchDocked:插上扩展坞或者连接外部显示器情况下合上笔记本盖子

取值可以是 ignore、poweroff、reboot、halt、suspend、hibernate、hybrid-sleep、lock 或 kexec。

其中:

poweroff和halt均是关机(具体实现有区别)

supspend是挂起(暂停),设备通电,内容保存在内存中

hybernate是休眠,设备断电(同关机状态),内容保存在硬盘中

hybrid-sleep是混合睡眠,设备通电,内容保存在硬盘和内存中

lock是锁屏

kexec是从当前正在运行的内核直接引导到一个新内核(多用于升级了内核的情况下)

ignore是忽略该动作,即不进行任何电源事件响应

注意,系统默认设置为:

HandlePowerKey=poweroff    #按下电源键关机
HandleSuspendKey=suspend    #按下挂起键挂起(暂停)
HandleHibernateKey=hibernate    #按下休眠键休眠
HandleLidSwitch=suspend    #盖上笔记本盖子挂起

例如要设置盖上笔记本盖子进行休眠,在该文件中配置:

HandleLidSwitch=hibernate

保存文件后,执行 systemctl restart systemd-logind 使其生效。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10305.html

相关文章

  • linux下使用记本的相关设置

    摘要:让内核开启适合的笔记本电脑的模式以达到相关电源控制的目的。处理器调整使一般是降低频率以减少发热,同时降低风扇转速以减少噪音,并提升笔记本的电池续航时间。在目录下有着相关信息。执行可查看到相关信息,可进行频率设置。 本文后续可能会使用git推送更新到github/levinit-itnotes [TOC] 无线连接 Wi-Fi 一般地,安装linux-firmware 即可,许多发行版会...

    Meathill 评论0 收藏0
  • Linux内核定时器简单使用

    摘要:内核定时器使用及原理定时器的使用本文地址因为项目需要,我这里简单列一个在内核中使用的方法。运行过程一个定时器,首先要被注册,然后这个被执行了之后,系统会自动将其注销掉。 Reference:linux内核定时器使用及原理Linux定时器的使用 本文地址:https://segmentfault.com/a/11... 因为项目需要,我这里简单列一个在内核中使用timer的方法。这篇笔...

    Tamic 评论0 收藏0
  • 多线程学习笔记(2):多线程基础

    摘要:和方法用来设置线程是否成为守护线程和判断线程是否是守护线程。守护线程依赖于创建它的线程,随它的消亡而消亡。使用提供的方法,提醒线程终止,但是否真正终止由线程自己决定。参考实战高并发程序设计多线程干货系列一多线程基础 一、如何创建多线程 1、继承Thread类 public class MyThread extends Thread { @Override public ...

    HelKyle 评论0 收藏0
  • Linux交换空间(swap space)

    摘要:有了后,系统就可以将这部分不这么使用的内存数据保存到上去,从而释放出更多的物理内存供系统使用。内存不够用不管是桌面还是服务器,当物理内存明显不够用,而又想跑程序的话,添加是唯一的选择,慢点总比不能工作强。 每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置,设置多大比较合适?本篇将试图回答这些问题并尽量覆盖所有swap相关的...

    Dongjie_Liu 评论0 收藏0
  • 查看什么进程正在阻挡Windows进入休眠

    摘要:合上笔记本,准备装进背包的时候,才发现,这家伙又没有进入休眠状态,而是开机状态,这都快夏天了,贴在背上,实在恼人。想来一定是有啥进程阻挡了休眠的进程。音频流当前正在使用中。不知道是谁在使用声卡,我关掉虚拟机,然后再次休眠,成功了。 合上笔记本,准备装进背包的时候,才发现,这家伙又没有进入休眠状态,而是开机状态,这都快夏天了,贴在背上,实在恼人。 想来一定是有啥进程阻挡了休眠的进程。 p...

    AlphaWatch 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<