Dmesg

From EIK wiki

Tõnis Umbsaar A41, 2014/2015

Sissejuhatus

Antud referaat kirjeldab koos süntaksi ja näidetega, mida teeb dmesg tööriist. See on käsk, mis sisuliselt näitab ära kõik draiverid, mis kernelisse laetakse alglaadimisel või kui lisatakse seade arvuti külge. dmesg on väga tõhus tööriist näitamaks draiveritega seotud veateateid. See tööriist on enamikes Linuxi distributsioonides vaikimisi olemas. Alljärgnevad käsud on soovitatav juurkasutajana käivitada (sudo -i), muidu ei pruugi osade argumentidega käsk toimida. Samuti piisab sellest, kui ette lisada sudo.

Viimase muudatuse ajalugu

11.10.2014 valmis esialgne versioon
20.10.2014 süntaks loetavamaks

Süntaks

sudo dmesg [-CcDdEhknrTtuVx] [-f [kern, user...]] [-l [alert, err...]]
Option Tähendus
-C tühjendab viimasest alglaadimisest tekkinud dmesg outputi
-c näitab ja tühjendab dmesg outputi
-D keelab ära käsureale dmesg printimise
-d näitab aega teadete vahel
-E lubab käsureale dmesg printimise
-f täpsustab milliseid osi täpsemalt välja printida: kern, user, mail, daemon, auth, syslog, lpr, news
-h näitab käesolevat süntaksi
-k näitab kerneliga seotud teateid
-l aitab vea otsimisel määrata vea tase:
level 0-3 näitab tõsisemaid erroreid
level 4 näitab kergemaid vigu, mis võivad viitada suuremale murele
level 5 kerged vead, mis võib olla vajavad tähelepanu, aga ei pruugi
level 6 näitab informatsiooni draiverite käimamineku kohta
level 7 kasutatakse debuggimiseks
-n määrab ära mis tasemega vead ära näidatakse
-r näitab koos log-level numbriga
-s saab määrata puhvri suuruse, vaikimisi 16392
-T näitab lihtsamini loetavas ajaformaadis, aga võib olla ebatäpne kui on kasutatud süsteemis SUSPEND/RESUME funktsioone
-t näitab teated ilma ajata
-u näitab userspace'ga seotud teateid
-V näitab dmesg versiooni
-x näitab vea taset loetaval kujul

dmesg lubab samuti kasutada "pipe"-ga grep ja less funktsioone.


Näited

Järgnev käsk näitab wifi draiveriga seotud infot

root@exod3rmus:~# dmesg | grep wifi
[   14.088628] iwlwifi 0000:04:00.0: can't disable ASPM; OS doesn't have ASPM control
[   14.088777] iwlwifi 0000:04:00.0: irq 46 for MSI/MSI-X
[   14.718192] iwlwifi 0000:04:00.0: loaded firmware version 8.83.5.1 build 33692 op_mode iwldvm
[   14.749585] iwlwifi 0000:04:00.0: CONFIG_IWLWIFI_DEBUG disabled
[   14.749590] iwlwifi 0000:04:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[   14.749592] iwlwifi 0000:04:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[   14.749595] iwlwifi 0000:04:00.0: Detected Intel(R) WiFi Link 5100 AGN, REV=0x54
[   14.750236] iwlwifi 0000:04:00.0: L1 Enabled; Disabling L0S
[   19.845701] iwlwifi 0000:04:00.0: L1 Enabled; Disabling L0S
[   19.849532] iwlwifi 0000:04:00.0: Radio type=0x1-0x2-0x0
[   19.947359] iwlwifi 0000:04:00.0: L1 Enabled; Disabling L0S
[   19.950527] iwlwifi 0000:04:00.0: Radio type=0x1-0x2-0x0

Järgnev käsk näitab videokaardi infot loetava vea tasemega (6-info, 7-debug) ja lihtsamini loetavas ajaformaadis.

