DKMSは何をしますか?どうやって使うの?


23

最近、DKMSに関するいくつかの言及を見ましたが、それが実際に私のシステムで何をしているのか明確ではありません。

DKMSは実際に何をし、どのように使用しますか?

回答:


25

DKMS(ダイナミックカーネルモジュールサポート)パッケージ(http://linux.dell.com/dkms/)は、カーネルモジュールの補足バージョンのインストールをサポートします。パッケージがコンパイルされ、カーネルツリーにインストールされます。アンインストールすると、以前のモジュールが復元されます。デフォルトでは、インストールは現在のカーネルツリーに行われますが、コマンドラインオプションで任意のカーネルツリーを選択できます。さらに、新しいUbuntuカーネルイメージパッケージのインストール時にDKMSが自動的に呼び出されるため、DKMSに追加されたモジュールは更新間で自動的に実行されます。

概要

DKMSでモジュールを使用するには、モジュールインストールファイル(ソースコードまたはバイナリ)を/ usr / src /-に配置し、DKMSにモジュールのビルド/設定方法とその内容を指示する設定ファイルdkms.confを追加します。なまえは。より高度なシナリオでは、dkmsシステムによって条件付きビルドの指示とパッチを適用できますが、場合によってはこれは必要ないかもしれません。

ウォークスルー

あなたのファンシーな「Awesome Adaptor」用のモジュールをインストールしたいとしましょう。あなたにはソースが与えられますtarball awesome-20091211-v1.1.tgz

DKMSを使用して、適切なエントリを持つdkms.confファイルを作成することにより、DKMSにその方法を指示します。たとえば、tarballを展開した後:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

内部にdkms.conf、次の行を追加します。

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

すべてのディレクトリは、dkms.confファイルの場所に関連しています。これはDKMSに伝えます

  1. モジュールをビルドするコマンド(ディレクトリsrc /でmakeを実行)。
  2. ソースツリーをクリーンアップするコマンド(ディレクトリsrc /でmake cleanを実行)。
  3. .oまたは.ko拡張子のないモジュールの名前。複数のモジュールが構築されている場合、これは実際にはモジュールの配列である場合があります。mandkmsを参照してください。
  4. DKMSがビルドされたモジュールを見つけることができる場所。
  5. DKMSの名前とバージョンは、モジュールに関連付けられている必要があります。
  6. モジュールのインストール後にinitrdイメージを再作成するには。

また、ビルドまたはインストールの前後にスクリプトを呼び出すオプションを追加したり、追加の(条件付き)makeコマンド、パッチコマンドなどを提供したりできます。必要ならば。これらのオプションなどは、man dkmsのdkms.confセクションで説明されています。

次に、モジュールインストールファイルをカーネルソースツリー/ usr / src /-にコピーして、DKMSにモジュールをインストールし、新しいモジュールについてDKMSに通知します。

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

それでおしまい!DKMSは、将来のカーネルインストール用にビルドするために、モジュールのリストにモジュールを追加しました。それが機能することを確認し、モジュールを現在のカーネルにインストールするために、モジュールをビルドしてインストールするようにdkmsに指示できます。

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

運が良ければ、モジュールがインストールされ、将来のカーネルアップデートに再インストールされます。

DKMSのmanページには、 DKMSで使用するためにあなたの好きなカーネルモジュールの設定に関する有益な情報を持っています。包括的なドキュメントではありませんが、多くの質問に答えます。使用するモジュールがセットアップしたいモジュールではない場合でも、次の例に注意してください。

  • RocketRaid - DKMSでHighpoint RocketRaidドライバーRR26xxおよびRR62x をセットアップする方法に関する2つの例。

From:help.ubuntu.com

詳細についてはこちらをご覧ください。


2
FWIWは、DKMSのプロジェクトはGithubの上の新しい家があるgithub.com/dell/dkmsを
DDay
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.