Mam problem z Handbrake / ffmpeg. Po około 5 minutach transkodowania komputer się blokuje. Jestem całkiem pewien, że to panika jądra, ponieważ Caps-Lock zaczyna migać.
Jest kilka logicznych pytań na temat tego, co robić, a niektóre na temat konkretnych błędów, ale naprawdę mam jedno: co się stało, zanim wszystko umarło ?!
Sprawdziłem /var/log/kern.log
i wszystko, co widzę w tym czasie, to to, że wkładam DVD, a kilka minut później system się uruchamia. Bez błędów, bez paniki.
Czy jest jakiś sposób na wymuszenie rejestrowania paniki? Jestem całkiem pewien, że mogę to odtworzyć (zdarzyło się to w 100% razy, kiedy ostatnio próbowałem), więc chociaż wolę to „po prostu zadziałało”, cieszę się, że mogę uruchomić się ponownie kilka razy, jeśli oznacza to, że mogę znaleźć przyczynę paniki.
Odpowiedzi:
Obsługiwane są wszystkie dzienniki systemowe w systemie Ubuntu, dzięki
rsyslog
którym zachowuje on swoją konfigurację w/etc/rsyslog.conf
i/etc/rsyslog.d/
.Aby uzyskać więcej informacji na temat konfiguracji
rsyslog
i możliwych opcji, odwiedź stronęrsyslog.conf man page
.Po otwarciu
/etc/rsyslog.d/50-default.conf
widać, że jedna z linii zawiera*.*;auth,authpriv.none -/var/log/syslog*
Oznacza to, że plik, którego szukasz w tym przypadku, jest jednym z ogromnych
/var/log/syslog
dzienników, które prawdopodobnie będziesz mieć.Możesz zobaczyć, że nazwa pliku zaczyna się również od
-
, co oznacza, że plik jest buforowany przed zapisaniem, jest świetny, ale może pozostawić zły dziennik, a chcesz, aby dziennik został zapisany, gdy tylko wystąpi problem. Usuń kreskę i uruchom ponownie lub ponownie załaduj,rsyslog
a następnie ponownie spowoduj awarię komputera, sprawdź/var/log/syslog
.źródło
Jeśli naprawdę jest to panika jądra, to nie zostanie zapisana w dzienniku za pomocą normalnych metod. Ponieważ jądro uległo awarii w tym momencie, zapisywanie w systemie plików jest ryzykowną operacją - nie można już ufać zbyt dużej części jądra, więc zapisy w logach mogą powodować wyrzucanie losowych bzdur na twój bootloader!
Zamiast tego możesz zrzucić zawartość pamięci do swojej wymiany, a następnie debugować ją później. Jest to znane jako awaria jądra / zrzut rdzenia.
Ubuntu Wiki ma CrashdumpRecipe, który może być przydatny - choć wygląda na nieco nieaktualny, nie sądzę, że zbyt wiele powinno się zmienić.
źródło
linux-crashdump
; ten pakiet jest nadal dostępny we wszystkich wersjach.Port szeregowy
Port szeregowy to prosty mechanizm komunikacji niskiego poziomu między komputerami.
Zalety:
Wady:
Port szeregowy wygląda następująco:
a na RPI jest dostępny przez GPIO.
Następnie, jeśli masz wymagany sprzęt, połącz z drugiego komputera z komputerem głównym za pomocą:
To faktycznie daje ci powłokę.
Następnie na głównym komputerze rozpocznij operację paniki.
Kiedy dochodzi do paniki, zrzut paniki jest przesyłany strumieniowo do drugiej maszyny i można to wszystko zobaczyć, przewijając w górę terminal.
Inne metody
Istnieją również inne metody, które pokonują wspomniane wyżej ograniczenia sprzętowe, kosztem większej złożoności i mniejszej niezawodności. Godne uwagi metody:
Zobacz także tę świetną odpowiedź: https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic
Krok debugowania
Ostatecznie uzyskanie danych wyjściowych z paniki wymaga działania niektórych funkcji jądra, a każda funkcja jądra może zostać uszkodzona przez panikę.
Ale kto potrzebuje paniki, jeśli możesz używać GDB w jądrze? Jeśli jesteś hardcorowy, spójrz na:
Każdy problem spada, gdy masz pełną widoczność (i wystarczająco dużo czasu!).
źródło