Como posso desativar completamente o Hibernate no Kubuntu?

11

Vi a resposta em Como desativar a hibernação? , mas não tenho esse arquivo. Possivelmente porque essa sugestão foi escrita para o Ubuntu, não o Kubuntu (KDE, não o Gnome).

Eu não tenho uma troca no meu SSD criptografada, meus congela sistema (não pode mesmo mudar Caps Lock) se eu acidentalmente pressionar o botão "Hibernate" at "Gestão de energia". Meu teclado possui um botão Hibernar ( Fn+ F4) ao lado dos botões de controle de volume e toda vez que pressiono a tecla errada, o sistema congela depois.

Então, qual é a maneira correta de desativá-lo? Se não houver solução, uma solução alternativa também será bem-vinda.

Lekensteyn
fonte
+1 Essa (e desativação da suspensão) é uma pergunta muito importante para qualquer pessoa que esteja executando as unidades OCZ Vertex2 ... a suspensão / hibernação pode aniquilar instantaneamente a unidade sem esperança de recuperar um único byte. :(
Russ

Respostas:

6

Gatilhos para hibernação:

  • Pressione o botão Hibernar em Kickoff -> Deixar -> Hibernar
  • Pressione Hibernar no ícone Energia na bandeja do sistema
  • Envie um sinal dbus: qdbus org.kde.kded /modules/powerdevil suspend 4

Quando a hibernação é acionada, este é o fluxo de execução:

  1. /usr/lib/hal/scripts/linux/hal-system-power-hibernate-linux é chamado
  2. /usr/sbin/pm-hibernate é chamado com alguns argumentos
  3. O registro começa a /var/log/pm-suspend.log
  4. Ganchos são executados para se preparar para a hibernação. Esses ganchos estão localizados em /usr/lib/pm-utils/sleep.d/e /etc/pm/sleep.d, e classificados por nome (primeiro os números)
  5. performing hibernate é gravado no log
  6. A função shell do_hibernateé chamada, instruindo o sistema a hibernar
  7. Quando o sistema é retomado, ganchos são executados para restaurar da hibernação
  8. O sistema está funcionando novamente

Para desativar a hibernação, crie /etc/pm/sleep.d/000no-hibernationcom o próximo conteúdo:

#!/bin/sh
# prevents hibernation
. "$PM_FUNCTIONS"
[ "$1" = "hibernate" ] && inhibit || true

Como 000no-hibernationé chamado antes de scripts como 00logging(gera módulos e informações de memória no log), nenhum aplicativo ou módulo é interrompido ou descarregado. Este nome foi inspirado por /usr/lib/pm-utils/sleep.d/000kernel-change. Cuidado com o bug # 665651, que faz com que valores de retorno diferentes de zero dos ganchos falhem ao cancelar a suspensão ou a hibernação.

Isso corrige o problema de hibernação para mim. Embora a tela fique bloqueada, eu posso viver com isso. É muito melhor em comparação com um sistema com falha.

Lekensteyn
fonte
Eu adicionado || truepara evitar uma exitcode diferente de zero, o que impede que suspende. Testado para funcionar para suspender e bloquear o hibernar.
Lekensteyn
Ótima resposta! Muito completo .. Obrigado por postar o que encontrou. Estendendo sobre ele, este script (do relatório de bug que você vinculou) interrompe de forma limpa a hibernação e a suspensão. Editar para fazer apenas um deles também é trivial.
Russ