Come eseguire il debug della sospensione?


29

Uso Ubuntu da circa cinque anni e non riesco ancora a sospenderlo quando voglio. È abbastanza irritante poter programmare una tempesta, hackerare la macchina in molti altri modi, eppure, eppure quando provo a farla sospendere o a debug sospendere, fallisco miseramente.

Ho bisogno di aiuto.

Da dove comincio a trovare il problema? Cosa devo fare per risolverlo? Sto mettendo una taglia su questo, perché ho letteralmente perso ore della mia vita a questo problema, e lasciare il mio computer su TUTTO il tempo è terribile.

I sintomi:

  • Premendo suspend il mio computer si porta in uno stato in cui ha un cursore lampeggiante, i fan sono in esecuzione, sembra che l'HD sia spento (credo) e non posso fare nulla per riportarlo da questo stato (a corto di un riavvio difficile).
  • Possibilmente correlato: i miei fan rimangono accesi anche dopo uno spegnimento e anche in questo caso, devo premere il pulsante di accensione per cinque secondi prima di poterlo riavviare.
  • Non so quali log guardare per eseguire il debug del problema e immagino che verrebbero comunque rovinati al riavvio.

Per favore, per favore aiutatemi. Questo mi fa impazzire e ci convivo da oltre un anno.


Hai avuto fortuna con questo? Sono personalmente bloccato a inizializzare l'hardware grafico. Probabilmente potrei programmarmi per uscirne dato abbastanza tempo ... ma sarebbe molto più agevole avere un metodo per risolvere direttamente il problema.
Henrik,

Sì niente fortuna. Apparentemente non esiste un metodo per il debug della sospensione, il che è un po 'scioccante.
mlissner

1
Come stai sospendendo? Stai correndo dalla riga di comando pm-suspend? Stai usando un tasto di sospensione sulla tastiera? Stai chiamando a acpi (ad es. /Etc/acpi/sleep.sh o /etc/acpi/sleepbtn.sh) ??
M. Tibbits,

1
Ai cacciatori di taglie: cerco principalmente ricette di debug generali, ovvero raccolta di informazioni, per installazioni Ubuntu più recenti che usano systemd. La mia speranza è che possiamo usare questa domanda come duplicato canonico per domande di problemi con sospensioni generali da parte di utenti inesperti.
David Foerster,

2
@pbhj: in entrambi i casi è necessaria una corretta diagnosi dei problemi come primo passo nel percorso verso una soluzione.
David Foerster,

Risposte:


