Suspend to disk a.k.a. Hybernation doesn’t quite work when running openSUSE in an encrypted root file system and swap on LUKS on LVM, as with Ludwig Nussel’s instructions. The system is not able to resume from the swap area, because the initial ramdisk opens the lvm system before the luks. This results in only root logical volume being opened at that time, but not the swap volume. A regular boot follows.
Here’s the mkinitd boot scripts (or their symlinks, rather) in question:
$ ls -1 /lib/mkinitrd/boot
...
61-lvm2.sh
71-luks.sh
...
Until all this is properly supported, here is a quirk to make it work: Make the lvm2 initrd boot script depend on the luks one*.
Edit /lib/mkinitrd/scripts/boot-lvm2.sh
(this is what 61-lvm2.sh points to) and change the third line from
#%depends: evms
to
#%depends: evms luks
Recreate the initrd.
$ cp -iv /boot/mkinitrd /boot/mkinitrd.backup
$ mkinitrd
You will notice that the symlinks were renamed now:
71-luks.sh
72-lvm2.sh
No try suspending to disk, you should be prompted for your luks password and resume from disk should work.
$ s2disk
*This of course assumes that you only have lvm devices inside luks, not the other way around. It’s not too hard to have both – simply duplicate and adjust the luks script and run one instance before and one after lvm.
Both comments and pings are currently closed.
Interesting read. According to man 5 initrd your solution is not
possible though 🙂 boot-luks and boot-lvm2 are in different stages
so the order between the two is fixed. However if I understand it
correctly all we need is a vgchange call in boot-luks, right? Would
oyu mind opening a bug for that?
Yes you are right in saying that the manpage states that, and in fact those two scripts belong to different stages. The stage of the lvm2 symlink is moved. At least those two scripts are both the only ones in their respective stage, so there shouldn’t be many side effects except for each other.
I’ll investigate this further, but not until in about two weeks, also not until I compared it with factory’s progress on this. I think there are already enough bugs and feature request for this particular feature. 🙂