Como carregar o módulo customizado do kernel do Linux que não é dependente da versão do kernel do Linux usando RPM

0

Eu tenho uma biblioteca de terceiros que fornece um módulo do kernel ( module.ko ) e é necessário que seja carregado automaticamente na inicialização. No entanto, module.ko não está vinculado a uma versão específica do kernel do Linux e pode funcionar em várias versões. Note que eu não tenho a fonte para module.ko ; vem pré-compilado.

Estou criando um pacote RPM para essa biblioteca de terceiros e, portanto, criando um arquivo SPEC.

Minha primeira abordagem foi usar lib/modprobe.d , lib/modules-load.d e lib/modules/$(uname -r) para carregar automaticamente module.ko na inicialização. Isso funciona bem; no entanto, eu não quero ter que reinstalar o meu pacote toda vez que eu atualizar o kernel do Linux. Isso porque, no arquivo SPEC, module.ko é copiado para lib/modules/$(uname -r) , onde $(uname -r) é a versão atual do kernel.

A segunda abordagem é criar um serviço que carregue o kernel na inicialização usando insmod . Isso evita modprobe , já que modprobe requer que o kernel seja copiado para lib/modules/$(uname -r) .

A minha pergunta é se a segunda abordagem é a única maneira de conseguir isso, ou se existe uma melhor?

    
por inhwank 16.06.2016 / 04:39

1 resposta

1

Em vez de um serviço para fazer o insmod , você pode fornecer um /lib/modprobe.d/mymodule.conf com a linha

install mymodule insmod /path/to/mymodule.ko

Eu tentei isso e funcionou bem em um fedora 22 usando como exemplo o módulo slip existente.

$ cd /lib/modules/4.2.8-200.fc22.x86_64/extra/drivers/net/slip/
$ lsmod|grep slip
$ sudo modprobe slip
$ lsmod|grep slip
slip                   20480  0
slhc                   20480  1 slip
$ sudo rmmod slip
$ lsmod|grep slip
$ sudo mv slip.ko.xz ~
$ sudo modprobe slip
modprobe: ERROR: could not insert 'slip': Unknown symbol in module, or unknown parameter
$ sudo sh -c 'echo install slip insmod /home/meuh/slip.ko.xz >/lib/modprobe.d/mymodule.conf'
$ sudo modprobe slip
$ lsmod|grep slip
slip                   20480  0
slhc                   20480  1 slip
    
por 16.06.2016 / 10:16