Raspberry Pi 3 Model B+ 上に NetBSD 9.2 の環境を構築する手順です。
初期環境からの基本的な設定変更までを行います。
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/ld0a 14G 990M 13G 7% /
/dev/ld0e 80M 20M 60M 24% /boot
kernfs 1.0K 1.0K 0B 100% /kern
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 local password for admin.
New Password:
Retype New Password:
初期環境のネットワーク情報は DHCP による動的な設定となっているため、静的 (固定) 情報による設定に変更します。
dhcpcd を停止します。
arm64# service dhcpcd stop
/etc/rc.conf の『dhcpcd=YES』の設定をコメントアウト (または削除) します。
#dhcpcd=YES
/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_disklabel=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
/root/.profile の『#export PKG_PATH=』の設定のコメントアウトを解除します。
export PKG_PATH="http://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
本稿ではバイナリパッケージの管理に pkgin を使用することとします。
pkgin をインストールします。
raspberrypi# pkg_add pkgin
初期データベースの構築を行います。
raspberrypi# pkgin update
本稿では操作例として bash のインストールを行うこととします。
インストールするパッケージを検索します。
raspberrypi# pkgin search bash
bash-5.1.4 The GNU Bourne Again Shell
bash-2.05.2.13 The GNU Bourne Again Shell (version 2)
bash-completion-2.11 Programmable completion specifications for bash
bash-doc-2.05.2nb1 Documentation for the GNU Bourne Again Shell
bats-0.4.0 Testing framework for Bash
dash-0.5.10.2 Debian Almquist shell, POSIX-compliant shell faster than bash
fff-2.2 Simple file manager written in bash
git-sh-1.3 Customized bash environment suitable for git work
memo-0.6nb1 A simple memo tool written in bash
py27-argcomplete-1.12.2 Bash tab completion for argparse
py36-argcomplete-1.12.2 Bash tab completion for argparse
py37-argcomplete-1.12.2 Bash tab completion for argparse
py38-argcomplete-1.12.2 Bash tab completion for argparse
py39-argcomplete-1.12.2 Bash tab completion for argparse
xonsh-0.8.8nb2 Python-ish, BASHwards-looking shell language and command prompt
=: 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
calculating dependencies...done.
1 package to install:
bash-5.1.4
0 to refresh, 0 to upgrade, 1 to install
2867K to download, 9035K to install
proceed ? [Y/n]
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 環境のシステムバックアップを行います。