Co to jest „panika jądra”?

19

Co to znaczy, że na twoim komputerze występuje „panika jądra” ?

Czy to odpowiada Windows BsoD ?

Jakie metody, porady i triki są dostępne dla użytkownika, gdy pojawi się panika jądra ?

Stefan
źródło
3
Panika jądra jest lepsza niż BSOD, ponieważ jego nazwa sugeruje, co użytkownik powinien zrobić, kiedy to nastąpi.
amfetamachina
Niebieskie okno również daje pewne informacje, ale przez większość czasu nie jest to zbyt pomocne.
ott--

Odpowiedzi:

16

Panika jądra jest taka sama jak BSOD i nie można jej uratować IIRC. Jednak mniejszą awarią jest OOPS, co oznacza pewien błąd w jądrze.

  1. Możesz użyć kexec, który przełącza się na nowe jądro w przypadku paniki (możesz zagrozić mu to podczas szybkiego restartu) - możliwe uzyskanie znaczącego zrzutu systemu w celu debugowania problemu
  2. Możesz użyć panicparametru, który ponownie uruchamia jądro po n sekundach. W takim przypadku możesz poinstruować GRUB, aby przeszedł na jądro rezerwowe
  3. Użyj magicznych klawiszy SysRQ do drukowania śladów stosu itp.
Maciej Piechotka
źródło
6
Bardziej poprawne BSOD to KP z naprawdę złym ekranem komunikatu o błędzie.
ksenoterracid
Najbardziej godną uwagi magią SysRq było opróżnienie emergency syncbuforów (jeśli nadal jest to możliwe).
ott--
6

Panika jądra Linuksa to wywołanie podprogramu, które jądro wykonuje, gdy logika jądra stwierdzi, że istnieje warunek, który uniemożliwia lub nieodpowiedzialność dalszego wykonywania normalnej logiki.

Jądro może wywołać panikę, gdy:

  1. Wykrywa błąd oprogramowania w kodzie jądra lub stosie
  2. Gdy występuje warunek działania, taki jak brak pamięci bez procesów możliwych do wywołania
  3. Wyjątek procesora podczas wykonywania trybu uprzywilejowanego powoduje stan awaryjny

Istnieje około 950 różnych warunków, w których w jądrach 3.X wywoływana jest panika. Podprogram paniki najpierw drukuje zrzut stosu jądra i rejestry procesora do konsoli. Następnie, jeśli skonfigurowano awaryjne jądro kexec, uruchamia ono jądro kexec. W przeciwnym razie rutyna paniki niszczy wszystkie blokady i wykonuje awaryjny restart.

Ups to podprogram wywoływany z procedury obsługi wyjątków procesora dla wyjątku procesora, który występuje podczas wykonywania w trybie uprzywilejowanym (tj. Jądro). Wyjątek może wystąpić w wyniku błędu w kodzie jądra, awarii sprzętu lub w wyniku zewnętrznego warunku, który powoduje określony wyjątek. Procedura obsługi wyjątku drukuje dziennik jądra z rejestrami procesorów i listą modułów. W przeciwieństwie do wywołań paniki, sama logika jądra nigdy nie wywołuje ups poza kontekstem obsługi wyjątków CPU.

Jeśli jądro jest skonfigurowane dla kexec, wówczas oops spowoduje uruchomienie jądra kexec. W przeciwnym razie, jeśli wyjątek wystąpi podczas wykonywania procedury obsługi przerwań, wówczas oops powoduje wywołanie paniki jądra. W przeciwnym razie, jeśli jądro jest skonfigurowane z „paniką przy oops”, wówczas oops spowoduje wywołanie paniki. W przeciwnym razie jądro kończy obsługę wyjątków i wznawia wykonywanie. Kiedy jądro opuści program obsługi wyjątków i wznowi wykonanie, podejrzewa się integralność jądra.

Procedury obsługi wyjątków procesora są specyficzne dla architektury. Zazwyczaj są one implementowane w arch / * / kernel / traps.c i ustawione w specyficznym dla architektury kodzie wejściowym jądra, który tworzy tabelę przerwań. Zobacz na przykład arch/powerpc/kernel/traps.ci arch/powerpc/kernel/head_fsl_booke.S.

Zarówno panika jądra, jak i warunki wyłączenia mogą być skonfigurowane do wywoływania kmsg_dumpprocedury, której można użyć do zapisania informacji o debugowaniu awarii w pamięci RAM lub do pamięci flash, chyba że oops wystąpił w kontekście przerwania, w którym to przypadku można użyć procedury „kmsg_dump” zapisz w pamięci RAM, a nie na MTD. Podczas zapisywania w pamięci RAM Twoim obowiązkiem jest: a) upewnić się, że obszar pamięci RAM nie zostanie nadpisany podczas rozruchu Kexec lub awaryjnego restartu, oraz b) w celu pobrania obszaru pamięci z jądra Kexec lub logiki modułu ładującego rozruch.

Jonathan Ben-Avraham
źródło
5

Jest to nieoczekiwane zachowanie przepływu programu (w tym przypadku jądro jest programem). W przypadku paniki program przestaje działać. Jest równy Windows BsoD. KP oznacza coś złego w jądrze lub modułach. Jeśli jest to stabilne jądro - spójrz na sterowniki. Jeśli nic specjalnego i wszystkie sterowniki są wspólne, może to być problem sprzętowy.

Dmytro Leonenko
źródło
lub jądro idzie na piknik ...
uray
Nawet w stabilnym jądrze zawsze pozostaje kilka błędów.
ott--