Linux 无法通过加密交换分区从休眠状态恢复

问题描述 投票:0回答:1

我有一个带有加密交换分区的 LUKS 设置。我无意使用休眠/挂起到磁盘功能,因此我在没有此类支持的情况下设置了加密交换分区。 参考文档

我的理解是,加密的交换分区是使用随机密钥加密的,该密钥在每次启动时都会被覆盖,因此在此设置中不可能从休眠状态恢复。

前几天我不小心使用了

systemctl hibernate
命令让系统进入休眠状态。当我尝试从休眠状态恢复时,在超时发生之前有一个 120 秒的计时器,并且恢复过程失败。系统刚刚启动并重新开始。

systemd日志中的错误:

dev-disk-by\x2duuid-4e9d677c\x2d42d1\x2d4072\x2d91d6\x2d456a25d34d52.device: Job dev-disk-by\x2duuid-4e9d677c\x2d42d1\x2d4072\x2d91d6\x2d456a25d34d52.device/start timed out.
Timed out waiting for device /dev/disk/by-uuid/4e9d677c-42d1-4072-91d6-456a25d34d52.
Dependency failed for Resume from hibernation.
systemd-hibernate-resume.service: Job systemd-hibernate-resume.service/start failed with result 'dependency'.
dev-disk-by\x2duuid-4e9d677c\x2d42d1\x2d4072\x2d91d6\x2d456a25d34d52.device: Job dev-disk-by\x2duuid-4e9d677c\x2d42d1\x2d4072\x2d91d6\x2d456a25d34d52.device/start failed with result 'timeout'.

我尝试重启多次,但每次总是出现 120 秒超时,然后出现设备超时的错误。具有该 UUID

4e9d677c-...
的设备实际上并不存在,因为该 UUID 属于临时加密交换分区。

我假设在某处设置了挂起标志,因此系统在启动时总是尝试恢复,但由于其他原因该过程失败。

有没有办法清除/重置挂起标志,以便它直接重新启动而无需尝试恢复(和失败)?

linux hibernate luks
1个回答
0
投票

我通过以下步骤解决了问题:

  1. swapoff
    现有交换
  2. cryptsetup close
    加密交换分区
  3. /etc/crypttab
    /etc/fstab
  4. 中删除条目
  5. mkswap
    在具有相关 UUID 的底层分区上
  6. 重启
  7. wipefs
    交换分区签名
  8. 将条目添加回
    /etc/crypttab
    /etc/fstab
  9. 重新启动以确保一切正常

在步骤 4 中,我欺骗引导过程从符合条件的交换分区中恢复以清除挂起标志。

© www.soinside.com 2019 - 2024. All rights reserved.