sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common tmux
先ずは docker を導入するため、Repository 情報を変更してパッケージをインストールする。
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
インストール後に systemctl start docker
とすれば docker が起動する。通常は呼ばなくても起動している。
先ず最初に現在の VyOS の開発状況を把握する。
cd $HOME
mkdir vyos-build
git clone https://github.com/vyos/vyos-build
cd vyos-build
git branch -a
最後のコマンドにより現在の branch の一覧を取得できる。現在有効な branch は current, crux, ami, master であった。 現在の VyOS LTS Release に該当するのは VyOS 1.2.x Crux の crux である。 現在の VyOS Rolling release に該当するのは VyOS 1.3.x Equuleus で current である。 ami は AWS (Amazon Web Services) 用であるという。今回は crux の branch を選び git clone で指定することにする。
cd ../
rm -r vyos-build
git clone -b crux --single-branch https://github.com/vyos/vyos-build.git
mv vyos-build vyos-build_crux
cd vyos-build_crux
docker container に使う image を用意するには二通りの方法がある。一つは Docker Hub から取ってくることであり、その場合は次の様にする。
sudo docker pull vyos/vyos-build:crux
ダウンロードするだけなのでこれは二、三分で終了する。利用できるイメージは Docker Hub の tag で確認できる。もう一つは source code からビルドする方法であり、その場合は次の様にする。
sudo docker build -t vyos/vyos-build:crux docker
これは小一時間ほどかかる作業である。vyos/vyos-build:crux
は docker container の識別名であるが Docker Hub と共通にしている。現在の container 用 image の容量、変更日などは次のコマンド
sudo docker images
を実行することによって把握することができる。要らなくなった image は
sudo docker rmi "<Image ID>"
を実行することによって削除できる。<Image ID> は container の識別名とは別に存在する独立な値で sudo docker images
で確認したものを指定する。
現在のところ、必要とする VyOS のバージョンに従って container は複数必要である。VyOS 1.2 Crux は Debian 8 Jessie を元にし、VyOS 1.3 Equuleus は Debian 10 Buster を元にするといった様に基盤が異なるためである。
また container 作製後は不要になった container が存在し続けることもある。その場合は sudo docker ps -a
で全ての container を確認の上、 sudo docker rm "<Conainer ID>"
で削除する。<Conainer ID> は sudo docker ps -a
で確認した conainer に固有の値である。
docker container を起動する用意が整ったならばいよいよ次のコマンドを実行して docker container を起動させる。
sudo docker run -it --privileged -v /home/$USER/vyos-build_crux:/vyos -w="/vyos" vyos/vyos-build:crux bash
ここで /home/$USER/vyos-build_crux
は git
で同期した directory を、vyos/vyos-build:crux
は container の識別名である。
無事画面が遷移して docker 環境の shell に切り替われば起動完了である。そこから VyOS の ISO ファイルを作るため、次のコマンドを実行する事で build できる。
./configure --build-type release --version 1.2.6
sudo make iso
--version
には現在の LTS と同じ 1.2.6 を指定しているが任意で良い。
環境にもよるが二十分ほどで終了する。make
の -j
は依存関係があって上手く働かないので指定しなかった。
cross-compilation が必要な場合は --architecture
を指定すれば良い。現状では amd64, i386, armhf
を指定できる。
詳しいことは ./configure -h
を参照すると良いだろう。
恙無く終了すれば ISO ファイルが作業 directory の build/ に "live-image-amd64.hybrid.iso" などとして作成される。
作業が完了したならば exit
で shell を閉じることで元の shell に戻る。
作成した ISO ファイル を scp
などで build 環境から取り出したら、VyOS のインストールを行う。
現状既に導入している環境であれば、殆どの場合は image インストールを選択していると考えられる。
インストール済みの image は show system image
で確認できる。
ISO ファイルをインストールするには次の通りする。
add system image "<ISO File Path>"
add system image "<ISO URL>"
作成した ISO ファイルを転送して直接してするか、URL を指定する方法とが存在する。
image の名前や設定の複製が必要かどうかなど聞かれるので適宜答える。
set system image default-boot
で起動時に使う image を選べ、
delete system image
で不要な image を削除できる。
add system image "<ISO File Path>"
add system image "<ISO URL>"
VyOS を docker によらず作成する方法も公式の案内では紹介されているが、依存関係が複雑でインストールが困難であった。 少なくとも次のパッケージが必要になったが、python3-git など幾つかは obsoleted であった。
sudo apt-get install git autoconf automake dpkg-dev syslinux genisoimage qemu jq libz-dev zip python3 live-build pbuilder devscripts python3-pystache python3-distutils python3-git