Editar : eu transformei o Cristians em um script que faz tudo automaticamente: link
Eu preciso de alguns módulos do kernel que estão disponíveis no Linux, mas que foram desativados no Fedora 20 e eu me pergunto qual é a maneira mais fácil e mais avançada de disponibilizá-los. (ou seja, net / CAN suport resultando em alguns módulos can_ *)
- existem fedora-repos / rpms que disponibilizam módulos desativados?
- ou preciso compilar esses módulos manualmente?
- neste caso - existe algum mecanismo para automatizar isso no caso de uma atualização do kernel ou eu tenho que compilá-los repetidamente?
Eu já segui este HowTo (e há muitos mais muito parecidos por aí) mas o " build Um módulo apenas "seção parece funcionar apenas para módulos que não foram desativados porque nesse caso até mesmo as fontes do módulo estão faltando.
Aqui está o que eu tentei seguindo o tutorial mencionado:
Primeiro tentei seguir a seção
Fora dos Módulos de Árvore , mas naquela árvore de código-fonte enviada com
kernel-devel
até mesmo as fontes para suporte a CAN estão faltando.
Então eu tento construir os módulos a partir do src.rpm:
$ yumdownloader --source kernel
$ sudo yum-builddep kernel-3.14.8-200.fc20.src.rpm
$ rpm -Uvh kernel-3.14.8-200.fc20.src.rpm
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --target=$(uname -m) kernel.special
$ cd ~/rpmbuild/BUILD/<kerneldir>/<linuxdir>
$ <configure the kernel using menuconfig>
$ make prepare
Então eu construo e recebo alguns avisos:
$ make -C /lib/modules/'uname -r'/build M='pwd'/net/can modules
make: Entering directory '<rpmbuild-BUILD-kernel-linux-dir>'
WARNING: Symbol version dump <rpmbuild-BUILD-kernel-linux-dir>/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/bcm.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/gw.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/raw.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/af_can.o
CC [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/proc.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.o
Building modules, stage 2.
MODPOST 4 modules
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.ko
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.ko
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.ko
CC <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.mod.o
LD [M] <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.ko
make: Leaving directory '<rpmbuild-BUILD-kernel-linux-dir>'
$ sudo make -C /lib/modules/'uname -r'/build M='pwd'/net/can modules_install
make: Entering directory '<rpmbuild-BUILD-kernel-linux-dir>'
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-bcm.ko
Can't read private key
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-gw.ko
Can't read private key
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can-raw.ko
Can't read private key
INSTALL <rpmbuild-BUILD-kernel-linux-dir>/net/can/can.ko
Can't read private key
DEPMOD 3.14.8
make: Leaving directory '<rpmbuild-BUILD-kernel-linux-dir>'
Eu não recebo o primeiro aviso quando acabo de executar make modules
, mas isso me custa cerca de uma hora.
No entanto, após a instalação, os arquivos .ko
estão localizados no diretório errado
( /usr/lib/modules/3.14.8
em vez de /usr/lib/modules/3.14.8-200.fc20.x86_64
) e depois de depmod -a
e modprobe can
eu obtenho
modprobe: ERROR: could not insert 'can': Exec format error
O que estou fazendo de errado?