DRBDのパッケージコンパイル方法

前にDRBD9 LINSTOR 構築手順書という資料でDRBDのパッケージのビルド方法を紹介しました。
資料を公開してからかなり時間が経ったため、この資料の通りDRBDのパッケージのコンパイルが出来なくなりました。(途中で動作エラーになります。)

今回はDRBDのパッケージのコンパイル方法を説明します。

ビルド環境の準備

DRBDのパッケージをコンパイルする専用のマシンを用意し、コンパイルに必要な開発パッケージを追加します。本書で使用したビルド環境のOSのバージョンはCent OS 7.9になります。ビルド環境はVirtualbox上の仮想マシンに準備しました。割り当てたメモリーは2GB、ストレージは5GBです。

CentOS 7の最小インストールをしたものに次のパッケージを追加しました。

# yum -y install epel-release
# yum -y groupinstall "Development Tools"
# yum -y install kernel-devel docbook-style-xsl 
# yum -y install rubygem-asciidoctor po4a

DRBD カーネルのビルド

まずDRBD9 カーネルをビルドします。

# mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
# git clone git://github.com/LINBIT/drbd-9.0.git
# cd drbd-9.0
# make tarball
# make kmp-rpm

makeを実行したときに、次のようなエラーが表示されることがあります。

SORRY, kernel makefile not found. You need to tell me a correct KDIR!

この場合は環境変数KDIRに、カーネルソース がある正しいパスを与えます。例えば次のような設定になります。

export KDIR=/usr/src/kernels/3.10.0-1160.36.2.el7.x86_64

KDIRを設定して、make を再度実行します。最新の kernel に update していない場合にもこのエラーが出る可能性があります。

# make kmp-rpm

成功すると ~/rpmbuild/RPMS/x86_64/ にrpmファイルが作成されます。

drbd-kernel-debuginfo-*.el7.x86_64.rpm
kkmod-drbd-9.0.*.el7.x86_64.rpm

drbd-utilsのビルド

次にdrbd-utils をビルドします。LINBITのgithubサイトからソースをダウンロードします。

# git clone https://github.com/LINBIT/drbd-utils.git
# cd drbd-utils/

drbd-utilsディレクトリでビルド環境のセットアップと、パッケージのビルドを実行します。

# ./autogen.sh
# ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
# make tarball VERSION=9.18.0
# cp drbd-utils-9.18.0.tar.gz  ~/rpmbuild/SOURCES
# ./configure --enable-spec
# rpmbuild -bb drbd.spec --without sbinsymlinks --without heartbeat

make tarballでコマンドlbvers.pyが見つからないというエラーが出た場合は、次のように空ファイルを作成すればエラーを回避できます。

# install /dev/null /usr/local/bin/lbvers.py

VERSION番号はconfigure.acのAC_INIT(DRBD, 9.18.0, [drbd-dev@lists.linbit.com])の番号になります。

ビルドに成功すると~/rpmbuild/RPMS/x86_64/ にdrbd-utilsのrpmファイルが作成されます。

drbd-9.18.0-1.el7.x86_64.rpm
drbd-bash-completion-9.18.0-1.el7.x86_64.rpm
drbd-debuginfo-9.18.0-1.el7.x86_64.rpm
drbd-man-ja-9.18.0-1.el7.x86_64.rpm
drbd-pacemaker-9.18.0-1.el7.x86_64.rpm
drbd-udev-9.18.0-1.el7.x86_64.rpm
drbd-utils-9.18.0-1.el7.x86_64.rpm
drbd-xen-9.18.0-1.el7.x86_64.rpm

作成できたrpmファイルをDRBDを動かしたいサーバにコピーして、rpmコマンドでインストールできます。