ディストリビューションカーネルに問題があり、モジュールをビルドするためにカーネル(同じバージョン)をビルドしました。私のモジュールは互換性があります。ただし、モジュールをインストールすると、スクリプトはカーネルのモジュールディレクトリに書き込むのではなく、/lib/modules/に新しいディレクトリを作成します。次のように見えます。
/lib/modules/old_kernel
/lib/modules/new_kernel
/lib/modules/old_kernel/TARGET1のような固定パスに書き込む方法はありますか?これまでのインストールパスをオーバーライドすると、非常に奇妙な動作のみが発生します。例: /lib/modules/old_kernel/lib/modules/new_kernel/TARGET1
obj-m += rcio_core.o
obj-m += rcio_spi.o
obj-m += rcio_adc.o
obj-m += rcio_pwm.o
obj-m += rcio_rcin.o
obj-m += rcio_status.o
ccflags-y := -std=gnu99
KVERSION ?= $(shell uname -r)
KERNEL_SOURCE ?= /lib/modules/$(KVERSION)/build
all:
$(MAKE) -C $(KERNEL_SOURCE) M=$(PWD) modules
/usr/local/bin/dtc -@ -I dts -O dtb rcio-overlay.dts -o rcio-overlay.dtb
cp rcio-overlay.dtb /boot/overlays
install:
$(MAKE) -C $(KERNEL_SOURCE) M=$(PWD) modules_install
clean:
$(MAKE) -C $(KERNEL_SOURCE) M=$(PWD) clean
$(RM) rcio-overlay.dtb
ベストアンサー1
このモジュールをインストールするために「make module_install」を使用するとします。 /lib/modules 以下のターゲットは、カーネルモジュールソースファイルを構築するカーネルヘッダに基づいて決定されます。 Fedoraでは、これらのヘッダーはkernel-develによって提供されます。したがって、「rpm -q kernel-devel」が/lib/modules(希望するバージョン)の下にカーネルバージョンを表示すると、すべてが正常です。そうでない場合は、このrpmをアンインストールして必要なバージョンでインストールし、モジュールをビルドしてインストールできます。他のディストリビューションではパッケージ名が異なる場合がありますが、同じ原則が適用されます。
ラミーローゼン