Zrozumieć dmesg - Twój pierwszy krok w debugowaniu Linuksa
Co to jest dmesg?
dmesg (skrót od “display message” lub “driver message”) to jedno z najważniejszych i najprostszych narzędzi diagnostycznych w każdym systemie Linux. Pozwala ono na odczytanie komunikatów z bufora pierścieniowego jądra (kernel ring buffer).
Pomyśl o tym buforze jak o czarnej skrzynce Twojego systemu. Jądro Linuksa, od samego startu komputera, zapisuje w nim wszystkie ważne informacje: co wykryło, jakie sterowniki załadowało, czy napotkało jakieś błędy. dmesg to polecenie, które pozwala nam zajrzeć do tej skrzynki.
Dlaczego dmesg jest tak użyteczny?
W przeciwieństwie do standardowych logów systemowych (np. w /var/log), dmesg pokazuje komunikaty na bardzo niskim poziomie, bezpośrednio od jądra. Jest niezastąpiony, gdy:
- System się nie uruchamia:
dmesgmoże pokazać ostatni komunikat jądra przed zawieszeniem. - Sprzęt nie działa: Podłączasz pendrive’a, a nic się nie dzieje?
dmesgpokaże, czy jądro w ogóle go wykryło i czy próbowało załadować sterownik. - Pojawiają się losowe błędy: Problemy z dyskiem, siecią czy pamięcią często zostawiają ślady właśnie w
dmesg.
Jak używać dmesg? Podstawowe komendy
Samo wywołanie dmesg w terminalu zwróci setki, a nawet tysiące linii. Sztuką jest znalezienie tego, czego szukamy.
# Wyświetl wszystkie komunikaty
dmesg
Wynik jest zazwyczaj zbyt duży, aby go przeanalizować. Użyjmy więc innych narzędzi do filtrowania.
Przeglądanie strona po stronie
Aby wygodnie przeglądać logi, użyj less.
dmesg | less
Możesz teraz przewijać góra/dół strzałkami, a wyjść, wciskając q.
Filtrowanie w poszukiwaniu błędów
Najczęściej szukamy problemów. Użyj grep do filtrowania linii zawierających słowa takie jak “error”, “fail” czy “warning”. grep jest “case-insensitive” (-i), więc nie musimy się martwić o wielkość liter.
dmesg | grep -i "error"
Praktyczny przykład: Diagnostyka problemu z USB
Wyobraź sobie, że podłączasz dysk zewnętrzny USB i nic się nie dzieje. Jak to zdiagnozować?
- Otwórz terminal.
- Wpisz polecenie, które będzie na żywo pokazywać nowe komunikaty:
(lub
dmesg -wsudo dmesg --follow, jeśli-wnie działa) - Teraz podłącz urządzenie USB.
- Obserwuj terminal. Powinieneś zobaczyć serię nowych linii, informujących o wykryciu nowego urządzenia.
Jeśli zobaczysz coś takiego:
[ 1234.567890] usb 1-2: new high-speed USB device number 3 using xhci_hcd
[ 1234.567990] usb 1-2: New USB device found, idVendor=0bc2, idProduct=ab38
[ 1234.568090] scsi host4: uas
…to znaczy, że sprzęt został poprawnie wykryty.
Jeśli jednak pojawią się błędy, np. device descriptor read/64, error -110, masz już konkretny trop, który możesz wyszukać w internecie, aby znaleźć rozwiązanie.
Kolorowanie i czytelność
Aby ułatwić czytanie, możesz dodać opcję --color=always do grep lub użyć narzędzia dmesg z opcją -H (human-readable), która ładnie formatuje wynik.
dmesg | grep -i --color=always "fail"
Inne przydatne opcje dmesg
dmesg -T: Wyświetla datę i godzinę w czytelnym formacie (zamiast sekund od startu systemu).dmesg -l err,warn: Pokazuje tylko komunikaty o błędach i ostrzeżenia.dmesg -c: Wyświetla logi, a następnie czyści bufor. Uważaj z tą opcją!
Podsumowanie
dmesg to absolutna podstawa diagnostyki w Linuksie. Zanim zaczniesz szukać rozwiązania problemu w internecie, zawsze zacznij od sprawdzenia, co na ten temat ma do powiedzenia Twoje jądro. To proste polecenie może zaoszczędzić godziny frustracji i jest pierwszym krokiem do zostania świadomym użytkownikiem Linuksa.