每次休眠过程后,我都会得到一个损坏的根文件系统。我的设置是 LVM 上的 LUKS 加密根和交换分区。我对根文件系统使用 GPG 加密密钥,并在根分区上使用未加密的密钥文件进行交换解密。 initramfs 由 genkernel 生成
genkernel --lvm --luks --gpg initramfs
对于休眠设置,我遵循了Gentoo 维基。我尝试使用
pm-hibernate
s2disk -r /dev/mapper/swap
echo disk > /sys/power/state
但所有这些都会导致根分区损坏。我没有使用 tuxonice,因为(据我所知)我需要切换到其他内核源或应用补丁。
系统:
Gentoo
Kernel 4.9.6-gentoo-r1
genkernel 3.4.52.4-r2
pm-utils 1.4.1-r7
磁盘布局:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 477G 0 disk
├─sda2 8:2 0 128M 0 part /boot
├─sda3 8:3 0 410G 0 part
│ ├─vg1-swap 253:1 0 30G 0 lvm
│ │ └─swap 253:3 0 30G 0 crypt [SWAP]
│ └─vg1-root 253:0 0 380G 0 lvm
│ └─root 253:2 0 380G 0 crypt /
└─sda1 8:1 0 2M 0 part
答案1
我对根文件系统使用 GPG 加密密钥,并在根分区上使用未加密的密钥文件进行交换解密。
这是否意味着您必须安装根文件系统才能解密交换?如果是这样,这可能是导致您出现问题的原因。在休眠状态下,您不允许访问(写入)文件系统(因为它们仍由休眠系统“挂载”)。
https://www.kernel.org/doc/Documentation/power/swsusp.txt
* BIG FAT WARNING *********************************************************
*
* If you touch anything on disk between suspend and resume...
* ...kiss your data goodbye.
*
* If you do resume from initrd after your filesystems are mounted...
* ...bye bye root partition.
* [this is actually same case as above]
*
休眠是一件非常危险的事情,基本上你必须希望无论你的 Initramfs 风格如何都能正确处理所有情况。最好使用普通的交换分区,无需任何恶作剧即可到达。