Eu nunca tenho certeza se o spelunking no sysfs é a melhor maneira de fazer as coisas (eu deveria usar o udevadm?), mas pelo menos é detectável
$ DEV=p8p1
$ readlink /sys/class/net/$DEV/device/driver
../../../../bus/pci/drivers/tg3
Não funcionará para dispositivos como lo
, que são "virtuais" ( /sys/devices/virtual/
). Eles não têm o link para um device
subjacente (por exemplo, no barramento pci), então você não pode consultar o driver como acima.
Há também uma ferramenta específica do Linux ethtool
. Ele usa um ioctl de soquete homônimo em vez de ler sysfs. O ioctl é específico do linux; APIs unix padrão não dizem a você como o driver é chamado. ethtool
fornece o mesmo resultado (não funciona para lo
e a informação extra é inútil).
$ ethtool -i p8p1
driver: tg3
version: 3.137
firmware-version: sb
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no