Como descobrir o que o Linux está usando para controlar meu hardware

1

Eu quero descobrir o que o Linux está usando para controlar meu hardware. Eu acho que módulos e drivers e talvez sejam os mesmos.

Eu tenho esta resposta: Como descubro qual driver um hardware está usando?

E há uma maneira de listar os drivers, mas também quero adicionar um identificador a cada item da lista.

Se eu executar este comando, isso é o que acontece:

sudo lshw | grep -Eo 'driver=[^ ]+' | sort -u | cut -d\= -f2

agpgart-intel

ahci

ath9k

atl1c

ehci-pci

hub

i915

intel

lpc_ich

mei_me

pcieport

snd_hda_intel

tun

usb-storage

uvcvideo
    
por userDepth 02.03.2016 / 15:20

1 resposta

2

Se você estiver preocupado em filtrar apenas a saída de lshw para mostrar o dispositivo e seu driver correspondente, use a combinação lshw e awk abaixo:

sudo lshw | awk '/product:/{  if(length(PROD) > 0){PROD=""};  for(i=1;i<=NF;i++) PROD=PROD" "$i  } /driver=/{  for(j=1;j<=NF;j++){ if($j~/driver=/) DRIVER=$j   };print "---",PROD,DRIVER; PROD=""}' 

A ideia básica aqui é que encontramos linhas que têm "produto:..." nelas e armazenam no PROD. Como alguns dispositivos não listam drivers, poderíamos ter anexado repetidamente linha após linha à variável PROD, portanto, no início, verificamos o comprimento da string PROD. Outra correspondência que está acontecendo é para as linhas que contêm a parte driver= . Depois disso, imprimimos o produto e as informações do driver.

Abaixo está o comando reunido em um script e uma amostra de saída:

$ cat ./dev-drivers.sh                                                                                            
#!/bin/bash

sudo lshw | awk '/product:/{  if(length(PROD) > 0){PROD=""};\
            for(i=1;i<=NF;i++) PROD=PROD" "$i  }\
             /driver=/{  for(j=1;j<=NF;j++){ if($j~/driver=/) DRIVER=$j   };\
             print "---",PROD,DRIVER; PROD=""}' 

$ ./dev-drivers.sh                                                                                                
[sudo] password for xieerqi: 
---  product: ValleyView SSA-CUnit driver=iosf_mbi_pci
---  product: ValleyView Gen7 driver=i915
---  product: ValleyView 6-Port SATA AHCI Controller driver=ahci
---  product: ValleyView USB xHCI Host Controller driver=xhci_hcd
---  product: ValleyView SEC driver=mei_txe
---  product: ValleyView High Definition Audio Controller driver=snd_hda_intel
---  product: ValleyView PCI Express Root Port driver=pcieport
---  product: RTL8101E/RTL8102E PCI Express Fast Ethernet controller driver=r8169
---  product: ValleyView PCI Express Root Port driver=pcieport
---  product: QCA9565 / AR9565 Wireless Network Adapter driver=ath9k
---  product: ValleyView PCI Express Root Port driver=pcieport
---  product: RTS5229 PCI Express Card Reader driver=rtsx_pci
---  product: ValleyView Power Control Unit driver=lpc_ich
    
por Sergiy Kolodyazhnyy 02.03.2016 / 16:14