Google Cloud・AWS・Azure・……とクラウドの巨人を挙げればそれしかクラウドの選択肢がないようにも思えます。しかし以下の理由からNetBSDを開発・利用しているときにはあえて国内のVPSサービスを選ぶこともあります。
ここで特に難しいのは三番目の、公式にNetBSDをサポートしているサービスを探すという点です。その他の要求は国内のVPSサービスプロバイダならおおよそ揃えているでしょう。幸いにもGMOのConoHa VPSが僕の要求にぴったり合います。そこで、ConoHa VPS上でNetBSDを動かすときの勘所をまとめます。
ConoHa VPSについてはWebサイトを見ればおおよそどのようなサービスか把握できるでしょう(VPSならConoHa)。ここで重要なのは、NetBSDがサポートされている点と、仮想マシンを停止すれば料金プランを変更できる点です。VPSとうたっていますが、仮想化基盤はOpenStackとKVMです。マシンのスケールアップ・スケールダウンは自由にできますから、ソースツリーやパッケージのビルド時には高性能なプランにして、使わないときは一番安いプランに戻す……といった運用ができます。料金プランの選択肢が少ないクラウドサービスと考えても差し支えないでしょう。なお、マシンを停止しても課金が止まるわけではありません。
最新バージョンのみ提供されます。2019年4月27日時点では仮想マシン作成時にNetBSD 8.0を選択できます。インストールされているベースシステムはbase.tgzとetc.tgzという最小構成になっています。そのため、マシン作成後に別途comp.tgzをダウンロードしてルートに展開しないとソースツリーをビルドできません。また、パッケージビルドもおこないたいのであればX11一式も持ってくるといいでしょう。
$ ftp ftp://ftp.jaist.ac.jp/pub/NetBSD/NetBSD-8.0/amd64/binary/sets/
ftp> mget comp.tgz x*.tgz
pkgsrcは通常どおり自力で持ってくる必要があります。
$ ftp ftp://ftp.jaist.ac.jp/pub/pkgsrc/stable/pkgsrc.tar.gz
転送量課金はないので安心です。
仮想マシンを6 Core、8GB RAMのプランに変更して、build.sh tools
とbuild.sh release
を実行しました。結果は以下のとおりです。
===> Summary of results:
build.sh command: ./build.sh -O ../obj -T ../tools -X ../xsrc -x -U -j 6 tools
build.sh started: Sun Apr 21 18:59:19 JST 2019
NetBSD version: 8.0
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: NetBSD 8.0 amd64
HOST_SH: /bin/sh
No $TOOLDIR/bin/nbmake, needs building.
Bootstrapping nbmake
MAKECONF file: /etc/mk.conf
TOOLDIR path: /usr/src/../tools
DESTDIR path: /usr/src/../obj/destdir.amd64
RELEASEDIR path: /usr/src/../obj/releasedir
Created /usr/src/../tools/bin/nbmake
Updated makewrapper: /usr/src/../tools/bin/nbmake-amd64
Tools built to /usr/src/../tools
build.sh ended: Sun Apr 21 19:06:55 JST 2019
===> .
===> Summary of results:
build.sh command: ./build.sh -O ../obj -T ../tools -X ../xsrc -x -U -j 6 release
build.sh started: Sun Apr 21 19:08:39 JST 2019
NetBSD version: 8.0
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: NetBSD 8.0 amd64
HOST_SH: /bin/sh
MAKECONF file: /etc/mk.conf
TOOLDIR path: /usr/src/../tools
DESTDIR path: /usr/src/../obj/destdir.amd64
RELEASEDIR path: /usr/src/../obj/releasedir
Updated makewrapper: /usr/src/../tools/bin/nbmake-amd64
Successful make release
build.sh ended: Sun Apr 21 20:43:35 JST 2019
===> .
releaseビルドが1時間半ほどで終わってしまいました。次に、www/firefoxパッケージをゼロからビルドしてみます。time(1)
による計測結果は以下のとおりです。
sudo make package 44857.06s user 4751.50s system 104% cpu 13:11:23.04 total
sudo make package clean clean-depends 1056.22s user 368.98s system 38% cpu 1:01:58.16 total;
sudo make package clean clean-depends 1191.37s user 249.37s system 134% cpu 17:54.55 total
sudo make package clean 14737.58s user 2770.14s system 237% cpu 2:03:00.03 total
MAKE_JOBSには7を指定しました。また、何度かビルドに失敗しているので実行し直す必要がありました。user時間を足し合わせると61842.23秒、およそ17時間かかりました。FirefoxはGCCやLLVM・Rust・fontconfigのような巨大ソフトウェアに多数依存しているため、ゼロからビルドするとそれなりに速いプランでもこんなにかかります。しかし、一日数百円程度です。ビルド後はマシンを停止させ、1 Core、512MBのプランに変更しました。
NetBSD上でshutdown -p now
を実行しても、ConoHaのコントロールパネルからはマシンが動いている扱いになったままになります。コンソールを見ると、キー入力を待ち受けている状態で止まったようです。
コントロールパネルから直接「停止」を押してマシンを停止させてください。