0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NetBSD-currentのインストールをスクリプトで楽にしてみる

Posted at

NetBSD Advent Calendar 2023 3日目の記事です。今日はNetBSD-currentのインストールを少しだけ楽にする方法を紹介しようと思います。

NetBSD-currentのインストール

昨日の記事ではNetBSD-currentのインストール手順を紹介していました。基本的にはNetBSD-currentの配布物のダウンロードと展開ののち、 /etc を更新するというシンプルな手順ですが、手動で行おうとすると思いのほか煩雑です。加えて、NetBSD-currentは頻繁(2,3日間隔くらい)にビルドされ、成果物がアップロードされるため、できるだけ楽な手順でNetBSD-currentのインストールを行えるようにしておきたいところです。

スクリプト化して楽をする

楽な手順にするアプローチは単純な話で、同じような手順を流す個所はスクリプト化してしまうというものです。今回のケースだと、NetBSD-currnetの配布物ダウンロードと展開部分をスクリプト化する形になります。

NetBSD-current配布物のダウンロードスクリプト

NetBSD-current配布物のダウンロードスクリプトは以下になります。スクリプト実行時点での最新ビルドを判別して配布物をダウンロードします。

以下のような感じで実行します。この例では12/2にビルドされた成果物をダウンロードしています。

# ./download-current-release.sh
[Sun Dec  3 17:14:58 JST 2023] download directory: 02-Dec-2023_1429
[Sun Dec  3 17:14:58 JST 2023] download kern-GENERIC.tar.xz...
[Sun Dec  3 17:15:09 JST 2023] download base.tar.xz...
[Sun Dec  3 17:16:01 JST 2023] download comp.tar.xz...
[Sun Dec  3 17:17:36 JST 2023] download etc.tar.xz...
[Sun Dec  3 17:17:40 JST 2023] download man.tar.xz...
[Sun Dec  3 17:17:51 JST 2023] download modules.tar.xz...
[Sun Dec  3 17:18:03 JST 2023] download misc.tar.xz...
[Sun Dec  3 17:18:11 JST 2023] download MD5...

NetBSD-current配布物の展開スクリプト

NetBSD-current配布物を展開するスクリプトは以下になります。配布物を含んだディレクトリを指定し、その中にあるファイルを順次展開するという動作になっています。

以下のような感じで実行します。スクリプトで展開されるのはユーザランドの配布物であり、配布物にふくまれるカーネルはあらかじめ手動で展開・カーネルの置き換えと再起動を行っておく必要があります。

# cd 02-Dec-2023_1429
# ls -l
total 152386
-rw-r--r--  1 root  wheel      1223 Dec  3 17:18 MD5
-rw-r--r--  1 root  wheel  49279876 Dec  3 17:16 base.tar.xz
-rw-r--r--  1 root  wheel  75252784 Dec  3 17:17 comp.tar.xz
-rw-r--r--  1 root  wheel    508248 Dec  3 17:17 etc.tar.xz
-rw-r--r--  1 root  wheel   8870808 Dec  3 17:15 kern-GENERIC.tar.xz
-rw-r--r--  1 root  wheel   7849744 Dec  3 17:17 man.tar.xz
-rw-r--r--  1 root  wheel   4150676 Dec  3 17:18 misc.tar.xz
-rw-r--r--  1 root  wheel   9856792 Dec  3 17:18 modules.tar.xz
#
# # 配布物に含まれるカーネルは手動で展開・ファイルコピーしておく。
# tar Jxvf kern-GENERIC.tar.xz
x ./netbsd
# ls -lh netbsd
-rwxr-xr-x  1 root  wheel   28M Dec  2 08:56 netbsd
#
# cp /netbsd /netbsd.old
# cp netbsd /netbsd  # カーネルの置き換え。
#
# # 置き換えたカーネルに切り替えるため、いったん再起動する。
# shutdown -r now

再起動後に上記のスクリプトを実行します。ユーザランドの配布物の展開・インストールと /etc のチェック・自動更新が行われます。

# time ./install-current-release.sh -d 02-Dec-2023_1429
[Sun Dec  3 17:39:31 JST 2023] extract base.tar.xz...
[Sun Dec  3 17:39:54 JST 2023] extract comp.tar.xz...
[Sun Dec  3 17:41:00 JST 2023] extract man.tar.xz...
[Sun Dec  3 17:41:08 JST 2023] extract misc.tar.xz...
[Sun Dec  3 17:41:09 JST 2023] extract modules.tar.xz...
[Sun Dec  3 17:41:11 JST 2023] /usr/sbin/postinstall -s etc.tar.xz check
...
[Sun Dec  3 17:41:24 JST 2023] /usr/sbin/postinstall -s etc.tar.xz fix
...
Please execute 'etcupdate' and reboot.

# # /usr/sbin/etcupdate -s ~/etc.tgz
# # shutdown -r now

etcupdate は対話的に実行する必要があるため、この部分は手動で実行します。 /etc の更新手順については昨日の記事にて解説しています。

# /usr/sbin/etcupdate -s 02-Dec-2023_1429/etc.tar.xz

/etc の更新が完了したら再起動し、NetBSD-currentのインストールは完了です。

# shutdown -r now

まとめ

NetBSD-currentのインストールをスクリプトで少しだけ楽にしてみました。 /etc の更新まではスクリプト化できませんでしたが、NetBSD-currentを頻繁にインストールする際の手間をだいぶ減らすことができました。

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?