休眠到加密卷上的交换文件

Tim*_*mur 6 hibernate luks

我在 mdadm raid-0 上的 LUKS 加密分区上安装了 ubuntu 16.04。

我想激活挂起到磁盘。我使用了这个指令(用于未加密的分区),但它不起作用。计算机关闭但不恢复,它在硬重启后启动。

我可以在我的配置上设置休眠吗?如果可能,我该怎么做?

Jos*_*ica 2

我对此做了很多测试,发现这个问题实际上与加密无关。它不起作用的真正原因仅仅是因为您使用的是交换文件而不是交换分区。请注意末尾处的以下内容/usr/share/initramfs-tools/scripts/local-premount/resume

SWAPTYPE=$(wait-for-root "${resume}" ${RESUMEDELAY:-5})

case "${SWAPTYPE}" in
    swsuspend|s1suspend|s2suspend|ulsuspend|tuxonice)
        if [ -x /bin/plymouth ] && plymouth --ping; then
                plymouth message --text="Resuming from $resume"
        fi

        # hardcode path, uswsusp ships an resume binary too
        if [ -n "${resume_offset}" ]; then
                /bin/resume ${resume} ${resume_offset}
        else
                /bin/resume ${resume}
        fi
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

在这里,${resume}输入${resume_offset}您输入的值/etc/initramfs-tools/conf.d/resume。当它调用 时wait-for-root,它会查看 的分区类型${resume},它不是交换分区(它是 ext4 或根分区的任何类型)。然后,它将其与挂起的交换类型列表进行比较,并且(毫不奇怪)没有找到匹配项,因此它不会恢复。看起来他们打算让交换文件工作,因为它们${resume_offset}根本就使用过,所以这似乎是 Ubuntu 的 initramfs-tools 系统中的一个错误。(编辑:这显然是一个已知问题,正如他们的 SwapFaq wiki 页面中提到的那样。)

作为一种解决方法,您可以通过在加密分区之上使用 LVM,然后将交换分区与根分区一起放入其中,从而避免需要交换文件,这样无需特殊步骤即可正常工作。