2017-12-30 85 views
1

ラズベリーパイに接続された7つのセグメントディスプレイのドライバである調査研究プロジェクトのカーネルモジュールを作成しました。私はモジュールを永久にインストールし、コンパイル時にブート時にロードしたいので、ユーザが直接コンパイルしてインストールできるようにMakefileinstallターゲットを追加しました。ブート時にlinuxカーネルモジュールをロードする

私は、すべてのカーネルモジュールが/lib/modules/<kernel version>/kernel内のどこかに位置していることが分かったので、私は、私はちょうどサブディレクトリにコンパイルされたモジュールをコピーして、modules.ordermodules.depファイル内のモジュールを一覧表示すると思っていました。しかし、このアプローチはうまくいかず、そのトピックにリソースが見つからなかったので、私は少し欲求不満です。

これは私のMakefileは、現在次のようになります。

# All source files are inside the src directory 
obj-m := src/sevenseg.o 

all: 
    make -C /lib/modules/$(shell uname -r)/build EXTRA_CFLAGS=-I$(PWD)/src M=$(PWD) modules 
    mv src/sevenseg.ko . 

install: 
    make -C /lib/modules/$(shell uname -r)/build EXTRA_CFLAGS=-I$(PWD)/src M=$(PWD) modules 
    mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/sevenseg 
    cp src/sevenseg.ko /lib/modules/$(shell uname -r)/kernel/drivers/sevenseg 
    echo "kernel/drivers/sevenseg/sevenseg.ko:" >> /lib/modules/$(shell uname -r)/modules.dep 
    echo "kernel/drivers/sevenseg/sevenseg.ko" >> /lib/modules/$(shell uname -r)/modules.order 
    insmod src/sevenseg.ko 
    make clean 

clean: 
    rm -rf src 

どのように私はそれがブート時にモジュールsevenseg.koをロードする必要があり、カーネルを教えていますか?

答えて

0

tldr;

# echo 'my-module-name' >> /etc/modules 

長い説明:

insmodmodprobe、およびmodprobe.conf上のドキュメントを参照してください。残念ながらhttps://www.cyberciti.biz/faq/linux-how-to-load-a-kernel-module-automatically-at-boot-time/

+0

、助けにはならなかった。ここで

はまともなチュートリアルです。 'modprobe:モジュール7segがディレクトリ/ lib/modules/4.9.59 +'に見つかりませんでした。モジュールが起動時にまだロードされていません。 – Sandtler

+0

'uname -r'は何を返すのですか? 1つのカーネルを実行しているモジュールを構築した後、別のカーネルで起動することは可能ですか?インストールされた '* .ko'ファイルへの標準パスは何ですか? – rubicks