Como depurar suspensão?


29

Estou usando o Ubuntu há cerca de cinco anos e ainda não consigo suspendê-lo quando quero. É bastante irritante que eu possa programar uma tempestade, invadir a máquina de várias outras maneiras e, no entanto, quando tento suspendê-la ou depurá-la, falho miseravelmente.

Eu preciso de ajuda.

Onde começo a encontrar o problema? O que faço para corrigi-lo? Estou colocando uma recompensa por isso, porque literalmente perdi horas da minha vida com esse problema, e deixar meu computador ligado o tempo todo é terrível.

Os sintomas:

  • Pressionar suspender leva meu computador a um estado em que ele tem um cursor piscando, os fãs estão funcionando, parece que o HD foi desligado (eu acho) e não posso fazer nada para trazê-lo de volta desse estado (menos de uma reinicialização forçada).
  • Possivelmente relacionado: meus fãs ficam ligados mesmo após um desligamento e, mesmo assim, tenho que pressionar o botão liga / desliga por cinco segundos antes de poder iniciá-lo novamente.
  • Não sei quais logs examinar para depurar o problema, e imagino que eles seriam danificados na reinicialização de qualquer maneira.

Por favor, ajude. Isso me deixa completamente louco, e eu moro com isso há mais de um ano.


Você já teve alguma sorte com isso? Pessoalmente, estou preso ao inicializar o hardware gráfico. Provavelmente, eu poderia programar minha saída com tempo suficiente ... mas seria muito mais fácil ter algum método para chegar ao problema diretamente.
— Henrik

Sim, sem sorte. Aparentemente, não há método para depurar a suspensão, o que é um pouco chocante.
— mlissner

1
Como você está suspendendo? Você está executando, na linha de comando pm-suspend? Você está usando uma tecla de suspensão no teclado? Você está fazendo uma ligação para o acpi (por exemplo, /etc/acpi/sleep.sh ou /etc/acpi/sleepbtn.sh) ??
— M. Tibbits

1
Para os caçadores de recompensa: estou procurando principalmente receitas gerais de depuração, ou seja, coleta de informações, para instalações mais recentes do Ubuntu usando o systemd. Minha esperança é que possamos usar esta pergunta como uma duplicata canônica para questões amplas de problemas de suspensão por usuários inexperientes.
— David Foerster

2
@pbhj: De qualquer maneira, é necessário um diagnóstico de problema adequado como o primeiro passo no caminho em direção a uma solução.
— David Foerster

Respostas:


22

