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: dmesg może pokazać ostatni komunikat jądra przed zawieszeniem.
  • Sprzęt nie działa: Podłączasz pendrive’a, a nic się nie dzieje? dmesg pokaż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ć?

  1. Otwórz terminal.
  2. Wpisz polecenie, które będzie na żywo pokazywać nowe komunikaty:
    dmesg -w
    
    (lub sudo dmesg --follow, jeśli -w nie działa)
  3. Teraz podłącz urządzenie USB.
  4. 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.