AFAIK, modprobe
carrega apenas os mesmos módulos de versão do kernel em execução, ou seja, de:
/lib/modules/<kerne-version>/
modinfo
mostra o caminho completo do módulo SUPPOSED a ser executado pelo kernel atual (não aquele atualmente em execução na verdade). Então você não pode retransmitir isso. Estou usando o Ubuntu 14.04, Exemplo:
$ modinfo e1000e
filename: /lib/modules/3.13.0-38-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
version: 2.3.2-k
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation, <[email protected]>
srcversion: FAFC167239309C03F11F440
alias: pci:v00008086d000015A3sv*sd*bc*sc*i*
alias: pci:v00008086d000015A2sv*sd*bc*sc*i*
alias: pci:v00008086d000015A1sv*sd*bc*sc*i*
[...]
alias: pci:v00008086d000010A4sv*sd*bc*sc*i*
alias: pci:v00008086d0000105Fsv*sd*bc*sc*i*
alias: pci:v00008086d0000105Esv*sd*bc*sc*i*
depends: ptp
intree: Y
vermagic: 3.13.0-38-generic SMP mod_unload modversions
signer: Magrathea: Glacier signing key
sig_key: 2A:DE:ED:EA:6C:BA:0B:95:A6:22:22:40:71:1F:49:C8:72:07:BB:F6
sig_hashalgo: sha512
parm: debug:Debug level (0=none,...,16=all) (int)
parm: copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm: TxIntDelay:Transmit Interrupt Delay (array of int)
parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm: RxIntDelay:Receive Interrupt Delay (array of int)
parm: RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm: InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm: IntMode:Interrupt Mode (array of int)
parm: SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm: KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm: WriteProtectNVM:Write-protect NVM [WARNING: disabling this can lead to corrupted NVM] (array of int)
parm: CrcStripping:Enable CRC Stripping, disable if your BMC needs the CRC (array of int)
Se não aparecer, tente: modinfo -n e1000e
ou modinfo --filename e1000e
/lib/modules/3.13.0-38-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
É possível usar insmod
para carregar um módulo específico por caminho completo. Mas isso pode ser prejudicial e pode danificar o hardware. No entanto, na maioria dos casos, o kernel aplicará verificações rigorosas, gerando alguns erros como (observe 3.13.0-37-generic
carregado com êxito):
$ sudo insmod /lib/modules/3.11.0-24-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
insmod: ERROR: could not insert module /lib/modules/3.11.0-24-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko: Invalid module format
$ sudo insmod /lib/modules/3.13.0-30-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
insmod: ERROR: could not insert module /lib/modules/3.13.0-30-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko: Invalid module format
$ sudo insmod /lib/modules/3.13.0-36-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
insmod: ERROR: could not insert module /lib/modules/3.13.0-36-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko: Invalid parameters
$ sudo insmod /lib/modules/3.13.0-37-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
$ sudo rmmod /lib/modules/3.13.0-37-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
$ sudo insmod /lib/modules/3.13.0-38-lowlatency/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
insmod: ERROR: could not insert module /lib/modules/3.13.0-38-lowlatency/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko: Invalid module format
Acho que sysfs
mostra o módulo carregado real:
$ more /sys/module/e1000e/version
2.3.2-k
$ more /sys/module/e1000e/srcversion
FAFC167239309C03F11F440
Eu não pude ver como 3.13.0-37-generic
& amp; 3.13.0-38-generic
no meu caso tem as mesmas versões.
Nota:
Para completar, os módulos do kernel carregados dinamicamente são manipulados por dkms
, carregados de:
/var/lib/dkms/<driver-name>/<driver-last-version>/<kernel-version>/<kernel-arch>/module/