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.