ラズベリーパイに接続された7つのセグメントディスプレイのドライバである調査研究プロジェクトのカーネルモジュールを作成しました。私はモジュールを永久にインストールし、コンパイル時にブート時にロードしたいので、ユーザが直接コンパイルしてインストールできるようにMakefile
にinstall
ターゲットを追加しました。ブート時にlinuxカーネルモジュールをロードする
私は、すべてのカーネルモジュールが/lib/modules/<kernel version>/kernel
内のどこかに位置していることが分かったので、私は、私はちょうどサブディレクトリにコンパイルされたモジュールをコピーして、modules.order
とmodules.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
をロードする必要があり、カーネルを教えていますか?
、助けにはならなかった。ここで
はまともなチュートリアルです。 'modprobe:モジュール7segがディレクトリ/ lib/modules/4.9.59 +'に見つかりませんでした。モジュールが起動時にまだロードされていません。 – Sandtler
'uname -r'は何を返すのですか? 1つのカーネルを実行しているモジュールを構築した後、別のカーネルで起動することは可能ですか?インストールされた '* .ko'ファイルへの標準パスは何ですか? – rubicks