Eu fiz muitos testes sobre isso e descobri que o problema não está relacionado à criptografia. O verdadeiro motivo de não estar funcionando é apenas porque você está usando um arquivo de troca em vez de uma partição swap. Observe o seguinte no final de /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
Aqui, ${resume}
e ${resume_offset}
têm os valores que você colocou em /etc/initramfs-tools/conf.d/resume
. Quando ele chama wait-for-root
, ele está olhando para o tipo de partição ${resume}
, que não é swap (é ext4 ou qualquer tipo de partição raiz). Em seguida, ele compara isso com sua lista de tipos de swap suspensos e (sem surpresa) não encontra uma correspondência, portanto, ela não é retomada. Parece que eles pretendem que os arquivos de swap funcionem, uma vez que eles usam ${resume_offset}
, então isso parece ser um bug no sistema initramfs-tools do Ubuntu. (Edit: Este é aparentemente um problema conhecido, como mencionado em sua página wiki SwapFaq .)
Como solução alternativa, você pode evitar a necessidade de ter um arquivo de troca usando o LVM em cima da partição criptografada e, em seguida, colocando uma partição de swap dentro dela juntamente com sua partição raiz, que funcionará bem sem etapas especiais necessárias .