zoukankan      html  css  js  c++  java
  • linux笔记本设置休眠

    挂起睡眠和休眠的区别

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

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

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

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

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

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

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

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

    linux休眠配置

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

    开启休眠

    按照以下步骤设置。

    1. 合适大小的swap分区

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

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

    2. 在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

    3. 配置 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 使其生效。


  • 相关阅读:
    Windows常用内容渗透命令
    字符串编码小记
    卡巴斯基命令解析
    聚合与继承
    Maven与Eclipse整合
    maven系列三:Maven核心概念
    使用Maven构建项目
    Maven项目构建过程练习
    maven系列二:Maven入门
    使用Maven构建多模块项目
  • 原文地址:https://www.cnblogs.com/unkownarea/p/7471285.html
Copyright © 2011-2022 走看看