root@exod3rmus:~# dmesg -x -T | grep radeon
kern  :info  : [L okt   11 13:58:32 2014] [drm] radeon kernel modesetting enabled.
kern  :info  : [L okt   11 13:58:32 2014] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: VRAM: 512M 0x0000000000000000 - 0x000000001FFFFFFF (512M used)
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: GTT: 1024M 0x0000000020000000 - 0x000000005FFFFFFF
kern  :info  : [L okt   11 13:58:32 2014] [drm] radeon: 512M of VRAM memory ready
kern  :info  : [L okt   11 13:58:32 2014] [drm] radeon: 1024M of GTT memory ready.
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: WB enabled
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: fence driver on ring 0 use gpu addr 0x0000000020000c00 and cpu addr 0xffff8800b023cc00
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: fence driver on ring 3 use gpu addr 0x0000000020000c0c and cpu addr 0xffff8800b023cc0c
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: fence driver on ring 5 use gpu addr 0x000000000005c598 and cpu addr 0xffffc9001119c598
kern  :debug : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: irq 48 for MSI/MSI-X
kern  :info  : [L okt   11 13:58:32 2014] radeon 0000:01:00.0: radeon: using MSI.
kern  :info  : [L okt   11 13:58:32 2014] [drm] radeon: irq initialized.
kern  :info  : [L okt   11 13:58:33 2014] [drm] radeon atom DIG backlight initialized
kern  :info  : [L okt   11 13:58:33 2014] [drm] radeon: dpm initialized
kern  :info  : [L okt   11 13:58:34 2014] fbcon: radeondrmfb (fb0) is primary device
kern  :info  : [L okt   11 13:58:35 2014] radeon 0000:01:00.0: fb0: radeondrmfb frame buffer device
kern  :info  : [L okt   11 13:58:35 2014] radeon 0000:01:00.0: registered panic notifier
kern  :info  : [L okt   11 13:58:35 2014] [drm] Initialized radeon 2.36.0 20080528 for 0000:01:00.0 on minor 0

dmesg väljavõte, kui lisada töötavale masinale USB pulk külge:

[ 6212.318708] ehci-pci 0000:00:1d.7: port 2 reset error -110
[ 6212.652109] usb 2-2: new high-speed USB device number 4 using ehci-pci
[ 6212.785278] usb 2-2: New USB device found, idVendor=0781, idProduct=5567
[ 6212.785286] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6212.785293] usb 2-2: Product: Cruzer Blade
[ 6212.785298] usb 2-2: Manufacturer: SanDisk
[ 6212.785303] usb 2-2: SerialNumber: 20060877230F1D92A39C
[ 6212.869584] usb-storage 2-2:1.0: USB Mass Storage device detected
[ 6212.870039] scsi6 : usb-storage 2-2:1.0
[ 6212.870175] usbcore: registered new interface driver usb-storage
[ 6213.869337] scsi 6:0:0:0: Direct-Access     SanDisk  Cruzer Blade     1.26 PQ: 0 ANSI: 5
[ 6213.869939] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 6213.871177] sd 6:0:0:0: [sdb] 7821312 512-byte logical blocks: (4.00 GB/3.72 GiB)
[ 6213.872566] sd 6:0:0:0: [sdb] Write Protect is off
[ 6213.872578] sd 6:0:0:0: [sdb] Mode Sense: 43 00 00 00
[ 6213.874210] sd 6:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 6213.899811]  sdb: sdb1
[ 6213.903278] sd 6:0:0:0: [sdb] Attached SCSI removable disk

Kokkuvõte

Võib esineda juhtumeid, kus mingi muu viga on alguse saanud just draiverist, mistõttu on dmesg väga hea tööriist selle välja selgitamiseks. Igaks juhuks tasuks lisaks logifailide kontrollimisele lisada juurde just selle käsu, vältimaks näiteks riistvaralisi vigu.

Kasutatud kirjandus

http://www.linuxnix.com/2013/05/what-is-linuxunix-dmesg-command-and-how-to-use-it.html

http://www.linfo.org/dmesg.html

http://man7.org/linux/man-pages/man1/dmesg.1.html

http://elinux.org/Debugging_by_printing

http://linux.die.net/man/1/dmesg