Raspberry Pi 3 Model B+ 上に NetBSD 11.0 の環境を構築する手順です。
初期環境からの基本的な設定変更までを行います。
arm64.img.gz を取得します。
取得したファイルは gz 形式で圧縮されているため 7-Zip 等のツールを使用して解凍します。
『SD カードイメージファイルの書き込み』を参照して SD カードイメージファイル (arm64.img) を SD カードに書き込みます。
書き込みを行った SD カードを Raspberry Pi に挿入します。
本稿ではネットワーク機器へは有線での接続を行うこととします。
LAN ケーブルを Raspberry Pi に接続します。
入出力機器 (HDMI ディスプレイ、USB キーボード) を Raspberry Pi に接続します。
なお NetBSD の SD カードイメージファイルは DHCP クライアントならびに sshd の起動が有効化の状態で作成されていますが、デフォルトでは sshd_config の PermitRootLogin の設定が『prohibit-password』であり且つ一般ユーザが存在しないため、初回ログイン時はコンソール接続が必要となります。
Raspberry Pi の電源を投入 (micro USB ケーブルを接続) します。
ユーザ名『root』でログインします。
※パスワードの入力は不要です。
以下のプロンプトが表示されます。
arm64#
初回起動時には resize_root の実行によるルートパーティションの拡張が自動で行われます。
ルートパーティションのサイズが SD カードの容量となっていることを確認します。
※以下は SD カードの容量が 16G の場合の例となります。
arm64# df -h
Filesystem Size Used Avail %Cap Mounted on
/dev/dk1 14G 1.5G 12G 12% /
/dev/dk0 79M 33M 47M 42% /boot
ptyfs 1.0K 1.0K 0B 100% /dev/pts
procfs 4.0K 4.0K 0B 100% /proc
tmpfs 233M 0B 233M 0% /var/shm
以下例の情報の通り一般ユーザの作成を行います。
なお root ユーザへのスイッチを可能とするため wheel グループにも所属させます。
※デフォルトでは wheel グループに所属しているユーザのみ root ユーザへのスイッチが可能に設定されています。
| ユーザ名 | admin |
|---|---|
| プライマリグループ | users ※未指定時のデフォルト |
| 追加グループ | wheel |
| ホームディレクトリ | /home/admin ※未指定時のデフォルト |
| ログインシェル | /bin/sh ※未指定時のデフォルト |
arm64# useradd -m -G wheel admin
作成した一般ユーザのパスワードを設定します。
arm64# passwd admin
Changing password for admin.
New Password:
Retype New Password:
初期環境のネットワーク情報は DHCP による動的な設定となっているため、静的 (固定) 情報による設定に変更します。
dhcpcd を停止します。
arm64# service dhcpcd stop
Stopping dhcpcd.
/etc/rc.conf の『dhcpcd=YES』の設定をコメントアウト (または削除) します。
#dhcpcd=YES
/etc/rc.conf の dhcpcd_flags を設定する箇所をコメントアウト (または削除) します。
#if checkyesno ec2_init ; then
# dhcpcd_flags="$dhcpcd_flags -w"
#else
# dhcpcd_flags="$dhcpcd_flags -b"
#fi
/etc/ifconfig.mue0 を新規に作成して IP アドレスとネットマスク (16 進表記) を設定します。
以下は IP アドレスを『172.16.0.210/24』とする場合の例となります。
172.16.0.210 netmask 0xffffff00
/etc/rc.conf に『defaultroute=』の設定を追加します。
以下はゲートウェイの IP アドレスを『172.16.0.1』とする場合の例となります。
defaultroute=172.16.0.1
/etc/resolv.conf に DNS サーバの設定を行います。
以下は DNS サーバを『8.8.8.8』と『8.8.4.4』とする場合の例となります。
nameserver 8.8.8.8
nameserver 8.8.4.4
変更したネットワーク情報の反映を行います。
arm64# service network restart
本稿では以降の手順はリモート接続でログインした状態で行うこととします。
/etc/rc.conf の『hostname=』の設定を変更します。
以下はホスト名を『raspberrypi』とする場合の例となります。
#hostname=arm64
hostname=raspberrypi
Raspberry Pi には RTC (ハードウェアクロック) が搭載されていないため、NetBSD の起動後は現在時刻と大幅な差異がある状態となります。
起動時に ntpdate コマンド実行による時刻補正を行います。
※ntpd は自動起動が行われます。
本稿では時刻同期先をインターネットマルチフィード株式会社の PUBLIC NTP サーバに変更を行うこととします。
/etc/ntp.conf の時刻同期先サーバの設定を変更します。
※デフォルトでは ntpdate コマンドならびに ntpd の何れも時刻同期先の情報は /etc/ntp.conf の設定を参照します。
#pool 2.netbsd.pool.ntp.org iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst
/etc/rc.conf に『ntpdate=YES』の設定を追加します。
ntpdate=YES
タイムゾーンを日本 (Asia/Tokyo) に変更します。
/etc/localtime のリンク先を変更します。
arm64# ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
コンソール接続時のキーマップの設定を日本語 (JP106) に変更します。
/etc/wscons.conf に『encoding jp』の設定を追加します。
encoding jp
/etc/rc.conf の不要なシステム設定を無効化します。
resize_root の実行によるルートパーティションの拡張は初回起動時以降は不要となるため無効化します。
以下の設定をコメントアウト (または削除) します。
#resize_gpt=YES
#resize_root=YES
#resize_root_flags="-p"
#resize_root_postcmd="/sbin/reboot -n"
本稿では mdnsd (mDNS とサービス検出) の自動起動は行わないこととします。
『mdnsd=YES』の設定をコメントアウト (または削除) します。
#mdnsd=YES
ここまでの手順による設定の反映を行うため NetBSD を再起動します。
arm64# shutdown -r now
再起動後に設定が反映されていることを確認します。
『raspberrypi』が表示されることを確認します。
raspberrypi# uname -n
raspberrypi
/var/log/messages に時刻同期の実行結果が出力されていることを確認します。
raspberrypi# grep ntpdate /var/log/messages
Oct 13 00:54:05 raspberrypi ntpdate[806]: step time server 210.173.160.87 offset +13.479626 sec
何れかの時刻同期先サーバの先頭に『*』マークが表示されることを確認します。
raspberrypi# ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
+210.173.160.27 133.243.236.17 2 u 34 64 3 4.179 -0.564 2.088
*210.173.160.57 133.243.236.17 2 u 31 64 3 4.400 -0.549 1.810
+210.173.160.87 133.243.236.17 2 u 28 64 3 3.974 -2.134 1.484
『JST』が表示されることを確認します。
raspberrypi# date
Tue Oct 13 00:56:43 JST 2026
/root/.profile の『#export PKG_PATH=』の設定のコメントアウトを解除します。
export PKG_PATH="https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -p)/$(uname -r|cut -f '1 2' -d.|cut -f 1 -d_)/All"
PKG_PATH の設定 (.profile の再読み込み) を行います。
raspberrypi# . /root/.profile
PKG_PATH が設定されていることを確認します。
raspberrypi# echo $PKG_PATH
https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/aarch64/11.0/All
本稿ではバイナリパッケージの管理に pkgin を使用することとします。
pkgin をインストールします。
raspberrypi# pkg_add pkgin
pkgin-26.4.0: copying /usr/pkg/share/examples/pkgin/repositories.conf.example to /usr/pkg/etc/pkgin/repositories.conf
初期データベースの構築を行います。
raspberrypi# pkgin update
processing remote summary (https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/aarch64/11.0/All)...
pkg_summary.bz2 100% 4136KB 53.7KB/s 01:17
本稿では操作例として bash のインストールを行うこととします。
インストールするパッケージを検索します。
raspberrypi# pkgin search ^bash
bash-5.3.15 The GNU Bourne Again Shell
bash-2.05.2.13 The GNU Bourne Again Shell (version 2)
bash-completion-2.17.0nb1 Programmable completion specifications for bash
bash-doc-2.05.2nb1 Documentation for the GNU Bourne Again Shell
bash-preexec-0.6.0 Preexec and precmd hook functions a la zsh
py311-argcomplete-3.6.3 Bash and other shells tab completion for argparse
py311-bracex-2.6 Bash style brace expander
py312-argcomplete-3.6.3 Bash and other shells tab completion for argparse
py312-bracex-2.6 Bash style brace expander
py313-argcomplete-3.6.3 Bash and other shells tab completion for argparse
py313-bracex-2.6 Bash style brace expander
py314-argcomplete-3.6.3 Bash and other shells tab completion for argparse
py314-bracex-2.6 Bash style brace expander
tree-sitter-bash-0.25.1 Bash grammar for tree-sitter
=: package is installed and up-to-date
<: package is installed but newer version is available
>: installed package has a greater version than available package
パッケージをインストールします。
pkgin install コマンド実行後、インストール確認のプロンプトが表示されます。
そのまま Enter を押下します。
raspberrypi# pkgin install bash
ccalculating dependencies...done.
1 package to install:
bash-5.3.15
0 to remove, 0 to refresh, 0 to upgrade, 1 to install
3384K to download, 13M of additional disk space will be used
proceed ? [Y/n]
インストール処理が行われます。
[1/1] bash-5.3.15.tgz 100% 3384KB 3.3MB/s 00:01
[1/1] installing bash-5.3.15...
bash-5.3.15: adding /usr/pkg/bin/bash to /etc/shells
pkg_install warnings: 0, errors: 0
reading local summary...
processing local summary...
root ユーザのパスワードを設定します。
raspberrypi# passwd root
Changing password for root.
New Password:
Retype New Password:
本稿では操作例として UTF-8 への変更を行うこととします。
~/.profile に『export LANG=ja_JP.UTF-8』の設定を追加します。
export LANG=ja_JP.UTF-8
本稿では操作例として bash への変更を行うこととします。
chsh コマンドを実行します。
raspberrypi$ chsh -s /usr/pkg/bin/bash
『SD カード全体のバックアップ』を参照して適宜 NetBSD 環境のシステムバックアップを行います。