Для определения какие доступные модули ядра подходят для установленных в текущей системе PCI плат
нужно запустить утилиту pcimodules, которая для сопоставления модулей ядра и идентификаторов PCI плат
использует содержимое файла /lib/modules/версия_ядра/modules.pcimap, автоматически генерируемого на этапе
выполнения команды depmod.Полный список всех поддерживаемых PCI идентификаторов можно найти в файле /usr/share/hwdata/pci.ids
Обновить базу pci.ids можно выполнив команду:update-pciids
Для просмотра всех PCI устройств в системе нужно использовать утилиту lspci (lspci -vvv для детального вывода).
Для вывода информации, какой драйвер можно использовать для каждого устройства в системе:
lspci -k
Рассмотрим по шагам процесс определения присутствия поддержки имеющейся аудио платы в текущем Linux ядре.
Смотрим параметры платы:
lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller
Видим, что идентификатор платы 00:1b.0. Далее выводим для этого идентификатора более подробную информацию:
lspci -n | grep 00:1b.0
00:1b.0 0403: 8086:27d8 (rev 01)где,
00:1b.0 - код устройства;
8086 - код производителя (Intel Corporation)
27d8 - идентификатор модели.Проверяем какие модули ядра поддерживают данную модель:
grep 27d8 /lib/modules/$(uname -r)/modules.pcimap
snd-hda-intel 0x00008086 0x000027d8...
Смотрим информацию о драйвере:
modinfo snd-hda-intel
filename: /lib/modules/2.6.27-11-server/kernel/sound/pci/hda/snd-hda-intel.ko
description: Intel HDA driver
depends: snd-pcm,snd-page-alloc,sndURL: http://www.cyberciti.biz/tips/linux-find-supported-pci-hardw...
Обсуждается: http://www.opennet.me/tips/info/2088.shtml
У меня ядро без модулей. Где можно в исходниках найти аналог /lib/modules/$(uname -r)/modules.pcimap ?
grep -R PCI_DEVICE /usr/src/linux/ | grep 27d8
Автор, как истинный бубунтолог, забыл указать 2 вещи- что это линух и какой дистрибутив.
Про линукс написано в заголовке, а дистрибутив тут действительно неважен.
>Про линукс написано в заголовке, а дистрибутив тут действительно неважен.Похоже что важен, поскольку в СentOS 5.3 опции -k нету.
[myuser@myserver]# lspci -k
lspci: invalid option -- k
>Похоже что важен, поскольку в СentOS 5.3 опции -k нету.В бубунте 8.0.4 тоже нету.
Опция -k есть не во всех вериях pciutils.
опция -к появилась с версии 3.0;
А если нужных модулей нет ? Автор не видел монолитных ядер ?
ИМХО, универсальный способ grep <PCI_ID> /usr/src/linux.
в заметке указаны конечно известные вещи, но всё-таки спасибо, что у автора нашлось время её написать.
хорошо бы ещё указать про утилиту hwinfo. например её вывода (без параметров):
78: None 00.0: 10701 Ethernet
[Created at net.124]
Unique ID: usDW.ndpeucax6V1
Parent ID: rBUF.AqfLKmJBCU4
SysFS ID: /class/net/eth0
SysFS Device Link: /devices/pci0000:00/0000:00:1c.5/0000:06:00.0
Hardware Class: network interface
Model: "Ethernet network interface"
Driver: "r8169"
Driver Modules: "r8169"
Device File: eth0
HW Address: 00:1e:68:26:92:ee
Link detected: no
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #17 (Ethernet controller)
как видите она выводит почти всю необходимую информацию.
кстати, это поможет и автору первого комментария
# cat /sys/bus/pci/devices/*\:*/vendor
# cat /sys/bus/pci/devices/*\:*/devicelspci какие-то придумали ... :)
Сейчас ведь спросят,
" - а что делать если у меня sysfs не вкомпилен?!"
- Вешаться!
ну это не совсем удобнолучше уж тогда ченить типа
# find /sys/bus/pci/devices/ -name "*\:*" -print -exec cat {}/vendor \; -exec cat {}/device \;
>ну это не совсем удобно
>
>лучше уж тогда ченить типа
>
># find /sys/bus/pci/devices/ -name "*\:*" -print -exec cat {}/vendor \; -exec cat
>{}/device \;тоже хорошая разминка для мозга...
Забыли про dmidecode
>Забыли про dmidecodeА Вы ни разу не видели компа, который по dmidecode в дамп падает....
Ну не в дамп конечно, а выдает что-то типа: "DMI Information not found" :)по-моему какая-то из PC/104 (скорее всего Fastwell или Nexcom)