Jak debugować zawieszenie?


29

Używam Ubuntu od około pięciu lat i nadal nie mogę go zawiesić, kiedy chcę. To dość irytujące, że mogę zaprogramować burzę, zhakować maszynę na wiele innych sposobów, a jednak, kiedy próbuję ją zawiesić lub zawiesić debugowanie, nie udaje mi się.

Potrzebuję pomocy.

Gdzie zaczynam szukać problemu? Co mam zrobić, aby to naprawić? Kładę na to nagrodę, ponieważ dosłownie straciłem godziny życia na ten problem, a pozostawienie mojego komputera przez CAŁY czas jest straszne.

Symptomy:

  • Naciśnięcie zawieszenia powoduje przejście komputera do stanu, w którym ma migający kursor, wentylatory działają, wygląda na to, że HD wyłączył się (myślę) i nie mogę nic zrobić, aby przywrócić go z tego stanu (poza twardy restart).
  • Możliwe powiązanie: moi fani pozostają włączeni nawet po wyłączeniu i nawet wtedy muszę nacisnąć przycisk zasilania przez pięć sekund, zanim będę mógł go ponownie uruchomić.
  • Nie wiem, na jakie logi patrzeć w celu debugowania problemu, i wyobrażam sobie, że i tak zostaną zresetowane przy ponownym uruchomieniu.

Proszę o pomoc. To doprowadza mnie do szału, a ja żyję z tym od ponad roku.


Czy miałeś z tym jakieś szczęście? Osobiście utknąłem podczas inicjowania sprzętu graficznego. Prawdopodobnie mógłbym zaprogramować wyjście z niego, mając wystarczająco dużo czasu ... ale znacznie łatwiej byłoby mieć metodę bezpośredniego rozwiązania problemu.
Henrik

Tak, nie ma szczęścia. Najwyraźniej nie ma metody debugowania zawieszenia, co jest nieco szokujące.
mlissner

1
Jak się zawieszasz? Czy korzystasz z wiersza polecenia pm-suspend? Czy używasz klawisza wstrzymania na klawiaturze? Czy dzwonisz do acpi (np. /Etc/acpi/sleep.sh lub /etc/acpi/sleepbtn.sh)?
M. Tibbits,

1
Do łowców nagród: szukam głównie ogólnych przepisów dotyczących debugowania, tj. Gromadzenia informacji, do nowszych instalacji Ubuntu przy użyciu systemd. Mam nadzieję, że możemy użyć tego pytania jako kanonicznego duplikatu dla szerokich pytań problemowych przez niedoświadczonych użytkowników.
David Foerster

2
@pbhj: Tak czy inaczej, potrzebna jest odpowiednia diagnoza problemu, która jest pierwszym krokiem na drodze do rozwiązania.
David Foerster

Odpowiedzi:


