Product SiteDocumentation Site

53.2. Как распознаётся оборудование?

Попробуем внести определённость. Какую информацию относительно подключаемого прибора получает компьютер, и как он её получает?
Очевидно, «с той стороны» каждого разъёма (допустим, USB, в который мы воткнули flash-диск) имеется какое-то оборудование, которое позволяет им пользоваться (как и USB-мышкой, USB- принтером и т.п.). Это оборудование:
  • определяет тип подключённого устройства;
  • управляет им (может, например, выключить или включить);
  • передаёт на это устройство данные и/или принимает их оттуда.
Такое оборудование называется шиной (bus). Этимология этого слова, что русского, что английского, загадочна и восходит к доисторическим временам, когда компьютеры назывались «ЭВМ».
Шин в компьютере несколько (по количеству различных типов разъёмов). Есть совсем «глупые» шины — например, порт последовательного ввода-вывода (к нему подключаются мыши и прочая аппаратура «старого образца»). Глупость их в том, что информацию о типе подключённого оборудования приходится задавать вручную: либо заранее, либо с помощью наводящих вопросов пользователю.
Есть шины весьма «умные», способные опросить и понять множество характеристик подключённого устройства. Такова, например, шина PCI — наиболее распространённое на сегодня оборудование для подключения плат расширения. Любопытный пользователь может посмотреть список устройств, подключённых к шине PCI с помощью команды lspci (от «list PCI», команда из пакета pciutils):
[tmpuser@arnor tmpuser]$ lspci
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge (rev 80)
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge
0000:00:0f.0 RAID bus controller: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80)
0000:00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
0000:00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
0000:00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
0000:00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81)
0000:00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]
0000:00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60)
0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R100 QD [Radeon 7200]
Из устройств на иллюстрации только одно — видеокарта Radeon 72002 — в действительности является платой расширения, все остальные интегрированы в системную плату (бывает и по- другому). Тип устройства — «Multimedia audio controller», «Ethernet controller», «VGA compatible controller» и т.п. — лишь небольшая часть информации, которую шине рассказали о себе подключённые к ней устройства.
К шине PCI в качестве устройства подключена другая шина — USB, служащая для подсоединения внешних устройств. Она тоже довольно «умная», а ещё отличается тем, что устройства подключаются к ней и отключаются от неё довольно часто. Существует команда lsusb (из пакета, естественно, usbutils), но ею, как и lspci, приходится пользоваться нечасто (она даже убрана в каталог /usr/sbin):
[tmpuser@arnor tmpuser]$ /usr/sbin/lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 003: ID 08ec:0012 M-Systems Flash Disk Pioneers
Bus 001 Device 001: ID 0000:0000
Пример показывает пять USB-шин (это совпадает с данными lspci), к первой из которых подключён flash-диск, а ко второй — мышь. Как правило, устройство определяется шиной, после чего специально обученная системная программа производит все действия, необходимые для того, чтобы этим устройством можно было воспользоваться. Например, для flash-диска потребовалось дополнительно загрузить модуль ядра usb_storage, и смонтировать содержимое диска в каталог /media/usbdisk.
Специальный каталог /sys отражает представление системы о присоединённых к ней устройствах. В частности, все найденные на шинах устройства перечислены в виде подкаталогов /sys/bus/шина/devices. Если устройство установлено, а «умная шина», наподобие PCI или USB, его не заметила — скорее всего, неполадка аппаратная (несовместимое или неисправное устройство, таракан в разъёме и т.п.).
Бывает и так: устройство (видеокарта, модем, кофеварка) на шине появилось, а воспользоваться им не удаётся. Видимо, чего-то не хватает… драйвера?