Я пытаюсь найти способ точно определить, все ли устройства в какой-либо системе имеют действительный драйвер, установленный либо через модуль ядра, либо встроенный в ядро.
Я работаю с RHEL 5.5 на Dell Optiplex 990.
Я знаю, что lspci — хорошая отправная точка, но она ненадежна, поскольку ее можно обновить вручную, а новые драйверы не всегда ее обновляют. Я знаю, что могу посмотреть look at /lib/modules/$(uname -r)/modules.pcimap, чтобы узнать, есть ли модуль драйвера для устройства на базе ID, но как насчет встроенных драйверов? Я установил новое ядро и пытаюсь узнать, поддерживает ли встроенный модуль agpgart-intel хост-мост с идентификатором vendor:device 8086:0100.
Также, есть ли правильная процедура обновления списка pci.ids при обновлении ядра? Я знаю, что я мог бы просто обновить все с помощью update-pciids или загрузив список из интернета, но не разумнее ли включать только идентификаторы, поддерживаемые текущей установкой?
решение1
Алекс отвечает на ваш вопрос. Сравнитьlspci
00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)
00:19.0 Ethernet controller: Intel Corporation 82577LM Gigabit Network Connection (rev 06)
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)
00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 06)
00:1c.3 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 4 (rev 06)
00:1c.4 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 5 (rev 06)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a6)
00:1f.0 ISA bridge: Intel Corporation QM57 Chipset LPC Interface Controller (rev 06)
00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller (rev 06)
00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 06)
00:1f.6 Signal processing controller: Intel Corporation 5 Series/3400 Series Chipset Thermal Subsystem (rev 06)
02:00.0 Network controller: Intel Corporation Centrino Ultimate-N 6300 (rev 35)
ff:00.0 Host bridge: Intel Corporation Core Processor QuickPath Architecture Generic Non-core Registers (rev 02)
ff:00.1 Host bridge: Intel Corporation Core Processor QuickPath Architecture System Address Decoder (rev 02)
ff:02.0 Host bridge: Intel Corporation Core Processor QPI Link 0 (rev 02)
ff:02.1 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor QPI Physical 0 (rev 02)
ff:02.2 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor Reserved (rev 02)
ff:02.3 Host bridge: Intel Corporation 1st Generation Core i3/5/7 Processor Reserved (rev 02)
с результатомls -l pci*/*:*/driver
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:00.0/driver -> ../../../bus/pci/drivers/agpgart-intel
lrwxrwxrwx. 1 root root 0 May 21 09:34 pci0000:00/0000:00:02.0/driver -> ../../../bus/pci/drivers/i915
lrwxrwxrwx. 1 root root 0 May 21 09:06 pci0000:00/0000:00:16.0/driver -> ../../../bus/pci/drivers/mei_me
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:19.0/driver -> ../../../bus/pci/drivers/e1000e
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1a.0/driver -> ../../../bus/pci/drivers/ehci-pci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1b.0/driver -> ../../../bus/pci/drivers/snd_hda_intel
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.0/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.3/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1c.4/driver -> ../../../bus/pci/drivers/pcieport
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1d.0/driver -> ../../../bus/pci/drivers/ehci-pci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.0/driver -> ../../../bus/pci/drivers/lpc_ich
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.2/driver -> ../../../bus/pci/drivers/ahci
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.3/driver -> ../../../bus/pci/drivers/i801_smbus
lrwxrwxrwx. 1 root root 0 May 21 09:37 pci0000:00/0000:00:1f.6/driver -> ../../../bus/pci/drivers/intel ips
Это не обязательно будет охватывать "все оборудование". В частности, может быть функционал, доступный через ACPI. Хотя это было бы слишком сложно для ручного анализа.
Альтернативой было быначинатьпутем создания базового контрольного списка функций, когда вы пытаетесь использовать систему. Для меня это более позитивный подход, поскольку Linux часто не поддерживает некоторые функции в моей системе, но я с удовольствием использую Linux, не нуждаясь в этих функциях :).
Согласен, lspci — хороший помощник. Однако, может быть проще, например, когда вы видите линию Ethernet, просто подтвердить, что у вас есть работающий Ethernet. Если Ethernetне сделалработа, я могу проверить отсутствие драйвера, но мне не нужно проверять драйвер, прежде чем я попробую его.
Я также, возможно, захочу позже записать, какой именно драйвер, потому что я рад, что он хорошо работал, и я думаю, что это хорошее оборудование, чтобы выбрать его снова :). К сожалению, как говорит vonbrand, поддержка оборудования может быть минным полем, поэтому в идеале вы бывсе ещехотите получить сертификацию для своей ОС или ее эквивалент в сообществе: в Google много отчетов «у меня все отлично работает».
Интересно, agp — это то, что вы хотели использовать? RHEL 5 — это предшественница gnome3, поэтому вы можете открывать эмуляторы терминала без 3D-ускорения, если вам это нужно. Если выделатьнужно 3D-ускорение, вам также нужна библиотека GL для него. Почему бы не попробовать самые требовательные графические приложения, которые вы, возможно, захотите использовать, и не проверить, что они работают?
Производительность немного раздражает, когда ее оцениваешь. Это больше, чем флажок, но это все еще может быть вызвано дискретной возможностью, например, наличием универсального драйвера вместо аппаратно-специфичного. Может быть полезно поискать быстрые бенчмарки по всему списку функций и записывать результаты в качестве точки отсчета. Например, Gnome Disks представляет собой очень удобный инструмент для бенчмарков, который устанавливается по умолчанию в последних версиях (кхе) этого рабочего стола.
Когда вы замечаете сбой производительности на одной из ваших систем (например, Gnome 3 работает рывками), вы можете отметить это как потенциальный пункт контрольного списка. То есть на новой системе вы можете заметить, что Gnome 3 не работает рывками все время, так что он прошел этот конкретный тест.
решение2
Если вы знаете символы Kbuild для нужных драйверов, вы можете проверить /proc/config.gz
или любой другой доступный источник конфигурации ядра (дистрибутивы обычно помещают конфигурацию /boot
вместе с ядром, или вы можете извлечь конфигурацию из ядра с помощью scripts/extract-ikconfig
исходного дерева ядра — при условии, конечно, что конфигурация была скомпилирована в ядро).
решение3
Вам придется искать устройства, перечисленные для машины, в списке поддерживаемых RHEL. Да, могут быть те, которые работают, но никто не удосужился проверить/сертифицировать их работу.
Будьте осторожны, иногда устройства с похожими названиями (например, некоторые сетевые карты с названием SC-423+ былиполностьюдругой зверь, чем внешне идентичный SC-423; и однажды нас укусили карты с точно таким же номером модели, которые были совершенно разными). И наоборот, совершенно разные устройства от разных поставщиков были построены на тех же самых деталях. Но также так, что производитель A был надёжен, как скала, в то время как B был чертовски ненадёжен.