22

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

  • Największym problemem jest sprzęt graficzny
  • spróbuj zawiesić bez ograniczonych urządzeń (NVIDIA, FGLRX)
  • jądro nie wie, jak obsługiwać urządzenia graficzne
  • BIOS wie, jak przywrócić stan grafiki
    • w 16-bitowym trybie segmentacji C000: xxxx zawiera widoczną pamięć ROM z 64k wideo.
    • rozpoczęcie wykonywania w C000: 0003, zwykle ponownie POST BIOS wideo (post / usr / sbin / vbetool)
      • trudniejsze w trybie 64-bitowym, ponieważ należy emulować połączenia 16-bitowe.
      • część pamięci jest w zakresie 3-4G, co wymaga ponownego mapowania podczas emulacji, aby uniknąć uderzenia w jądro, które jest mapowane w tym samym miejscu. o BIOS wideo mógł stronicować kod POST z okna C000 o NVIDIA BIOS przepisuje ROM, aby po prostu wrócić, aby zatrzymać ponowne testowanie POST spróbuj zawiesić z konsoli (przez /etc/acpi/sleep.sh)
    • upewnij się, że jesteś wylogowany z Xorg (lub uruchom sleep.sh z argumentem „force”)
    • jeśli BIOS wideo nie jest pozostawiony w normalnym stanie, powrót do Xorg może zawiesić sprzęt
    • testuje Capslock po wznowieniu (jeśli nie Capslock, jądro zawiesiło się)
    • jeśli podświetlenie nie wróci, BIOS wideo prawdopodobnie nie zainicjuje się ponownie
    • jeśli ekran jest pusty, ale ma podświetlenie, spróbuj nacisnąć Enter lub przełączać się między wirtualnymi terminalami
    • spróbuj w trybie pojedynczego użytkownika (poprzez dołączenie „single” do opcji uruchamiania jądra grub)
    • Aby uzyskać szczegółowe informacje na temat akcji, wypróbuj bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • spójrz na informacje o kodzie dmidecode, które pasują do ustawień w /usr/share/acpi-support/*.config
    • jeśli konsola w trybie pojedynczego użytkownika zawiesi się lub wznowi błąd
    • Śledzenie PM (echo „1”> / sys / power / pm_trace), które zapisuje skróty urządzenia do timera systemowego
    • próba zawieszenia
    • po awarii, podczas restartu, sprawdź dane wyjściowe dmesg dla pozycji „hash urządzenia”, aby wyśledzić urządzenie, które zawiesiło system podczas wznawiania.
    • wiedząc, że to zresetuje zegar systemowy, a fsck przestraszy („zniknął bez fsck przez 31337 dni”). rozważ tune2fs -c 0 / dev / your / filesystems.

2
Jak wyłączyć urządzenia z ograniczeniami?
Owen

1
jakieś linki do działających skryptów w celu zachowania rozsądku zaznaczają pole wyboru, gdy zawieszenie się nie powiedzie? ... tego rodzaju problem jest zmorą linuksa i blokuje masowe użycie ...
Scott Stensland,

4

Tutaj i tutaj znajdziesz wiele wskazówek / porad .

Z twojego opisu wygląda na to, że twój ACPI nie działa poprawnie lub sterowniki jądra uniemożliwiają pełne zawieszenie. Drugi link pokazuje, jak poradzić sobie z tego rodzaju problemem.


2
Przeczytałem je, ale brakuje im naprawdę przydatnych informacji na temat mojego problemu. Potrzebujesz dodatkowej pomocy i lepszych informacji. Stworzyłem nagrodę za to pytanie.
mlissner 29.01.11

4
Zła odpowiedź - tylko linki. Celem stron Stack * jest zapewnienie miejsca, w którym można zadać wszystkie pytania, a nie wysyłanie użytkowników na niekończącą się pogoń za gęsią skórką lub powiedzenie „po prostu go * google go”. Proszę wstawić odpowiedź na pytanie i zaktualizować ją zgodnie z komentarzem mlissner.
Henrik

Dzięki: Czasami warto przeczytać oryginalną stronę główną!
abu_bua

4

Symptomy:

  • Naciśnięcie zawieszenia powoduje przejście komputera do stanu, w którym ma migający kursor, wentylatory działają, wygląda na to, że HD wyłączył się (myślę) i nie mogę nic zrobić, aby przywrócić go z tego stanu (poza twardy restart).
  • Możliwe powiązanie: moi fani pozostają włączeni nawet po wyłączeniu i nawet wtedy muszę nacisnąć przycisk zasilania przez pięć sekund, zanim będę mógł go ponownie uruchomić.
  • Nie wiem, na jakie logi patrzeć w celu debugowania problemu, i wyobrażam sobie, że i tak zostaną zresetowane przy ponownym uruchomieniu.

Moja strona poświęcona wielu problemom związanym z Linuksem to Arch Linux. Oto, co jest napisane o zawieszaniu / wznawianiu problemów podobnych do twoich:

Natychmiastowe wybudzanie z trybu wstrzymania

W przypadku niektórych systemów Intel Haswell z chipsetem LynxPoint i LynxPoint-LP zgłaszane są natychmiastowe wybudzanie po zawieszeniu. Są one powiązane z błędnymi implementacjami BIOS ACPI i tym, jak xhci_hcdmoduł interpretuje to podczas uruchamiania. W ramach obejścia zgłoszone systemy, których dotyczy problem, są dodawane do czarnej listy (nazwanej XHCI_SPURIOUS_WAKEUP) przez jądro indywidualnie. [ 2 ]

Natychmiastowe wznowienie może się zdarzyć, na przykład, jeśli urządzenie USB zostanie podłączone podczas zawieszenia i włączone są wyzwalacze wznawiania ACPI. Opłacalnym obejściem takiego systemu, jeśli jeszcze go nie ma na czarnej liście, jest wyłączenie wyzwalaczy budzenia. Przykład wyłączenia budzenia przez USB opisano w następujący sposób. [ 3 ]

Aby wyświetlić bieżącą konfigurację:

$ 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

...

Odpowiednie urządzenia są EHC1, EHC2i XHC(dla USB 3.0). Aby przełączyć ich stan, musisz powtórzyć nazwę urządzenia do pliku jako root.

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

Powinno to spowodować ponowne zawieszenie działania. Te ustawienia są jednak tylko tymczasowe i należy je ustawić przy każdym ponownym uruchomieniu. Aby to zautomatyzować, spójrz na systemd # Writing unit files . Zobacz wątek BBS, aby znaleźć możliwe rozwiązanie i więcej informacji.


Cały powyższy artykuł Arch Linux na temat Suspend / Resume jest świetnym odniesieniem dla wielu dziedzin:

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

Wygląda dobrze! Poczekam jeszcze dzień lub dwa, aby dać innym szansę na odpowiedź. Może ktoś poczuje się zainspirowany twoim. :-)
David Foerster

@DavidFoerster Thanks. Odpowiedź na 8-letnie pytanie jest trudna. Jest także problem zawieszenia / wznowienia z dyskami SSD NVMe M.2 PCIe, które dodam dziś wieczorem. Tego typu dyski SSD nie istniały w 2010 roku i wymagają specjalnego argumentu jądra grub.
WinEunuuchs2Unix

Nie szukałem rozwiązań konkretnych problemów związanych z zawieszaniem, a bardziej ogólnych przepisów dotyczących debugowania dla nowszych instalacji Ubuntu przy użyciu systemd.
David Foerster

@DavidFoerster W takim przypadku pozostawię odpowiedź taką, jaka jest :)
WinEunuuchs2Unix
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.