/home/tnishinaga/TechMEMO

日々行ったこと、面白かったことを書き留めます。

VyOSのISOイメージをビルドする

VyOSのISOイメージをビルドする方法のメモです.

最新バージョンのVyOSを用いる場合等は,自分でISOビルドしないと使えないはずです.

基本的な手順は以下のサイトを参照.

github.com

ISOの作り方

1. ビルドマシンの構築

VyOSのビルドはDebian Squeezeに依存しているので,Squeezeの入ったマシンが必要です.

Squeezeのインストールイメージは以下からダウンロードできます.

あとは仮想マシン等にSqueezeをインストールしてください.

必要パッケージのインストール

最低限必要なパッケージをインストールします.

debian-archive-keyringのインストール

インストールされてない場合を考慮してインストールします.

$ sudo apt-get install debian-archive-keyring

SquashFS toolsのインストール

ちょっと古いsquashfsパッケージが必要なので,backportから持ってきます.

$ sudo sh -c 'echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list'
$ sudo apt-get update
$ sudo apt-get -t squeeze-backports install squashfs-tools

依存パッケージのインストール

$ sudo apt-get install build-essential git autoconf automake dpkg-dev live-helper syslinux genisoimage pdebuild-cross facechroot

以上で環境の構築は完了です.

2. ISOのビルド

githubからリポジトリをクローンしてビルドするだけです.

$ git clone https://github.com/vyos/build-iso.git
$ cd build-iso
$ export PATH=/sbin:/usr/sbin:$PATH
$ autoreconf -i
$ ./configure
$ sudo make iso

しばらくほっとくと ./livecd/binary.iso にVyOSのISOイメージが生成されます.

あとはこのISOを用いてVyOSにインストールしたり,すでにインストールされたVyOSに

# add system image binary.iso

でイメージを追加して使います.

ソースに変更を加えたISOの作り方

VyOSのソースに変更を加えたISOイメージは次の手順で作ることができます.

1. VyOSのsubmoduleソースをとってくる

VyOSのソースに変更を加える場合は,最初にsubmoduleのソースを取ってくる必要があります. 例えば,pppに変更を加えたい場合は,以下のコマンドを実行してpppのソースを取得します.

$ git submodule update --init pkgs/ppp

2. submoduleをビルドする

submoduleのビルドは build-iso/ ディレクトリ下のMakefileを使って行います.

例えばpppのビルドを行う場合は以下のようにします.

$ make ppp

ビルドが成功すると pkgs/ ディレクトリ以下にパッケージファイル(.debファイル)が生成されます.

ビルドに失敗した場合は次を参照してください.

必要パッケージが不足している場合の対処法

submoduleのビルドに必要なパッケージがない場合,ビルドが失敗することがあります. 例えばpppのビルドを行った場合は,次のようなログを出してビルドが失敗しました.

$ sudo make ppp
 dpkg-buildpackage -rfakeroot -D -us -uc -i -b -nc
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor):
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor):
dpkg-buildpackage: source package vyatta-ppp
dpkg-buildpackage: source version 2.4.4rel-8+vyos2+lithium4
dpkg-buildpackage: source changed by Alex Harpin <development@landsofshadow.co.uk>
 dpkg-source -i --before-build ppp
dpkg-buildpackage: host architecture amd64
dpkg-checkbuilddeps: Unmet build dependencies: libpcap0.8-dev libpam0g-dev zlib1g-dev
dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: warning: (Use -d flag to override.)
debuild: fatal error at line 1325:
dpkg-buildpackage -rfakeroot -D -us -uc -i -b -nc failed
make: *** [ppp] Error 29

このエラーメッセージ内に必要なパッケージは示されており,今回は

dpkg-checkbuilddeps: Unmet build dependencies: libpcap0.8-dev libpam0g-dev zlib1g-dev

と出ているので, libpcap0.8-dev libpam0g-dev zlib1g-devが足りてないことがわかります.

$ sudo apt-get install libpcap0.8-dev libpam0g-dev zlib1g-dev

として必要パッケージをインストールしたあと,再度 make ppp を叩けばビルドが成功するはずです.

3. ISOの再ビルドを行う

VyOSは pkgs/ 以下にビルドされたsubmoduleのパッケージ(.debファイル)が存在する場合,そちらを優先してISOに取り込み,ISOのビルドを行います.

使用するビルドコマンドは通常と同じです.

$ sudo make iso

以上です.

おやすみなさい,