Como listar todo o hardware suportado pelo kernel

4

Eu quero ver todo o hardware suportado pelo kernel em uso. Por exemplo, se eu tiver a versão 3.8.x.x do kernel do Linux, como saberei qual hardware é suportado lá. Ferramentas como lspci , lshw , lscpu e dmidecode apenas verificam o hardware usado no momento e tentam encontrá-lo usando os módulos carregados com lsmod também não são úteis.

O que eu quero é algo que verifique todo o hardware realmente suportado pelo kernel em uso, sem levar em consideração se estou usando esse hardware ou não.

Por enquanto, pensei em coisas como:

  • Lendo o /lib/modules/3.8.0-5-generic/kernel/drivers e analisando cada arquivo.
  • Fazendo o download do git source do kernel e lendo para obter informações sobre isso.
  • Qualquer outra maneira louca e muito longa de fazer isso.

Existe alguma outra maneira menor de conseguir isso?

    
por Luis Alvarado 10.02.2013 / 01:41

3 respostas

2

What I want is something that checks all hardware actually supported by the kernel in use without taking into consideration if I am using that hardware or not.

Se você tiver o arquivo .config com o qual o kernel foi construído, você pode fazer o download da fonte e executar make menuconfig , o que lhe dará uma idéia de a) qual hardware é possível configurar um kernel. NOTA ), e B) para qual hardware seu kernel está realmente configurado.

Então,parafazerisso:

  1. Façaodownloaddafonte.Suadistropodeterumpacoteouvocêpodeobtê-losem kernel.org ; encontre sua versão com uname -r .
  2. Encontre o .config usado para o seu kernel. Se você obteve a fonte através da sua distro, ela será incluída; você também pode encontrá-lo em algum lugar em / boot. Melhor ainda: frequentemente, os kernels de distribuição são construídos com o recurso /proc/config.gz . Se existir, copie, solte, renomeie o arquivo .config e copie-o para o nível superior da árvore de código-fonte do kernel.
  3. Execute make menuconfig dentro do nível superior da árvore de origem. Você precisará do pacote ncurses development instalado ( ncurses-dev or ncurses-devel ) e você precisa ser root.

Você não pode fazer nada de mal ao usar o menuconfig além de alterar o conteúdo do arquivo .config , o que não importa (apenas não se confunda com ele depois).

OBSERVAÇÃO : Você não pode realmente ver todas as possíveis configurações de hardware ao mesmo tempo, já que diferentes opções podem aparecer em um lugar baseado no que foi selecionado. outro lugar. A configuração do kernel é um pouco de labirinto. No entanto, você definitivamente verá tudo o que está realmente selecionado ( M significa que é um módulo, * significa que ele está embutido).

    
por 10.02.2013 / 14:00
2

Eu não acredito que o que você está procurando é possível; assumindo um kernel modular, por exemplo, muitos módulos não conseguirão se inicializar se não conseguirem encontrar o hardware que suportam. Então eles vão silenciosamente abortar.

Analisar as fontes do kernel, automaticamente, para procurar por nomes / versões de hardware / números de modelo seria uma grande tarefa. Embora existam subsistemas comuns (por exemplo, serial, scsi, usb), o código não é necessariamente uniforme. Isso ficará claro para você rapidamente.

    
por 10.02.2013 / 02:05
2

Você pode chamar modinfo para todos os módulos disponíveis. Isso imprime os aliases de um módulo. Um alias do módulo e1000e é este (entre muitos mais):

pci:v00008086d00001559sv*sd*bc*sc*i*

Isso significa que ele deve ser carregado para dispositivos PCI com ID de fornecedor 8086 e ID de dispositivo 1559 . O padrão para dispositivos USB é semelhante.

    
por 10.02.2013 / 02:30