DRBDのビルド方法(2024年版)

この記事では、基盤プラットフォームとしてAlmaLinux 9.3を使用し、DRBDのパッケージビルド手順を詳細に説明します。この一連のプロセスには、基本パッケージのインストールからRPM開発環境のセットアップ、そしてLINBIT社のGitHubからのソースコードのダウンロード、ビルドコマンド実行までの手順が含まれます。

1. ビルド環境の準備

まず、ビルド環境用にAlmaLinux 9.3のサーバーを準備します。このサーバーでは、インテル系のCPU、8GBのメモリー、そして約20Gバイトのディスクストレージの構成としました。
初期のパッケージは最小限の構成でインストールしてください。以下の手順で必要なパッケージをインストールします。

1-1. 基本的なパッケージのインストール

まず、基本的なパッケージ群をインストールします。これには、「Development Tools」グループのほか、kernel-abi-stablelists、kernel-rpm-macros、rubygem-asciidoctor、po4a、wgetなどが含まれます。以下のコマンドを実行します:

dnf -y install epel-release
dnf -y groupinstall "Development Tools"
dnf -y install kernel-abi-stablelists kernel-rpm-macros
dnf -y --enablerepo=crb install rubygem-asciidoctor po4a wget
dnf -y install keyutils keyutils-libs-devel
dnf -y install selinux-policy-devel
dnf -y install java-11-openjdk-devel

1-2. 追加パッケージとRPM開発環境のセットアップ

次に、追加パッケージをインストールし、RPM開発環境をセットアップします。
このステップでは、Gradleやその他のパッケージを直接ダウンロードし解凍、ビルドディレクトリを作成します。

以下のコマンドを実行します:

install /dev/null /usr/local/bin/lbvers.py
wget https://services.gradle.org/distributions/gradle-8.6-bin.zip
unzip -d /opt/gradle gradle-8.6-bin.zip
echo "export PATH=\$PATH:/opt/gradle/gradle-8.6/bin" >> ~/.bashrc
export PATH=$PATH:/opt/gradle/gradle-8.6/bin
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
mkdir -p ~/rpmbuild/RPMS/{noarch,x86_64}

1-3. SPATCH

最後に、カーネルのコンパイルに必要なSPATCHコマンドを生成するため、ツールCoccinelleをビルドしインストールします。CoccinelleのソースコードはGitからクローンされ、設定ファイルはautogenコマンドで生成されます。最後に、ツールインストールを終えるためにOCamlをインストールします。

以下のコマンドを実行してください:

git clone https://github.com/coccinelle/coccinelle.git 
cd coccinelle/
source env.sh
./autogen
yum install ocaml
./configure
make install

これらの手順によってDRBDのパッケージビルドに必要な環境準備と初期設定が完了します。次のステップでは具体的なビルド作業に進みます。

2. DRBD カーネルオブジェクトのビルド

まず、DRBD 9のカーネルオブジェクトをビルドします。まず、GITを使ってLINBITからソースコードをクローンします。そして、”make tarball”と”make kmp-rpm”コマンドを実行することでカーネルオブジェクトがコンパイルされます。この結果、ビルドしたパッケージが”~/rpmbuild/RPMS/x86_64/”ディレクトリ内に作成されます。
以下のコマンドを実行します:

git clone http://github.com/LINBIT/drbd.git 
cd drbd
make tarball
make kmp-rpm

3. drbd-utilsのビルド

次に、DRBDのユーティリティプログラムであるdrbd-utilsをビルドします。まずLINBITのGitHubからソースコードをクローンします。その後、”./autogen.sh”を実行して必要な設定ファイルを生成します。次に”make tarball”コマンドを使って、ビルド可能なtarballを作成します。さらに、”$HOME/rpmbuild/SOURCES/”ディレクトリに作成したtarballをコピーします。
コピーが終わったら”rpmbuild”コマンドを使ってRPMパッケージをビルドします。

以下のコマンドを実行します:

git clone https://github.com/LINBIT/drbd-utils.git 
cd drbd-utils
./autogen.sh
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
make tarball VERSION=9.27.0
cp drbd-utils-9.27.0.tar.gz  ~/rpmbuild/SOURCES
./configure --enable-spec
rpmbuild -bb drbd.spec --without sbinsymlinks --without heartbeat

これらのビルドが成功すると、”~/rpmbuild/RPMS/x86_64/” ディレクトリ内にdrbd-utilsのRPMパッケージが作成されます。このパッケージはDRBDの設定や管理に使われます。

以上がDRBDのカーネルオブジェクトとユーティリティプログラムのビルド手順です。これを行うことで、自身の環境に最適なカスタムDRBDパッケージを作成できます。