Há alterações feitas nas configurações padrão quando comparadas com o LTS anterior (16.04). No meu caso, a hibernação não funcionou até que eu fiz várias etapas, entre elas aumentar o tamanho do arquivo de troca, ativá-lo, garantir que as políticas permitissem etc.
Essa pode ser facilmente a minha resposta mais longa em todo o StackExchange, então tentei tornar os cabeçalhos descritivos .
Botas como não havia hibernação
Seria prudente dar uma olhada nos seus logs ( dmesg
pode ajudar) e ver se há algo lá. Existem razões pelas quais, apesar de você dizer ao sistema para hibernar, ele na verdade não funciona, ou suspende para a RAM (suspensão).
Examinar kern.log
e syslog
procurar mensagens relacionadas ao hibernate também não faria mal. Seções que começam com "problema" podem ajudá-lo com problemas específicos.
Trocar arquivo ou partição de troca
Uma das mudanças cruciais é que agora você NÃO TEM uma partição de troca, mas possui um arquivo de troca.
O arquivo de troca pode não funcionar com sua combinação de hardware / drivers / SO e hibernação.
Hibernação desativada
As políticas também podem desativar ou proibir a hibernação.
Jargão
Suspender na RAM - a RAM mantém os dados, o computador dorme mais rápido, usa mais energia quando suspensa, acorda mais rápido. Alguns chamam isso de sono.
Suspender no disco - também conhecido como hibernação. A RAM é salva para troca (partição ou arquivo), o computador dorme mais devagar, consome menos energia enquanto hiberna, acorda mais devagar.
Pré-requisitos - você tem espaço suficiente?
Para hibernar, você precisa (simplificação aqui) salvar toda a sua RAM no disco rígido. Portanto, você precisa reservar espaço suficiente para isso. Caso contrário, isso falhará e você não hibernará.
free -m
lhe dirá quanta memória você tem, usa e quanto está em sua troca.
df -h
lhe dirá quanto espaço em disco você tem em cada ponto de montagem e quanto é usado, livre, etc. Isso é importante, pois você poderá especificar mais tarde onde seu arquivo de troca estará localizado ou qual partição "aparar" terá espaço suficiente para sua troca.
cat fstab
deve fornecer informações se você tiver uma partição ou arquivo de troca. De acordo com o Ubuntu Hibernation, as perguntas frequentes swapfile
nem sempre funcionam com algumas combinações de hardware / drivers.
Se você não tiver espaço suficiente, siga as perguntas frequentes sobre a troca do Ubuntu . Ele mostra como aumentar o arquivo de troca, adicionar outro, verificar se ele está sendo usado etc. Com comandos e explicações. Recurso realmente agradável.
Não tenho espaço suficiente para caber na minha RAM!
Os documentos do kernel dizem:
/ sys / power / image_size controla o tamanho da imagem criada pelo mecanismo de suspensão em disco. Pode ser escrita uma string representando um número inteiro não negativo que será usado como limite superior do tamanho da imagem, em bytes. O mecanismo de suspensão em disco fará o possível para garantir que o tamanho da imagem não exceda esse número. No entanto, se isso for impossível, ele tentará suspender de qualquer maneira usando a menor imagem possível. Em particular, se "0" for gravado nesse arquivo, a imagem de suspensão será a menor possível. A leitura deste arquivo exibirá o limite de tamanho da imagem atual, que é definido como 2/5 da RAM disponível por padrão.
Portanto, tente ajustar o tamanho da imagem. Como - faça outra pergunta, por favor.
Pré-requisitos - seu kernel suporta suspensão para disco?
O kernel suporta o que está listado /sys/power/state
, então:
cat /sys/power/state
Permitidos (a meu conhecimento) As entradas não incluem: mem
, standby
, freeze
, disk
. Explicação:
mem
- tem vários significados, exatamente o que você encontrará em seu sistema cat /sys/power/mem_sleep
. Eu tenho:s2idle [deep]
standby
- Suspensão de inicialização (se suportada)
freeze
- Suspender para ocioso (STI)
disk
- Suspender para disco (STD), hibernação . Isso - você quer.
Então precisamos verificar cat /sys/power/disk
. Se você tiver lá disabled
, mergulhe em seu BIOS procurando o Secure Boot - essa é a única idéia que posso oferecer e a única coisa que sei que pode interferir e desativar a hibernação. Embora eu conheça apenas o SecureBoot, pode haver outras interferências, portanto, dar uma olhada no BIOS é uma boa idéia, mesmo que você não tenha nenhuma "inicialização segura".
Lendo aqui:
- Documentos do kernel
- Debian Wiki sobre hibernação
TBH, mesmo que seu kernel NÃO suporte a hibernação, você pode tentar de outra maneira, role para baixo até a seçãoInterfaces
.
Leia isto - avisos e problemas - sem BTRFS
Em nenhuma ordem particular:
- Nem todos os chipsets funcionam (não há fontes que eu possa citar aqui, então digamos que isso seja boato)
- O VAIO tem problemas, supostamente há uma bandeira para combatê-los
- O SecureBoot é frequentemente citado como interferindo ou desativando a hibernação
- Wake-on-LAN consome energia mesmo com hibernação
- O número de módulos (especialmente os gráficos) pode ser inicializado ANTES de o sistema reiniciar adequadamente da hibernação - essa é geralmente a causa da tela preta ao reiniciar . Veja o ArchLinux Wiki para obter dicas sobre como depurar problemas. Eu também sugeriria as perguntas frequentes do Ubuntu sobre problemas de hibernação. A navegação pelos bugs do Launchpad também pode gerar resultados. IIRC, há um parâmetro do kernel especificando em segundos um atraso antes de continuar.
- Permitir que o procedimento de hibernação seja diferente para diferentes versões do Polkit
Não use BTRFS e hibernar: dados corrompidos serão o resultado.
Eu quero hibernar - partição swap
Há casos em que as pessoas renunciam ao arquivo de troca e retornam à troca de partição. Afinal, funcionou no LTS anterior. Eu não tentei, então não vou oferecer indicadores.
Eu quero hibernar - com arquivo de troca
- Verifique se você tem espaço suficiente lá. O FAQ de troca do Ubuntu informa quanto você precisa, os comandos acima também o fazem. Se precisar de mais informações aqui, faça outra pergunta, pois esse é um tópico demorado.
- Aumente o arquivo de troca ou crie um novo com tamanho suficiente (de preferência, concordo com o @muru ) e mude para o
/etc/fstab
novo. Reinicie para ver se a alteração foi bem-sucedida (armazene o backup do fstab
para que você possa reverter facilmente, por precaução.
- Aponte seu kernel para ele com parâmetros apropriados, para que ele saiba de onde retornar.
- Atualize / reconfigure seu carregador de inicialização e reinicie.
Parâmetros do kernel? Assustador!
Leia com atenção e decida se você deseja fazer isso, mas é apenas uma maneira de configurar seu kernel. Pode ser mais fácil hibernar via systemd
e uswsusp
(consulte Interfaces , abaixo). Pode ser que você - como eu - acabe decidindo que suspender para a RAM é suficiente e não deseja ter 32 GB em um arquivo de troca (não tão bom para pessoas com um SSD em seus laptops, por exemplo). Mas!
- O hibernar para trocar arquivo requer
resume=
saber em qual partição está o arquivo de troca e resume_offset=
saber onde está o arquivo de troca para começar a retomar.
- hibernar para partição requer
resume=
apontar para trocar partição.
- resolver problemas de tela preta pode muito bem exigir
resumedelay=
.
Documentos do kernel sobre o atraso na retomada da hibernação:
resumeedelay = [HIBERNATION] Atraso (em segundos) para pausar antes de tentar ler os arquivos de resumo
Parâmetros necessários para arquivo de swap e hibernação :
resume = [SWSUSP]
Specify the partition device for software suspend
Format:
{/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
resume_offset = [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
Para resume=
escolher o mesmo estilo que o root
elemento possui fstab
. Então, ou /dev/sdaX
ou UUID
ou LVM. Para hibernar para arquivo - forneça uma partição onde seu arquivo pode ser encontrado.
Lendo:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problema - cabeçalho de troca não encontrado
O arquivo de troca precisa ser formatado corretamente. Se seus logs lhe disserem isso, você está tentando hibernar para um arquivo ou o parâmetro resume não está correto.
Alterne para particionar ou corrigir o arquivo ou alterar a interface usada para hibernação.
Consulte: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
é usado para formatar o arquivo, leia mais aqui
Problema! Hibernação não permitida!
Teste: pm-hibernate
(se o pacote pm-utils estiver instalado) ou systemctl hibernate
informar que você não tem permissão. Configuração padrão no Ubuntu desde o IIRC 12.04.
Solução (s): depende da versão do Polkit, da versão e do sabor do Ubuntu ... Consulte esta pergunta . Além disso, o ArchWiki no Polkit pode ajudar.
Para o Mint, consulte: https://forums.linuxmint.com/viewtopic.php?t=259912
Problema! Hibernação desativada por algo na BIOS!
Teste: cat /sys/power/disk
tem disabled
. Os logs mostram "Falha ao hibernar o sistema via logind: verbo de suspensão não suportado".
Solução: pesquise seu BIOS e encontre a coisa problemática. Desligue isso.
Solução 2: tente outra interface de hibernação.
Consulte: Como ativar a hibernação no 16.04.1? (systemd) .
Interfaces
- swsusp - interface de kernel de baixo nível. Consulte Pré-requisitos - kernel para quais arquivos. Gravar arquivos diretamente pode causar suspensão (na RAM, no disco e no híbrido). De acordo com SwapFAQ problemático com a hibernação para arquivo.
- uswsusp - ArchWiki e Debian Wiki e uma bela pergunta do AskUbuntu com uma descrição de como usá-lo .
- systemd - ArchWiki nele
- pm-utils - AFAIK, que é uma coleção de scripts originalmente do Debian -, de bom grado, darei as boas-vindas a mais informações.
Considerações finais
Para mim, foram quase dois dias de trabalho para compilar isso. Esperamos que isso ajude você (e outros) a resolver seu problema mais rapidamente. Ainda faltam pontos, mas são 2 horas da manhã e não tenho vontade de escrever mais agora. Claro que estou aberto a sugestões de alguém para melhorar isso, então comente. Responderei quando durmo, trabalho etc. :-)
Não tenho certeza de que hibernar para o disco é ótimo. Eu fui dormir no final. Mas, para mim, o problema era ter um arquivo de 32 GB apenas para poder hibernar, já que geralmente estou evitando a troca. Meu arquivo de troca inicial tinha 2 GB e estava quase vazio. YMMV. No entanto, boa sorte! E comece com os logs!