場合によっては、
動的カーネルモジュールサポート(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も作成する必要があります。
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プロジェクトの資料が使用されました