Determinar se o driver integrado do kernel suporta um dispositivo

Determinar se o driver integrado do kernel suporta um dispositivo

Estou tentando encontrar uma maneira de determinar com precisão se todo o hardware em algum sistema possui um driver válido instalado por meio de um módulo do kernel ou integrado ao kernel.

Estou trabalhando com RHEL 5.5 em um Dell Optiplex 990.

Eu sei que lspci é um bom ponto de partida, mas não é confiável porque pode ser atualizado manualmente e novos drivers nem sempre o atualizam. Eu sei que posso dar uma olhada em /lib/modules/$(uname -r)/modules.pcimap para descobrir se existe um módulo de driver para a base do dispositivo no ID, mas e os drivers integrados? Instalei um novo kernel e estou tentando descobrir se o módulo agpgart-intel integrado suporta a ponte host com fornecedor:device ID 8086:0100.

Além disso, existe um procedimento adequado para atualizar a lista pci.ids ao atualizar o kernel? Eu sei que poderia atualizar tudo usando update-pciids ou baixando a lista da internet, mas não faz mais sentido incluir apenas os IDs suportados pela instalação atual?

Responder1

Alex responde sua pergunta. Compararlspci

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)

com o resultado dels -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

Não cobrirá necessariamente "todo o hardware". Em particular, poderia haver funcionalidades acessadas através da ACPI. Isso seria demais para explorar manualmente.

Uma alternativa seriacomeçarconstruindo uma lista de verificação básica de funções enquanto você tenta usar o sistema. É uma abordagem mais positiva para mim, pois o Linux muitas vezes não suporta alguma função no meu sistema, mas eu uso o Linux felizmente sem precisar dessa função :).

Concordo que lspci é um bom ajudante. No entanto, poderia ser mais simples, por exemplo, quando você vê a linha Ethernet, apenas para confirmar se a Ethernet está funcionando. Se Ethernetnãofuncionar, posso verificar a falta de driver, mas não preciso verificar o driver antes de tentar.

Eu também posso querer um registro de qual é o driver exato mais tarde, porque estou feliz que funcionou bem e acho que é um bom hardware para escolher novamente :). Infelizmente, como vonbrand diz que o suporte de hardware pode ser um campo minado, então idealmente vocêaindadeseja ter certificação para seu sistema operacional ou equivalente da comunidade: muitos relatórios "funciona muito bem para mim" no Google.

Gostaria de saber se agp é algo que você queria usar? RHEL 5 é pré-gnome3, então você pode abrir seus emuladores de terminal sem qualquer aceleração 3D, se necessário. Se vocêfazerprecisa de aceleração 3D, você também precisa de uma biblioteca GL. Por que não experimentar os aplicativos gráficos mais exigentes que você deseja usar e verificar se eles funcionam?

O desempenho é um pouco mais chato de julgar. É mais do que uma caixa de seleção, mas ainda pode ser causado por uma possibilidade discreta, como ter um driver genérico em vez de um driver específico de hardware. Pode ser útil procurar benchmarks rápidos em sua lista de funções e anotar os resultados como ponto de referência. Por exemplo, o Gnome Disks é uma ferramenta de benchmark muito conveniente que é instalada por padrão nas versões recentes (tosse) desse desktop.

Quando você notar uma falha de desempenho em um de seus sistemas (por exemplo, o Gnome 3 está instável), você pode anotá-la como um item potencial da lista de verificação. Ou seja, em um novo sistema você poderá notar que o Gnome 3 não fica instável o tempo todo, então ele passou naquele teste específico.

Responder2

Se você conhece os símbolos do Kbuild para os drivers desejados, você pode verificar /proc/config.gzou qualquer outra fonte de configuração do kernel disponível (as distribuições geralmente colocam a configuração /bootjunto com o kernel, ou você pode extrair a configuração do kernel a partir scripts/extract-ikconfigda árvore de origem do kernel - desde que o configuração foi compilada no kernel, é claro).

Responder3

Você teria que procurar os dispositivos listados para a máquina em uma lista de dispositivos suportados pelo RHEL. Sim, pode haver alguns que funcionem, mas ninguém se preocupou em verificar/certificar que funcionam.

Tenha cuidado, às vezes dispositivos com nomes semelhantes (por exemplo, alguma placa Ethernet chamada SC-423+ era umcompletamentebesta diferente do SC-423 superficialmente idêntico; e uma vez fomos mordidos por cartões com exatamente o mesmo número de modelo que eram bem diferentes). E vice-versa, dispositivos completamente diferentes de fornecedores distintos foram construídos nas mesmas peças. Mas também para que o fabricante A fosse sólido como uma rocha, enquanto o B era esquisito como o inferno.

informação relacionada