web-dev-qa-db-ja.com

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

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

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

22
user238204

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コマンド、パッチコマンドなどを提供することもできます。dkms.confは実際にはシェルスクリプトをソースとしているため、かなりのトリックを行うことができます。必要であれば。これらのオプションなどは、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 page には、DKMSで使用するためのお気に入りのカーネルモジュールのセットアップに関する役立つ情報があります。包括的なドキュメントではありませんが、多くの質問に答えます。使用するモジュールがセットアップしたいモジュールではない場合でも、次の例に注意してください。

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

From: help.ubuntu.com

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

25
Rinzwind