在 Debian 12 上休眠到交换文件会返回“调用休眠失败:没有足够的交换空间用于休眠”

在 Debian 12 上休眠到交换文件会返回“调用休眠失败:没有足够的交换空间用于休眠”

新的 Linux 桌面用户请点击此处。

我使用默认的小交换分区安装了 Debian 12,但休眠功能无法正常工作,因此我遵循了以下指南:

如何在没有交换分区的情况下使用休眠功能。

我有 16GB 的 RAM,创建了一个 24GB 的交换文件并禁用了交换分区,但现在该Hibernate按钮从 KDE 的“应用程序启动器”中消失了,并且运行sudo systemctl hibernate返回Call to Hibernate failed: Not enough swap space for hibernation

这是我的系统的状态:

> sudo swapon --show
NAME             TYPE SIZE USED PRIO
/home/user/swap file  24G   0B   10

> cat /proc/swaps
Filename                                Type            Size            Used            Priority
/home/user/swap                        file            25165820        0               10

> free -m
               total        used        free      shared  buff/cache   available
Mem:           15908        4709        5692         139        5980       11198
Swap:          24575           0       24575


> cat /etc/fstab
#...
/home/user/swap swap swap pri=10 0 0
#...


> ls ~ -l
...
-rw------- 1 root  root  25769803776 Jan 16 19:33 swap
...

> findmnt -no UUID -T /home/user/swap
76e6bab2-1c86-4abe-841e-7ad0a3ba778c

> sudo filefrag -v /home/user/swap|awk 'NR==4{gsub(/\./,"");print $4;}'
62373888

> cat /etc/initramfs-tools/conf.d/resume
RESUME=UUID=76e6bab2-1c86-4abe-841e-7ad0a3ba778c resume_offset=62373888

> cat /etc/default/grub
#...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=76e6bab2-1c86-4abe-841e-7ad0a3ba778c resume_offset=62373888"
#...

> update-grub
> update-initramfs -k all -u

我正在尝试配置休眠,因为睡眠超过一个小时时出现一些问题,可能是 PSU 问题。安全启动已禁用。

答案1

引用Debian 休眠 Wiki:

Debian Jessie 中的挂起和休眠配置

只要您有足够大的交换分区来容纳系统映像,您就可以立即使用休眠功能(即使没有 uswsusp)。

标准实践

  1. Linux 交换分区类型必须是 83
  2. 我经常看到的计算交换大小的公式是 RAM 大小的两倍。

我假设您的休眠映像不会占用 24GB,但我从未见过有人尝试休眠到用户主目录。为了解决这个问题,我会使用图形分区工具,例如格帕特,并通过调整现有分区的大小、创建或调整类型 83 的分区的大小以及重新分配新的 UUID 并更新fstab和 GRUB 2 来为实际交换分区腾出空间。

相关内容