You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04.3 LTS LUKS加密系统盘搭配交换文件时启用休眠功能的方法咨询

Ubuntu 22.04.3 LTS LUKS加密系统盘搭配交换文件时启用休眠功能的方法咨询

嗨,我懂你现在的困扰——之前用非加密系统加交换文件能正常休眠,换成LUKS加密盘后,休眠就跟关机没区别,重启后啥都留不住对吧?这是因为加密盘下的休眠配置比普通情况多了几个关键步骤,单纯填UUID肯定行不通,我给你梳理下正确的操作流程:

首先,咱们先确认基础条件没问题:

  • 检查交换文件是否正常工作:运行 swapon --show,能看到 /swapfile 的挂载信息就说明没问题;再用 free -h 确认交换文件的大小至少等于你的物理内存,不然休眠数据根本存不下。

接下来是最关键的一步:计算交换文件的偏移量。因为交换文件是放在加密的根分区里的,系统得知道它在分区里的具体位置才能读取休眠镜像,这也是你之前没做到的点:

  • 运行 filefrag -v /swapfile,找到输出第一行的 start 数值(比如显示 start: 123456);
  • 再用 dumpe2fs /dev/mapper/你的根映射名 | grep -i 'block size' 拿到分区的块大小(一般是4096字节);
  • 偏移量就是 start数值 × 块大小,比如123456×4096=503316480。嫌计算麻烦的话,可以先装个小工具:sudo apt install swapspace,然后直接运行 sudo swapoffset /swapfile 就能直接得到偏移量。

然后,找到加密根分区的映射设备名:

  • 运行 ls /dev/mapper,里面类似 cryptroot 或者 ubuntu--vg-root 的就是加密后挂载的根分区设备;或者用 blkid 找带有 TYPE="crypto_LUKS" 的分区,它对应的映射名就是你要的。

现在修改GRUB配置:

  • 编辑 /etc/default/grub 文件,找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行,在 quiet splash 后面加上 resume=/dev/mapper/你的映射名 resume_offset=刚才算出的偏移量。比如最终看起来是这样:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mapper/cryptroot resume_offset=503316480"
    

最后更新系统配置并测试:

  • 先更新initramfs(因为加密盘的启动镜像需要包含休眠相关模块):sudo update-initramfs -u
  • 再更新GRUB:sudo update-grub
  • 现在试试休眠:sudo systemctl hibernate,重启后应该就能回到之前的会话了。

额外小提醒:如果你的系统用的是Btrfs文件系统,计算偏移量的命令要换成 sudo btrfs inspect-internal map-swapfile /swapfile,直接就能得到正确的offset值,不用自己计算。

备注:内容来源于stack exchange,提问作者Duncan Marshall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:08:11