Version 3 (modified by shaolin, 15 years ago) (diff) |
---|
マシンにインストールされている個々のカーネル (バージョン/リリース) ごとに、カーネルモジュールパッケージをビルドして用意するのではなく、自動的にモジュールをインストールして配置・管理するための仕組み。
参考資料
現時点での最新バージョンは 2.0.21.1
Vine Linux 的には、現在の kernel-module-* のスタイルから、この dkms-* へと移行する予定。
実際にインストールした際のイメージとして。。。
$ rpm -q dkms dkms-2.0.21.1-1vl5 $ dkms status madwifi, 0.10.5.6-1.3992vl5, 2.6.27-18vl5, i686: installed ndiswrapper, 1.54-2vl5, 2.6.27-18vl5, i686: installed $ sudo apt-get install dkms-iscsitarget .... (中略) ... 1:dkms-iscsitarget ########################################### [100%] Creating symlink /var/lib/dkms/iscsitarget/0.4.17.211-1vl5/source -> /usr/src/iscsitarget-0.4.17.211-1vl5 DKMS: add Completed. Kernel preparation unnecessary for this kernel. Skipping... applying patch compat-2.6.28.patch...patching file kernel/conn.c applying patch compat-2.6.25-2.6.27.patch...patching file kernel/block-io.c Building module: cleaning build area.... make KERNELRELEASE=2.6.27-18vl5 -C /lib/modules/2.6.27-18vl5/build SUBDIRS=/var/lib/dkms/iscsitarget/0.4.17.211-1vl5/build/kernel modules...... cleaning build area.... DKMS: build Completed. iscsi_trgt.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/2.6.27-18vl5/kernel/iscsi/ Adding any weak-modules depmod.... DKMS: install Completed. $ dkms status madwifi, 0.10.5.6-1.3992vl5, 2.6.27-18vl5, i686: installed iscsitarget, 0.4.17.211-1vl5, 2.6.27-18vl5, i686: installed ndiswrapper, 1.54-2vl5, 2.6.27-18vl5, i686: installed
基本的な作業は以下の2点のみ。
dkms.conf は比較的簡単なフォーマットの設定ファイルである。以下サンプル。
# パッケージ名 PACKAGE_NAME="iscsitarget" # バージョン PACKAGE_VERSION="0.4.17.211-1vl5" ## 「dkms install」時に参照されるパラメータ ## # インストールしたいモジュール名 (末尾の .ko は除く) BUILT_MODULE_NAME="iscsi_trgt" # そのモジュールの存在するサブディレクトリ BUILT_MODULE_LOCATION="kernel" # インストール先 DEST_MODULE_LOCATION="/kernel/iscsi" ## モジュールが複数ある場合は ## BUILT_MODULE_NAME[0] BUILT_MODULE_NAME[1] ... と指定していく ## BUILT_MODULE_LOCATION, DEST_MODULE_LOCATION についても同じ ## 「dkms build」時に実行されるコマンド ## MAKE="make -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/kernel modules" CLEAN="make -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/kernel clean" # インストール後に initrd を自動再生成するかどうか REMAKE_INITRD="yes" # AUTOINSTALL="yes" ## カーネルのバージョンごとに特定のパッチをあてる場合は、このように指定する ## パッチのありかは /usr/src/(モジュールのソースディレクトリ)/patches/ PATCH[0]="compat-2.6.28.patch" PATCH_MATCH[0]="2\.6\.(9|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28)" PATCH[1]="compat-2.6.25-2.6.27.patch" PATCH_MATCH[1]="2\.6\.(9|14|15|16|17|18|19|20|21|22|23|24|25|26|27)" PATCH[2]="compat-2.6.24.patch" PATCH_MATCH[2]="2\.6\.(9|14|15|16|17|18|19|20|21|22|23|24)" PATCH[3]="compat-2.6.23.patch" PATCH_MATCH[3]="2\.6\.(9|14|15|16|17|18|19|20|21|22|23)" PATCH[4]="compat-2.6.22.patch" PATCH_MATCH[4]="2\.6\.(9|14|15|16|17|18|19|20|21|22)" PATCH[5]="compat-2.6.19-2.6.21.patch" PATCH_MATCH[5]="2\.6\.(9|14|15|16|17|18|19|20|21)" PATCH[6]="compat-2.6.14-2.6.18.patch" PATCH_MATCH[6]="2\.6\.(9|14|15|16|17|18)"
その他、詳しい説明については、冒頭のドキュメント (LinuxJournal? 記事や Ottawa Linux Symposium Paper) 参照のこと。