如何在 Ubuntu 20.04 中启用休眠选项?

如何在 Ubuntu 20.04 中启用休眠选项?

我尝试了不同的选项在 Ubuntu 20.04 中启用休眠功能,但没有任何效果。如何在 Ubuntu 20.04 中启用休眠选项?

答案1

我假设你有一个交换分区准备使用(如果你有交换文件无法使用此方法休眠)。请按照以下步骤操作:

  1. 安装pm-utilshibernate

    sudo apt install pm-utils hibernate
    
  2. 然后:

    cat /sys/power/state
    
  3. 您应该看到:

    freeze mem disk
    
  4. 然后运行以下其中一行:

    grep swap /etc/fstab
    blkid | grep swap
    
  5. 复制该UUID值。您稍后会需要它。

  6. 然后运行(如果没有,请使用您最喜欢的编辑器nano):

    sudo nano /etc/default/grub
    
  7. 修改以下行:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    

    因此它改为:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<YOUR_COPIED_UUID>"
    

    注意不要错过该UUID=部分。

  8. 然后,保存文件并退出文本编辑器后,运行:

    sudo update-grub
    
  9. 要测试它,请运行:

    sudo systemctl hibernate
    

此扩展似乎可以显示“休眠”菜单项,但它改变了此子菜单的整体外观:https://extensions.gnome.org/extension/3070/simpler-off-menu/


在我的联想 ThinkPad X1 Carbon 上使用内核版本 5.4.0-31 在 Ubuntu 20.04 上进行了测试。

答案2

如果你想使用/交换文件休眠而不是交换分区:

最佳答案效果很好,但是你不必使用分区,您也可以使用默认的/swapfile

首先,你应该增加 /swapfile 的大小至少与你的 RAM 大小相同。

  1. 安装依赖项:

    sudo apt install pm-utils hibernate uswsusp
    
  2. 找到你的 UUID 和交换偏移量:

    findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
    

    你会看到类似这样的内容:

    371b1a95-d91b-49f8-aa4a-da51cbf780b2
    resume offset = 23888916
    
  3. 编辑/etc/default/grub并替换字符串:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    

    使用您的 UUID 和偏移量:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume_offset=23888916"
    
  4. 更新 GRUB:

    sudo update-grub
    
  5. 测试你的冬眠状态:

    sudo systemctl hibernate
    

启用休眠模式后,可能不应更改交换的大小(至少swap-offset在 GRUB 中不进行更改)。

维基百科更多细节。

额外奖励:如果你想笔记本电脑盖关闭时进入休眠状态(看):

  1. 禁用设置中触碰笔记本电脑盖的任何选项,将其设置为“不执行任何操作”。

  2. 跑步:

    sudo mkdir -p /etc/acpi/events/ && sudo nano /etc/acpi/events/laptop-lid
    

    并粘贴:

    event=button/lid.*
    action=/etc/acpi/laptop-lid.sh
    
  3. 跑步:

    sudo touch /etc/acpi/laptop-lid.sh && sudo chmod +x /etc/acpi/laptop-lid.sh && sudo nano /etc/acpi/laptop-lid.sh
    

    并粘贴:

    #!/bin/bash
    
    LOG_FILE='/var/log/laptop-lid.log'
    touch $LOG_FILE && chmod 0666 $LOG_FILE
    
    grep -q closed /proc/acpi/button/lid/LID/state
    if [ $? = 0 ]
    then
        # close action
        echo "$(date '+%Y.%m.%d %H:%M:%S.%3N'): closed" >> $LOG_FILE
        systemctl hibernate
    else
        # open action
        echo "$(date '+%Y.%m.%d %H:%M:%S.%3N'): opened" >> $LOG_FILE
    fi
    
  4. 跑步:

    sudo /etc/init.d/acpid restart
    

答案3

如果你想开启休眠功能在你的 Ubuntu 中20.04*, 按着这些次序:

  1. 首先确保您在机器中分配了交换内存以检查:

    swapon --show
    
  2. 然后检查您分配的交换内存是否大于或至少等于物理内存(RAM)。

  3. 使用以下命令查找交换分区:

    grep swap /etc/fstab
    
  4. 复制输出的 UUID,例如( UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY)。

  5. 通过以下命令添加启动参数:

    sudoedit /etc/default/grub
    
  6. 在以 开头的行上GRUB_CMDLINE_LINUX_DEFAULT添加:

    resume=UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY
    

    注意:在所有其他线程中他们都要求添加交换分区,但在这里我们添加的是 UUID 值。

    最后一行将会像这样:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY"
    
  7. 更新文件:

    sudo update-grub
    
  8. sudo systemctl hibernate休眠功能现在可以在你的 Ubuntu 20.04 中运行。

答案4

要在 20.04 中启用休眠模式:

本页上的所有示例似乎都缺少resume-offset使用交换文件而不是交换分区时的必要性。

增加swapfile尺寸以匹配高达 8GB 的​​ RAM 大小。

  • 检查正在使用的交换:

    sudo swapon -s
    
  • 如果找到交换分区:

    sudo swapoff -a
    sudo nano -Bw /etc/fstab
    
  • 在交换分区#之前添加:UUID

    # UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX   none   swap    sw     0       0
    
  • swapfile如果不存在,请添加一行:

    /swapfile   none    swap     sw      0       0
    
  • 创建swapfile

    sudo fallocate -l XG /swapfile*
    

    X其中的大小(以 GB 为单位swapfile):

    sudo mkswap /swapfile
    sudo chmod 0600 /swapfile
    sudo swapon /swapfile
    
  • 重启:

    sudo reboot
    

添加resume位置和偏移量至grub.cfg

  • 编辑/etc/default/grub

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"
    
  • 从 root 端使用UUID

  • 使用偏移量:

    sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'
    
  • 更新 GRUB:

    sudo update-grub
    
  • 测试休眠:

    sudo systemctl hibernate
    

可以使用 GNOME 扩展添加休眠按钮。

swapfile请注意,使用 创建时,可能会出现漏洞fallocate/var/log/syslog可以搜索短语swapon: swapfile has holes以确保不会丢失数据。

也可以使用以下命令创建交换文件dd

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

使用时的错误dd可能会覆盖您的硬盘。

相关内容