2012-01-19 4 views
3

私が取り組んでいるカーネルモジュールでDKMSサポートを追加しようとしています。カーネルモジュールへのDKMSサポートの追加の問題

私は、静的libにしてカーネルモジュールのソースを置いている

は、次のディレクトリにに対してリンクする次のファイルで

/usr/src/dpx/1.0 

dkms.conf 
Makefile 
dpxmtt.c 
lib.a 

dkms.confファイルはこのようなものです:

MAKE="make" 
CLEAN="make clean" 
BUILT_MODULE_NAME=dpx 
BUILT_MODULE_LOCATION=src/ 
DEST_MODULE_LOCATION=/kernel/drivers/input/touchscreen 
PACKAGE_NAME=dpxm 
PACKAGE_VERSION=1.0 
REMAKE_INITRD=yes 

そしてメイクファイルは、このようなものです:

EXTRA_CFLAGS+=-DLINUX_DRIVER -mhard-float 

obj-m += dpx.o 
dpx-objs:= dpxmtt.o ../source/lib.a 

all: 
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean: 
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 

../source/lib.aは、makefileがdkms構築システムによって呼び出されたときに、ディレクトリ(ビルドディレクトリ)に見つかりませんでしたが、ソースディレクトリにコピーされていた、私はそれを比較的参照しています。

私は

sudo dkms build -m dpx -v 1.0 

を呼び出すと、結果はほぼ完璧です:

[email protected]:~$ sudo dkms build -m dpx -v 1.0 

Kernel preparation unnecessary for this kernel. Skipping... 

Building module: 
cleaning build area.... 
make KERNELRELEASE=3.0.0-14-generic.... 
ERROR (dkms apport): binary package for dpx: 1.0 not found 
Error! Build of dpx.ko failed for: 3.0.0-14-generic (i686) 
Consult the make.log in the build directory 
/var/lib/dkms/dpx/1.0/build/ for more information. 
[email protected]:~$ 

、ログファイルの内容は次のとおりです。

DKMS make.log for dpx-1.0 for kernel 3.0.0-14-generic (i686) 
Thu Jan 19 11:07:54 WET 2012 
make -C /lib/modules/3.0.0-14-generic/build M=/var/lib/dkms/dpx/1.0/build modules 
make[1]: Entering directory `/usr/src/linux-headers-3.0.0-14-generic' 
    CC [M] /var/lib/dkms/dpx/1.0/build/dpxmtt.o 
    LD [M] /var/lib/dkms/dpx/1.0/build/dpx.o 
    Building modules, stage 2. 
    MODPOST 1 modules 
    CC  /var/lib/dkms/dpx/1.0/build/dpx.mod.o 
    LD [M] /var/lib/dkms/dpx/1.0/build/dpx.ko 

make[1]: Leaving directory `/usr/src/linux-headers-3.0.0-14-generic' 

モジュールが正しく構築されましたが、それエラー:

で終了します3210
ERROR (dkms apport): binary package for dpx: 1.0 not found 
Error! Build of dpx.ko failed for: 3.0.0-14-generic (i686) 

そして、私はそれが何を意味するのか分かりません。誰か知っていますか?

答えて

0

私は同様の問題がありました。あなたのBUILT_MODULE_LOCATIONsrcディレクトリに間違って設定されていると思います。これはあなたの例で現在のディレクトリに設定するか、この変数を省略するだけで、dkmsはデフォルトのカレントディレクトリになります。

1

使用:

$(shell uname -r)

はMakefileの中で、それはまた、間違っているかもしれません! "shell uname -r"は現在実行中のカーネルを指しますが、dkmsを使用する主な理由は、新しくインストールされたカーネルごとにカーネルツリーの外側にあるカーネルモジュールを再コンパイルする自動化された方法を提供するからです。つまり、Makefileはdkmsがモジュールをビルドしている別のカーネルを指しているかもしれません。

使用:代わりに

${kernelver}

関連する問題