ソースからDRBDを構築するには、ビルドホストが次の前提条件を満たす必要があります。
make、gcc、glibc開発ライブラリ、および flexスキャナジェネレータがインストールされている必要があります。
![]() | 注記 |
|---|---|
モジュールをコンパイルするために使用する |
git checkout から直接ビルドする場合は、 GNU Autoconf が必要になります。ソースtarファイルからビルドする場合は必要ありません。
ディストリビューションが提供するストックカーネルを実行している場合は、一致するコンパイル済みカーネルヘッダパッケージをインストールする必要があります。これらは通常、kernel-dev、kernel-headers、 linux-headers のような名前です。この場合は、「カーネルソースツリーの準備」を飛ばして 「DRBDビルトツリーの準備」に進みます。
ディストリビューションのストックカーネルを実行していない場合 (ソースから構築したカスタム構成を持つカーネルでシステムが実行されている場合)は、カーネルソースファイルをインストールする必要があります。ディストリビューションのパッケージインストールメカニズムにこの機能が含まれている場合があります。カーネルソースのディストリビューションパッケージは一般に kernel-source のような名前です。
![]() | 注記 |
|---|---|
RPMベースのシステムの場合は、このパッケージは |
kernel.orgアーカイブのVanillaカーネルのtarファイルは、 linux-version-tar.bz2 という名前です。これは、/usr/src/linux-に展開し、シンボリックリンクversion/usr/src/linuxでこのディレクトリを指定するようにします。
このように、(ヘッダではなく)カーネルソースに対してDRBDを構築する場合は、 「カーネルソースツリーの準備」に進みます。
DRBDを構築するためにソースツリーを準備するには、まず、展開したカーネルソースが置かれたディレクトリに移動します。これは通常は/usr/src/linux-、または version/usr/src/linuxというシンボリックリンクです。
cd /usr/src/linux
次の手順は必須ではありませんが、実行することをお勧めします。この手順を実行する前に、必ず、既存の.configファイルを安全な場所にコピーしてください。この手順により、カーネルソースツリーを実質的に元の状態に戻し、以前の構築や構成の実行により生成されたものを削除します。
make mrproperこれで、現在実行中のカーネル構成をカーネルソースツリーに 複製することができます。この際に次のようなオプションを利用できます。
比較的新しい多くのカーネルビルドでは、現在実行中の構成が圧縮されて/procファイルシステム経由でエクスポートされます。
zcat /proc/config.gz > .config
SUSEカーネルのメークファイルには cloneconfigターゲットが含まれているため、こうしたシステムでは次のコマンドを実行できます。
make cloneconfig
インストールによって、カーネル構成が/boot にコピーされる場合があります。この場合は次のコマンドを実行します。
cp /boot/config-`uname -r` .config
最後に、.config ファイルのバックアップコピーを使用します。これは、現在実行中のカーネルの構築に使用したファイルのコピーです。
DRBDのコンパイルでは、まず configure スクリプトに含まれる DRBD ソースツリーを設定する必要があります。
![]() | 注記 |
|---|---|
このセクションの情報は、DRBD 8.3.6 以上を対象としています。8.3.5 以前のバージョンでは git checkout から直接ビルドする場合は、 |
--helpオプションでサポートされているオプションのリストが表示されます。重要なオプションを表にまとめてあります。
表4.1 DRBDの configure スクリプトでサポートされているオプション。
| オプション | 説明 | デフォルト値 | 特記事項 |
|---|---|---|---|
--prefix | インストールディレクトリ prefix | /usr/local | ソフトウェアがインストールされるディレクトリです。パッケージの場合は、通常 /usr に上書きされます。 |
--localstatedir | 動作状態を記録するディレクトリ | /usr/local/var | prefixはデフォルトのままでも、この値を /var に書き換えるユーザは多いでしょう。 |
--sysconfdir | システム設定ディレクトリ | /usr/local/etc | prefixはデフォルトのままでも、この値を /etc に書き換えるユーザは多いでしょう。 |
--with-km | DRBDカーネルモジュールのビルド | no | DRBDカーネルモジュールをビルドする場合は、このオプションを有効にしてください。 |
--with-utils | DRBD ユーザスペースユーティリティのビルド | yes | 最新バージョンのカーネル用にDRBDカーネルモジュールをビルドし、その際、DRBDをアップグレードしたくない場合は、このオプションを無効にしてください。 |
--with-heartbeat | DRBD Heartbeat 統合のビルド | yes | DRBD の Heartbeat v1 用リソースエージェントを使用しない、もしくは、 dopd を使用しない場合には、このオプションを無効にしてください。 |
--with-pacemaker | DRBD Pacemaker 統合のビルド | yes | Pacemaker クラスタリソース管理プログラムを使用しない場合には、このオプションを無効にしてください。 |
--with-rgmanager | DRBD Red Hat Cluster Suite 統合のビルド | no | Red Hat Cluster Suite クラスタリソース管理システムの rgmanager を使用しない場合には、このオプションを無効にしてください。 |
--with-xen | DRBD Xen 統合 | yes (x86 アーキテクチャの場合) | Xen 統合で、block-drbd ヘルパースクリプトを使用しない場合には、このオプションを無効にしてください。 |
--with-bashcompletion | drbdadm に対する bash の自動補完機能をビルドします。 | yes | bash 以外のシェルを使う場合、もしくは、 drbdadm コマンドに対する自動補完を使用しない場合には、このオプションを無効にしてください。 |
--enable-spec | ディストリビューションに対応した PRM spec ファイルの生成 | no | ディストリビューションに対応する RPM spec ファイルを生成したい場合には、このオプションを有効にしてください。「DRBD RPM パッケージのビルド」 もご参照ください。 |
configure スクリプトは、DRBDのビルドをディストリビューション特有のニーズに適合させます。起動されると、ディストリビューションに応じて自動で実行され、デフォルトに従って設定されます。デフォルト値を書き換える場合には、十分に注意してください。
configure スクリプトは、起動されたディレクトリに、ログファイル config.log を生成します。ビルドで発生した問題をメーリングリストに報告する際には、そのログファイルをメールに添付するか、他の人からもダウンロードできるような状態にしておくとよいでしょう。
![]() | 重要項目 |
|---|---|
ユーザスペースユーティリティをビルドする際には、 DRBD を |
DRBD ユーザスペースユーティリティをビルドするには、DRBD をチェックアウトしたディレクトリのトップ、もしくは、traball を展開したディレクトリで、次のコマンドを起動します。
$make$sudo make install
このコマンドにより、管理ユーティリティ (drbdadm 、 drbdsetup または drbdmeta) がビルドされ、適切な場所にインストールされます。 configure の段階で、他の --with オプションを選択した場合、 DRBD と他のアプリケーションとを統合するためのスクリプトもインストールされます。
![]() | 重要項目 |
|---|---|
DRBDの configure で |
展開されたDRBDソースがあるディレクトリに移動したら、 drbdという名前のカーネルモジュールサブディレクトリに移動し、ここでモジュールを構築します。
cd drbd make clean all
これで、現在実行中のカーネルと一致する DRBDカーネルモジュールが構築されます。このカーネルソースには/lib/modules/`uname -r`/build シンボリックリンクでアクセスできます。
/lib/modules/`uname -r`/buildシンボリックリンクが存在しない場合に、実行中のストックカーネル(ディストリビューションに含まれるコンパイル済みカーネル)に対して構築を行う場合は、 (カーネルソースではなく)対応するカーネルヘッダディレクトリを指定するように KDIR変数を設定する必要があります。DRBDビルドプロセスは、通常 /usr/src/linux-に置かれた実際のカーネルヘッダに加えて、カーネルのメークファイルと設定ファイル(version/include.config)も探します。これらは一般に構築済みカーネルヘッダパッケージに含まれています。コンパイル済みカーネルヘッダに対して構築する場合は、例えば次のようなコマンドを実行します。
$cd drbd$make clean$make KDIR=/lib/modules/2.6.31/build
現在実行中のカーネル以外のカーネルに対してDRBDを構築する際に、ターゲットカーネルのコンパイル済みカーネルソースがない場合は、ターゲットカーネルの完全なソースツリーに対してDRBDを構築する必要があります。そのためには、KDIR変数をカーネルソースディレクトリを指定するように設定します。
$cd drbd$make clean$make KDIR=/path/to/kernel/source
CC変数を使用して、コンパイラを明示的に設定することもできます。一部のFedoraバージョンの場合はこの手順が必要です。たとえば、次のようになります。
cd drbd make clean make CC=gcc32