Como desativar a suspensão no Linux Kernel 4.x

4

Estou usando criptografia de disco completo, por meio do LinuxPBA e sedutil ( https://github.com/Drive-Trust-Alliance/sedutil ). Em resumo, na inicialização, um código independente do BIOS solicita a senha do disco. Se correto, o disco está desbloqueado, o sistema é reinicializado sem desligar o disco, posso ver o grub, o kernel continua e a distribuição é iniciada.

A suspensão é perigosa nesse cenário, é uma limitação conhecida [1] [2]. Quando isso acontece, os dados são corrompidos. A má notícia é que estou enfrentando eventos aleatórios de suspensão com bastante frequência.

Não preciso de suspensão, mas uso a hibernação. Existe uma maneira de desativar a suspensão (sem afetar a hibernação)? Talvez recompilando o kernel, ou através das opções de inicialização ...


[1] A ação de suspensão aciona a energia do disco; isso significa que, no resumo, o FS é criptografado. O Linux tenta acessar os setores mapeados antes, que agora estão criptografados, corrompendo os dados. Logo detecta o problema, remonta o FS em somente leitura e evita danos adicionais. Na próxima reinicialização, o fsck.ext4 geralmente repara os danos. Mas, como estou enfrentando uma suspensão aleatória, não acionada por mim, difícil de depurar / relatar, gostaria de desabilitar completamente a suspensão ao descobrir a causa raiz.

[2] Perguntas semelhantes: sugestões como esta https://wiki.debian.org/Suspend#Disable_suspend_and_hibernation não são suficientes. Além disso, parece que não é possível informar ao kernel / ACPI "por favor, não desligue o disco em suspensão" ( é possível não desativar um SSD em suspend / sleep / S3? ).

Goldbach
fonte

Respostas:

0

Recompilar o kernel com CONFIG_SUSPEND=ne CONFIG_HIBERNATION=ydeve evitar a suspensão, mas ainda permitir a hibernação. A suspensão só acontece mediante solicitação do AFAIK do userspace, portanto, você deve ser capaz de desativá-lo dessa maneira também.

Além disso, não tenho certeza de como as unidades funcionam exatamente, mas também me preocuparia que as redefinições possam causar a perda da chave. Nesse caso, lembre-se de que a pilha de armazenamento do Linux redefinirá os dispositivos que não respondem - por exemplo, se eles estiverem ocupados tentando novamente um bloco defeituoso por um longo tempo. /sys/block/sd?/device/timeouté onde esse tempo limite é definido; o padrão é 30s.

Finalmente, você pode usar, por exemplo, hdparm -Ypara colocar apenas uma unidade no modo de suspensão. Provavelmente, nada está fazendo isso por padrão, mas é possível que a unidade esteja configurada para entrar no modo de espera (sem suspensão); espero que seja, isso não perde a chave.

derobert
fonte