定義された/lib/module/*kernelディレクトリにカーネルモジュールを構築してインストールします。

定義された/lib/module/*kernelディレクトリにカーネルモジュールを構築してインストールします。

ディストリビューションカーネルに問題があり、モジュールをビルドするためにカーネル(同じバージョン)をビルドしました。私のモジュールは互換性があります。ただし、モジュールをインストールすると、スクリプトはカーネルのモジュールディレクトリに書き込むのではなく、/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をアンインストールして必要なバージョンでインストールし、モジュールをビルドしてインストールできます。他のディストリビューションではパッケージ名が異なる場合がありますが、同じ原則が適用されます。

ラミーローゼン

おすすめ記事