ソースからDRBDを構築するには、ビルドホストが次の前提条件を満たす必要があります。
make、gcc、glibc開発ライブラリ、
および flexスキャナジェネレータがインストールされている必要があります。
![]() | 注意 |
|---|---|
モジュールをコンパイルするために使用する |
ディストリビューションが提供するストックカーネルを実行している場合は、
一致するコンパイル済みカーネルヘッダパッケージをインストールする必要があります。
これらは通常、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を構築する場合にのみ適用されます。 DRBDをカーネルイメージ内に構築する場合は、 カーネルにパッチを適用する必要があります。 「カーネルにDRBDをパッチとして適用する」を参照してください。 ただし、DRBDをロード可能なモジュールとして使用することをお勧めします。 |
展開された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=/usr/src/linux-include/athlon
または
cd drbd
make clean
make KDIR=/usr/src/linux-headers-version
現在実行中のカーネル以外のカーネルに対してDRBDを構築する際に、
ターゲットカーネルのコンパイル済みカーネルソースがない場合は、
ターゲットカーネルの完全なソースツリーに対してDRBDを構築する必要があります。
そのためには、KDIR変数を
カーネルソースディレクトリを指定するように設定します。
cd drbd make clean make KDIR=/path/to/kernel/source
CC変数を使用して、
コンパイラを明示的に設定することもできます。
一部のFedoraバージョンの場合はこの手順が必要です。
たとえば、次のようになります。
cd drbd make clean make CC=gcc32
![]() | 注意 |
|---|---|
このセクションの説明が適用されるのは、 DRBDをロード可能なモジュールとしてコンパイルするのではなく、 DRBDをカーネルイメージ内に構築する場合のみです。 ロード可能なモジュールをサポートしないカーネルを構築するなど、 合理的な理由がある場合にだけこの手順を使用してください。 通常は、DRBDをロード可能なモジュールとして使用することをお勧めします。 |
この手順では、DRBD構築システムによりカーネルパッチを生成して、 これをカーネルソースツリーに適用します。 パッチを作成するには、次のコマンドを実行します。
cd drbd make clean make KDIR=/usr/src/linux kernel-patch
これにより、patch-linux-
というファイルが作成されます。
version-drbd-version
このパッチを確認したら、 次のコマンドを実行してカーネルソースツリーに適用します。
cd /usr/src/linux patch -p1 </usr/src/drbd-version/patch-linux-version-drbd-version
![]() | 注意 |
|---|---|
上記の例では、このセクションの他の例と同様にDRBDソースtarファイルを
|
この後で、カーネルを構成する方法に応じて
make config、make menuconfigまたは
make xconfigを実行して、
構築のためにDRBDを有効にします。
メニューまたは GUI (グラフィカルユーザインタフェース)ベースの
構成ツールを使用する場合は、
[Block devices]セクションにDRBDが表示されます。
これで、通常どおりに(make bzImageなどにより)
カーネルを構築できます。
構築されたカーネルビルドにはDRBDが含まれています。
この方法では、DRBDユーザスペース管理ツールを 個別に構築する必要があります。 展開されたDRBDソースの最上位ディレクトリに移動し、 make tools コマンドを実行します。
cd /usr/src/drbd-x.y.z make tools