NetBSD Advent Calendar 2020 8日目の記事です。
今日はAnitaというツールを使用してNetBSDを自動インストールする方法を紹介しようと思います。
背景
NetBSDを使って何かちょっと実験してみたり、アプリケーションのビルドを行いたい場合に、まっさらな環境のNetBSDを用意したいということがあります。FreeBSDやLinuxではJail(8やDockerやPodmanといったコンテナ環境が利用できますが、NetBSD同様のコンテナみたいな環境を利用する場合はchrootを使う形になるかと思います。
NetBSDのインストールは仮想マシン上でも数分程度で完了するため、個人的にはVirtualBoxやqemuに手動でインストールして環境を作るという使い方が主ですが、インストールを自動的できるならそれに越したことはありません。
今日紹介するAnitaというツールはテストツールという位置づけではありますが、機能のひとつとしてNetBSDの自動インストールが行えるため、今日はその方法を紹介してみます。
Anitaのインストール
必要なパッケージのインストール
まずは必要なパッケージをインストールします。Anitaはpip経由でインストールツールとなっており、事前にPythonをインストールしておきます。また、AnitaはGitHubで公開されているため、gitコマンドと(内部的に利用するようなので) cdrtools
もインストールしておきます。
$ sudo -i pkg_add -v ca-certificates python37 py37-pexpect py37-pip curl git-base cdrtools qemu
$
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo python3.7 get-pip.py
$ sudo pip3.7 install -U pip
Anitaのソースコードを取得します。
$ git clone https://github.com/gson1703/anita.git
$ cd anita
NetBSDのCDイメージ取得先の設定
AnitaではNetBSDの自動インストール時にCDイメージをダウンロードするという挙動になっています。その時のURLがデフォルトでは ftp://ftp.netbsd.org/pub/NetBSD/
になっているため、国内のミラーサーバに変更しておきます。今回の場合は ftp://ftp.jaist.ac.jp/pub/NetBSD/
に変更します。
$ git diff
diff --git a/anita.py b/anita.py
index 09da90a..4cb50fc 100755
--- a/anita.py
+++ b/anita.py
@@ -43,7 +43,7 @@ __version__='2.8'
# by number, not by the recommended method of getting them by URL.
# See http://www.netbsd.org/mirrors/#ftp for the complete list.
-netbsd_mirror_url = "ftp://ftp.netbsd.org/pub/NetBSD/"
+netbsd_mirror_url = "ftp://ftp.jaist.ac.jp/pub/NetBSD/"
#netbsd_mirror_url = "ftp://ftp.fi.NetBSD.org/pub/NetBSD/"
# The supported architectures, and their properties.
Anitaのインストール
上記の設定を行ったのち、 setup.py
でAnitaをインストールします。
$ sudo python3.7 setup.py install
$ which anita
/usr/pkg/bin/anita
これで準備が整いました。
Anitaを利用したNetBSDの自動インストール
さっそくAnitaを利用してNetBSDをインストールしてみましょう。以下のようなコマンドを走らせると、NetBSDのISOイメージ取得から始まり、OSインストールと再起動後の login:
プロンプトの表示まで自動的に行われます。
$ mkdir anita_sample
$
$ cd anita_sample/
$ anita \
--workdir work \
--disk-size 2G \
--memory-size 512M \
--sets kern-GENERIC,modules,base,etc,comp \
interact http://ftp.netbsd.org/pub/NetBSD/NetBSD-9.1/amd64/
また、 --sets
オプションでインストールしたい配布物を指定できます。これはインストーラーにおける"Custom installation"の画面で指定する項目と同じですね。
まとめ
Anitaの紹介と簡単な使用方法の例を示してみました。公式Webサイトの説明によると、位置付け的には自動テストツールとのことですがNetBSDの自動インストールにも応用できそうです。加えて仮想マシンとしてqemuやGXemulを利用できるため、NetBSDの特徴のひとつである、様々なアーキテクチャ上での動作確認にも威力を発揮しそうです。