| Version 1 (modified by shaolin, 17 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)"