dmesg odczytuje komunikaty z bufora pierścieniowego jądra (kernel ring buffer) — logu, w którym jądro rejestruje wykrywanie sprzętu, ładowanie sterowników i błędy od momentu startu systemu. W odróżnieniu od wpisów w /var/log, są to niskopoziomowe komunikaty prosto z jądra, przydatne przy diagnostyce problemów z bootem, brakującym sprzętem, dyskami i siecią.

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ą!

Gdy coś nie działa na poziomie sprzętu lub sterowników, dmesg to pierwsze miejsce do sprawdzenia.