Em https://wiki.ubuntu.com/UnderstandingSuspend

  • O maior problema é o hardware gráfico
  • tente suspender sem dispositivos restritos (nvidia, fglrx)
  • o kernel não sabe como lidar com dispositivos gráficos
  • BIOS sabe como restaurar o estado dos gráficos
    • via modo segmentado de 16 bits, C000: xxxx contém a ROM de vídeo visível de 64k.
    • iniciando a execução em C000: 0003, normalmente re-POST o BIOS do vídeo (/ usr / sbin / vbetool post)
      • mais difícil no modo de 64 bits, pois as chamadas de 16 bits precisam ser emuladas.
      • alguma memória está no intervalo 3-4G, o que requer remapeamento ao emular para evitar atingir o kernel mapeado no mesmo espaço. o BIOS de vídeo pode ter paginado o código POST pela janela C000. O BIOS da nvidia reescreve a ROM para retornar para interromper o re-POST e tentar suspender do console (via /etc/acpi/sleep.sh)
    • verifique se você está desconectado do Xorg (ou execute sleep.sh com o argumento "force")
    • se o BIOS do vídeo não for deixado em bom estado, retornar ao Xorg pode travar o hardware
    • testa o capslock no currículo (se não houver capslock, o kernel travou)
    • se a luz de fundo não voltar, o BIOS de vídeo provavelmente não reinicializou
    • se a tela estiver em branco, mas tiver uma luz de fundo, tente pressionar enter ou alternar entre terminais virtuais
    • tente no modo de usuário único (anexando "single" às ​​opções de inicialização do kernel do grub)
    • para obter detalhes sobre ações, tente bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • consulte as informações do dmidecode que correspondem às configurações em /usr/share/acpi-support/*.config
    • se o console do modo de usuário único suspender ou retomar falhar
    • Rastreamento de PM (eco "1"> / sys / power / pm_trace) que gravará os hashes do dispositivo no timer do sistema
    • tentativa de suspender
    • após a falha, na reinicialização, examine a saída dmesg para entradas de "hash do dispositivo" para rastrear o dispositivo que travou o sistema durante a retomada.
    • ciente de que isso redefinirá o relógio do sistema, e o fsck surtará ("ficou sem fsck por 31337 dias"). considere tune2fs -c 0 / dev / your / filesystems.

2
Como desativo dispositivos restritos?
— Owen

1
algum link para trabalhar scripts para sanidade marque uma caixa quando a suspensão falhar? ... esse tipo de problema é a ruína do uso linux e blocos de massa ...
— Scott Stensland

4

Você pode encontrar muitas orientações / conselhos aqui e aqui .

Na sua descrição, parece que o seu ACPI não está funcionando corretamente ou os drivers do kernel estão impedindo uma suspensão total. O segundo link mostra como lidar com esse tipo de problema.


2
Eu li isso, mas eles não têm informações realmente úteis para o meu problema. Precisa de mais ajuda e melhores informações. Eu criei uma recompensa para esta pergunta.
— mlissner

4
Resposta ruim - apenas links. O objetivo dos sites da Stack * é fornecer um local para todas as perguntas, não enviar aos usuários uma perseguição interminável ou dizer 'apenas f * pesquise no google'. Por favor, insira sua resposta na pergunta e atualize-a de acordo com o comentário de mlissner.
— Henrik

Obrigado: Às vezes, é útil ler a página inicial original!
— Abu_bua

4

Os sintomas:

  • Pressionar suspender leva meu computador a um estado em que ele tem um cursor piscando, os fãs estão funcionando, parece que o HD foi desligado (eu acho) e não posso fazer nada para trazê-lo de volta desse estado (menos de uma reinicialização forçada).
  • Possivelmente relacionado: meus fãs ficam ligados mesmo após um desligamento e, mesmo assim, tenho que pressionar o botão liga / desliga por cinco segundos antes de poder iniciá-lo novamente.
  • Não sei quais logs examinar para depurar o problema, e imagino que eles seriam danificados na reinicialização de qualquer maneira.

Meu site para muitos problemas de Linux é o Arch Linux. Aqui está o que é publicado sobre problemas de suspensão / retomada semelhantes ao seu:

Ativações instantâneas de suspensão

Para alguns sistemas Intel Haswell com o chipset LynxPoint e LynxPoint-LP, são relatadas ativações instantâneas após a suspensão. Eles estão vinculados a implementações incorretas do BIOS ACPI e a como o xhci_hcdmódulo o interpreta durante a inicialização. Como solução alternativa, os sistemas afetados são adicionados a uma lista negra (nomeada XHCI_SPURIOUS_WAKEUP) pelo kernel, caso a caso. [ 2 ]

A retomada instantânea pode ocorrer, por exemplo, se um dispositivo USB for conectado durante a suspensão e os gatilhos de ativação da ACPI estiverem ativados. Uma solução viável para esse sistema, se ainda não estiver na lista negra, é desativar os gatilhos de ativação. Um exemplo para desativar a ativação por USB é descrito a seguir. [ 3 ]

Para visualizar a configuração atual:

$ cat /proc/acpi/wakeup

Device  S-state   Status   Sysfs node
...
EHC1      S3    *enabled  pci:0000:00:1d.0
EHC2      S3    *enabled  pci:0000:00:1a.0
XHC       S3    *enabled  pci:0000:00:14.0

...

Os dispositivos relevantes são EHC1, EHC2e XHC(para USB 3.0). Para alternar o estado deles, é necessário ecoar o nome do dispositivo no arquivo como raiz.

# echo EHC1 > /proc/acpi/wakeup
# echo EHC2 > /proc/acpi/wakeup
# echo XHC > /proc/acpi/wakeup

Isso deve resultar na suspensão do trabalho novamente. No entanto, essas configurações são apenas temporárias e precisam ser definidas a cada reinicialização. Para automatizar isso, dê uma olhada no systemd # Escrevendo arquivos da unidade . Consulte o tópico BBS para obter uma solução possível e mais informações.


O artigo inteiro do Arch Linux acima sobre Suspend / Resume é uma ótima referência para muitas áreas:

1 Low level interfaces
    1.1 kernel (swsusp)
    1.2 uswsusp
2 High level interfaces
    2.1 systemd
3 Hibernation
    3.1 About swap partition/file size
    3.2 Required kernel parameters
        3.2.1 Hibernation into swap file
    3.3 Configure the initramfs
4 Troubleshooting
    4.1 ACPI_OS_NAME
    4.2 VAIO Users
    4.3 Suspend/hibernate doesn't work, or not consistently
    4.4 Wake-on-LAN
    4.5 Instantaneous wakeups from suspend

Parece bom! Vou esperar outro dia ou dois para dar aos outros a chance de responder. Talvez alguém se sinta inspirado pelo seu. :-)
— David Foerster

@DavidFoerster Thanks. É um desafio responder a uma pergunta de 8 anos. Há também um problema de suspensão / currículo com os SSDs NVMe M.2 PCIe que adicionarei hoje à noite. Esses tipos de SSDs não existiam em 2010 e requerem um argumento especial do kernel do grub.
— WinEunuuchs2Unix

Eu estava procurando menos por soluções para problemas específicos de suspensão e mais por receitas gerais de depuração para instalações mais recentes do Ubuntu usando o systemd.
— David Foerster

@DavidFoerster Nesse caso, eu vou deixar o suporte de resposta como é :)
— WinEunuuchs2Unix
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.