22

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

  • Il problema più grande è l'hardware grafico
  • prova a sospendere senza dispositivi riservati (nvidia, fglrx)
  • il kernel non sa come gestire i dispositivi grafici
  • Il BIOS sa come ripristinare lo stato della grafica
    • tramite la modalità segmentata a 16 bit, C000: xxxx contiene la ROM video a 64k visibile.
    • avvio dell'esecuzione da C000: 0003, normalmente ripubblicando il BIOS video (/ usr / sbin / vbetool post)
      • più difficile in modalità 64 bit, poiché è necessario emulare le chiamate a 16 bit.
      • parte della memoria è nell'intervallo 3-4G, che richiede la rimappatura durante l'emulazione per evitare di colpire il kernel che è mappato nello stesso spazio. o il BIOS video potrebbe avere impaginato il codice POST dalla finestra C000 o il BIOS NVIDIA riscrive la ROM per tornare indietro per interrompere il ripubblicazione provare a sospendere dalla console (tramite /etc/acpi/sleep.sh)
    • assicurati di essere disconnesso da Xorg (o esegui sleep.sh con l'argomento "force")
    • se il BIOS del video non viene lasciato in uno stato sano, il ritorno a Xorg potrebbe bloccare l'hardware
    • test capslock al resume (se nessun capslock, kernel bloccato)
    • se la retroilluminazione non si riaccende, probabilmente il BIOS video non si reinizializza
    • se lo schermo è vuoto, ma ha una retroilluminazione, provare a premere invio o passare da un terminale virtuale all'altro
    • prova in modalità utente singolo (aggiungendo "single" alle opzioni di avvio del kernel grub)
    • per dettagli sulle azioni, prova bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • guarda le informazioni di dmidecode che corrispondono alle impostazioni in /usr/share/acpi-support/*.config
    • se la console in modalità utente singolo sospende o riprende non riesce
    • Traccia PM (echo "1"> / sys / power / pm_trace) che scriverà gli hash del dispositivo nel timer di sistema
    • tenta di sospendere
    • dopo l'errore, al riavvio, esaminare l'output di dmesg per le voci "hash dispositivo" per rintracciare il dispositivo che ha bloccato il sistema durante il riavvio.
    • consapevole che questo ripristinerà l'orologio di sistema e fsck andrà fuori di testa ("è rimasto senza fsck per 31337 giorni"). considera tune2fs -c 0 / dev / your / filesystems.

2
Come posso disattivare i dispositivi con restrizioni?
Owen,

1
eventuali collegamenti a script funzionanti per sanità mentale spuntano una casella quando la sospensione fallisce? ... questo tipo di problema è la rovina di Linux e blocca l'utilizzo di massa ...
Scott Stensland,

4

Puoi trovare molte linee guida / consigli qui e qui .

Dalla tua descrizione, sembra che il tuo ACPI non funzioni correttamente o che i driver del kernel impediscano una sospensione completa. Il secondo link mostra come affrontare questo tipo di problema.


2
Ho letto questi, ma si fermano a corto di informazioni effettivamente utili per il mio problema. Hai bisogno di più aiuto e di dettagli migliori. Ho creato una taglia per questa domanda.
mlissner,

4
Risposta errata - solo collegamenti. Il punto dello Stack * -sites è quello di fornire un punto di partenza per tutte le domande, non di mandare gli utenti a una caccia d'oca senza fine o dire "basta f * google". Inserisci la tua risposta nella domanda e aggiornala secondo il commento di mlissner.
Henrik

Grazie: a volte è utile leggere la homepage originale!
abu_bua,

4

I sintomi:

  • Premendo suspend il mio computer si porta in uno stato in cui ha un cursore lampeggiante, i fan sono in esecuzione, sembra che l'HD sia spento (credo) e non posso fare nulla per riportarlo da questo stato (a corto di un riavvio difficile).
  • Possibilmente correlato: i miei fan rimangono accesi anche dopo uno spegnimento e anche in questo caso, devo premere il pulsante di accensione per cinque secondi prima di poterlo riavviare.
  • Non so quali log guardare per eseguire il debug del problema e immagino che verrebbero comunque rovinati al riavvio.

Il mio sito Web per molti problemi di Linux è Arch Linux. Ecco cosa viene pubblicato su problemi di sospensione / ripresa simili ai tuoi:

Risvegli istantanei dalla sospensione

Per alcuni sistemi Intel Haswell con il chipset LynxPoint e LynxPoint-LP, vengono segnalati riattivazione istantanea dopo la sospensione. Sono collegati a implementazioni ACPI BIOS errate e al modo in cui il xhci_hcdmodulo lo interpreta durante l'avvio. Come soluzione, i sistemi interessati segnalati vengono aggiunti a una lista nera (denominata XHCI_SPURIOUS_WAKEUP) dal kernel caso per caso. [ 2 ]

Il ripristino istantaneo può verificarsi, ad esempio, se un dispositivo USB viene collegato durante la sospensione e i trigger di riattivazione ACPI sono abilitati. Una soluzione efficace per un tale sistema, se non è ancora nella lista nera, è disabilitare i trigger di riattivazione. Un esempio per disabilitare la sveglia tramite USB è descritto come segue. [ 3 ]

Per visualizzare la configurazione corrente:

$ 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

...

I dispositivi in questione sono EHC1, EHC2e XHC(per USB 3.0). Per attivare / disattivare il loro stato, devi inserire il nome del dispositivo nel file come root.

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

Ciò dovrebbe comportare un nuovo funzionamento della sospensione. Tuttavia, queste impostazioni sono solo temporanee e dovrebbero essere impostate ad ogni riavvio. Per automatizzare questo, dai un'occhiata a systemd # Scrivere file di unità . Vedi thread BBS per una possibile soluzione e ulteriori informazioni.


L'intero articolo Arch Linux sopra su Suspend / Resume è un ottimo riferimento per molte aree:

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

Sembra buono! Aspetterò un altro giorno o due per dare agli altri la possibilità di rispondere. Forse qualcuno si sentirà ispirato dal tuo. :-)
David Foerster,

@DavidFoerster Grazie. È difficile rispondere a una domanda di 8 anni. C'è anche un problema di sospensione / ripresa con gli SSD PCIe NVMe M.2 che aggiungerò stasera. Questi tipi di SSD non esistevano nel 2010 e richiedono uno speciale argomento del kernel grub.
WinEunuuchs2Unix

Stavo cercando meno soluzioni a problemi di sospensione specifici e altro ancora per ricette di debug generali per installazioni Ubuntu più recenti che utilizzano systemd.
David Foerster,

@DavidFoerster In tal caso lascerò la risposta così com'è :)
WinEunuuchs2Unix
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.