DKMSを使用したカーネルモジュールの自動アセンブリ

場合によっては、 動的カーネルモジュールサポート(DKMS)を使用する方が便利ため、カーネルモジュールの手動アセンブリは 実用的ではあり ません。

DKMSテクノロジーは、とりわけ、カーネルの更新中にシステムモジュールの自動アセンブリを可能にします。



この記事では、例としてCANバスモジュールを使用したDKMSを使用した自動制御について説明します。



DKMSは、モジュールまたはカーネルモジュールのセットのパッケージが/ usr / src / {package_name}-{package-version}ディレクトリにあると想定しています

モジュール/モジュールのソースコードに加えて、パッケージディレクトリにはdkms.conf構成と Makefileが含まれており、それに応じてアセンブリが実行されます。



CANバスモジュールのDKMSパッケージ用のディレクトリ/usr/src/can-dkms-4.1.6-200を作成しましょう

CANバスモジュールは、カーネルソースの2つの異なるサブディレクトリにあります。



これらのサブディレクトリを(構造を保持して)カーネルソースからパッケージcan-dkms-4.1.6-200のディレクトリにコピーします

パッケージディレクトリにdkms.conf構成ファイルを作成します。

PACKAGE_NAME="can-dkms" PACKAGE_VERSION="4.1.6-200" MAKE[0]="make M=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build modules" BUILT_MODULE_NAME[0]="can" BUILT_MODULE_LOCATION[0]="net/can" DEST_MODULE_LOCATION[0]="/updates/net/can" BUILT_MODULE_NAME[1]="can-raw" BUILT_MODULE_LOCATION[1]="net/can" DEST_MODULE_LOCATION[1]="/updates/net/can" BUILT_MODULE_NAME[2]="can-bcm" BUILT_MODULE_LOCATION[2]="net/can" DEST_MODULE_LOCATION[2]="/updates/net/can" BUILT_MODULE_NAME[3]="can-gw" BUILT_MODULE_LOCATION[3]="net/can" DEST_MODULE_LOCATION[3]="/updates/net/can" BUILT_MODULE_NAME[4]="vcan" BUILT_MODULE_LOCATION[4]="drivers/net/can" DEST_MODULE_LOCATION[4]="/updates/drivers/net/can" BUILT_MODULE_NAME[5]="can-dev" BUILT_MODULE_LOCATION[5]="drivers/net/can" DEST_MODULE_LOCATION[5]="/updates/drivers/net/can" BUILT_MODULE_NAME[6]="kvaser_usb" BUILT_MODULE_LOCATION[6]="drivers/net/can/usb" DEST_MODULE_LOCATION[6]="/updates/drivers/net/can/usb" AUTOINSTALL="yes"
      
      



configは、パッケージの名前とバージョン、ビルドコマンド、アセンブルされるモジュールのリストを指定し、自動アセンブリも有効になります。



パッケージディレクトリでMakefileも作成する必要があります。

 # net/can export CONFIG_CAN := m export CONFIG_CAN_RAW := m export CONFIG_CAN_BCM := m export CONFIG_CAN_GW := m export CONFIG_CAN_VCAN := m # drives/net/can export CONFIG_CAN_DEV := m export CONFIG_CAN_KVASER_USB := m SRC_DIRS := net/can drivers/net/can modules: $(SRC_DIRS) $(SRC_DIRS): $(MAKE) -C /lib/modules/`uname -r`/build M="$(M)/$@" subdir-ccflags-y=-DCONFIG_CAN_CALC_BITTIMING .PHONY: $(SRC_DIRS) modules
      
      



Makefileは、CANバスモジュールのサブディレクトリの構造、およびアセンブルされるモジュールのリストを定義します。



したがって、CANバスモジュール用のDKMSパッケージが作成されます。

次に、パッケージをDKMSツリーに登録する必要があります。

 sudo dkms add -m can-dkms -v 4.1.6-200
      
      



その後、リンク/var/lib/dkms/can-dkms/4.1.6-200/sourceが作成されます



パッケージのアセンブリとインストールは、次のコマンドによって実行されます。

 sudo dkms build -m can-dkms -v 4.1.6-200 sudo dkms install -m can-dkms -v 4.1.6-200
      
      





必要に応じて、次のコマンドを使用してパッケージをツリーから削除できます。

 sudo dkms remove -m can-dkms/4.1.6-200 --all
      
      







記事を作成するときに、 aur.archlinux.org / packages / linux-can-dkmsプロジェクトの資料が使用されました



All Articles