Falha na construção do DKMS sem erro significativo

0

Estou tentando ativar um módulo do kernel que recebi de um fornecedor de dispositivos para trabalhar com o DKMS. Eu posso construir com sucesso o módulo e instalá-lo e ativá-lo manualmente. Mas ao usar o DKMS, recebo um erro que não me ajuda de forma alguma:

$ sudo dkms build -m biokernbase -v 3.1.2.1

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=3.13.0-123-generic all KVERSION=3.13.0-123-generic DKMS=y
....
.ko failed for: 3.13.0-123-generic (x86_64)
Consult the make.log in the build directory
/var/lib/dkms/biokernbase/3.1.2.1/build/ for more information.

make.log

DKMS make.log for biokernbase-3.1.2.1 for kernel 3.13.0-123-generic (x86_64)
Wed Dec 13 17:22:51 CET 2017
make -C /lib/modules/3.13.0-123-generic/build M=/var/lib/dkms/biokernbase/3.1.2.1/build modules
make[1]: Entering directory '/usr/src/linux-headers-3.13.0-123-generic'
  CC [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/main.o
  CC [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/event.o
  CC [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/usbreader.o
  CC [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/memory.o
  CC [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/misc.o
  CC [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/isa.o
  LD [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/biokernbase.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /var/lib/dkms/biokernbase/3.1.2.1/build/biokernbase.mod.o
  LD [M]  /var/lib/dkms/biokernbase/3.1.2.1/build/biokernbase.ko
make[1]: Leaving directory '/usr/src/linux-headers-3.13.0-123-generic'

dkms.conf

PACKAGE_NAME="biokernbase"
PACKAGE_VERSION="3.1.2.1"
CLEAN="make clean DKMS=y"
MAKE[0]="make all KVERSION=$kernelver DKMS=y"
BUILT_MODULE_NAME[0]="biokernbase"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"

Makefile

DRV_NAME := biokernbase
DRV_PATH := daqnavi
KVERSION := $(shell uname -r)
KDIR     := /lib/modules/$(KVERSION)/build
BASE_DIR := /usr/lib/daqnavi

obj-m := $(DRV_NAME).o
$(DRV_NAME)-objs := main.o event.o usbreader.o memory.o misc.o isa.o

EXTRA_CFLAGS += -I$(BASE_DIR)/include -I$(BASE_DIR)/include/hw -I$(BASE_DIR)/include/linux
SYMBOL_PATH = $(BASE_DIR)/modules

all:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
    $(MAKE) -C $(KDIR) M=$(PWD) clean
    rm -f *.o *~ .depend .*.cmd *.ko *.mod.c .tmp_versions modules.order Module.symvers

Atualização 1: compatibilidade do kernel

Atualmente estou no Ubuntu 14.04.5 LTS com o kernel 3.13.0-123-genérico.

A documentação do fornecedor indica compatibilidade com o Ubuntu 12.04 / 14.04 / 15.10, versão do kernel 3.2 / 3.13 / 4.2.

Quando copio manualmente o biokernbase.ko construído por dkms para /lib/modules/3.13.0-123-generic/kernel/drivers/misc/ , o módulo do kernel parece estar carregado com sucesso:

$ sudo modprobe biokernbase; echo $?
0

Qualquer ideia ou sugestão é muito apreciada.

    
por Hurzelchen 13.12.2017 / 17:29

2 respostas

0

Remova o biokernbase.ko copiado manualmente de /lib/modules/3.13.0-123-generic/kernel/drivers/misc/ .

Edite dkms.conf como este ... (mantenha o original como um arquivo .bak) ...

PACKAGE_NAME="biokernbase"
PACKAGE_VERSION="3.1.2.1"
CLEAN="make clean"
MAKE[0]="'make' all KVER=${kernelver}"
BUILT_MODULE_NAME[0]="biokernbase"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="yes"

Execute novamente sudo dkms build e veja se isso resolve o problema.

    
por heynnema 15.12.2017 / 17:30
0

Eu estava trabalhando com esse mesmo módulo (da Advantech). Descobri que o dkms.conf deles incluído tem alguns retornos de carro perdido que causaram uma falha na verificação do script dkms. Tente rodar o dos2unix no dkms.conf ou certifique-se de que não haja caracteres indesejados em branco.

    
por joncppl 16.07.2018 / 22:34