5.3. Сбор информации об оборудовании программой dmesg

Проблема

При всех своих достоинствах шина PCI — день вчерашний. Чаще требуется получить список всех устройств в системе, не только устройств PCI: это и устройства USB, и устройства SCSI, конфигурация памяти и даже процессор.

Решение

Воспользуйтесь программой dmesg. Программа выводит список всего оборудования, обнаруженного ядром.

Чтобы просмотреть весь вывод dmesg, введите команду:

$ dmesg | less

Выходные данные dmesg также можно отфильтровать для поиска конкретных устройств. Например, следующая команда выводит список всех устройств USB:

$ dmesg | grep -i usb

Вывод списка устройств ISA:

$ dmesg | grep -i isa
isapnp: Scanning for PnP cards...
isapnp: SB audio device quirk - increasing port range
isapnp: Card 'SupraExpress 56i Voice'

Определение объёма физической памяти в системе:

$ dmesg | grep -i memory
Memory: 256492/262080k available (1467k kernel code, 5204 reserved, 516k data, 96k init, OK highmem)

Вывод списка устройств IDE, использующих подсистему эмуляции SCSI в ядре 2.4 и более старых версий:

$ dmesg | grep -i scsi
Kernel command line: root=/dev/hda6 ro hdb=scsi hdc=scsi
ide_setup: hdb=scsi
ide_setup: hdc=scsi
SCSI subsystem driver Revision: 1.00
hdb: attached ide-scsi driver
hdc: attached ide-scsi driver
scsi0 : SCSI host adapter emulation for IDE ATAPI devices

А вот как выглядят «настоящие», не эмулированные устройства SCSI:

$ dmesg | grep -i scsi
SCSI subsystem driver Revision: 1.00
scsi0: Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev. 6.2.8
<Adaptec aic7892 Ultra160 SCSI adapter>
aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
...Vendor: IBM-PSG Model: DPSS-336950M Rev: S9HA
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
(scsi0:A:0): 160.000MB/S transfers (80.000MHz DT, offset 63, 16bit)
SCSI device sda: 71096640 512-byte hdwr sectors (36401 MB)
Partition check:
sda: sda1 sda2 sda3 sda4 < sda5 sda6 >

Далее показана информация о камере USB, подключённой к системе, включая её местонахождение в файловой системе. Обычно информация об устройстве USB занимает десяток строк и более:

$ dmesg | grep -i usb
usb.c: registered new driver ibmcam
ibmcam.c: IBM PC Camera USB camera found (model 2, rev. 0x030a)
usbvideo.c: ibmcam on /dev/video0: canvas=352x240 videosize=352x240

Вывод информации о последовательных портах:

$ dmesg | grep -i tty
ttyS00 at 0x03f8 (irq = 4) is a 16550A

Вывод информации о процессоре (или процессорах):

$ dmesg | grep -i cpu
Initializing CPU#0
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 64K (64 bytes/line)
Intel machine check reporting enabled on CPU#0.
CPU: After generic, caps: 0183f9ff c1c7f9ff 00000000 00000000
CPU: Common caps: 0183f9ff c1c7f9ff 00000000 00000000
CPU: AMD Duron(tm) Processor stepping 01

Обратите внимание: при поиске возвращаются только те строки, в которых присутствует искомая подстрока. Часто дополнительная информация содержится в соседних строках и находится прямым просмотром файла:

Initializing CPU#0
Detected 801.446 MHz processor.

Комментарий

Программа dmesg всегда выводит обновлённую информацию, даже при частой смене оборудования (например, при подключении и отключении устройств USB).

См. также

dmesg(8).