みなさん、こんにちは。
先日、「OSC福岡2025」のNetBSDセッションに参加し、技術者としての魂を揺さぶられた話を書きました。
「私も20年ぶりにNetBSDのインストールに挑戦したい」と最後に宣言しましたが、鉄は熱いうちに打て。
あのセッションの余韻が冷めやらぬうちに、実際に手を動かしてみました。今回はその実践レポートです。
ターゲット選定 – Wii Uからの敗走、そしてRaspberry Pi 3A+へ
セッションの中で、講師の蛯原さんが「最近興味を持っているハードウェア」として任天堂の「Wii」を挙げられていました。
「WiiでNetBSDが動くなら……」
私の手元には、埃を被っていたWii Uがありました。「これだ!」と思い、Wii互換モードでの起動を画策したのですが、調べてみると残念ながらWii UのWiiモードでのNetBSD起動はサポートされていないことが判明。出鼻をくじかれました。
しかし、ここで諦めては「動かないハードウェアはない」というNetBSD精神に反します。次なるターゲットとして目をつけたのが、手元にあった Raspberry Pi 3A+ です。
Raspberry Piといえば今なら「Raspberry Pi 5」が主流で、前モデルを検討するとしても「Raspberry Pi 3B+」や「Raspberry Pi 4」を選択するのが一般的です。USBポートが一つしかなくメモリも少ない「3A+」は、シリーズの中では少しマイナーな存在です。あまり出回っていないハードウェアだからこそ、あえてこれを選ぶことが、希少なハードでも動かすというNetBSDの理念に近い気がしました。
NetBSD 10.1の衝撃 – Wi-Fiが、動くぞ!
インストールにあたって、まずは公式サイトで情報を収集します。
調べてみて驚きました。NetBSD 10以降では、Raspberry Pi 3、4、Zero Wの内蔵Wi-Fiモジュールに標準で対応しているというのです。
実はこれ、すごいことなんです。同じUNIXライクなBSD系OSであるFreeBSDでは、最新リリース版である14.3ですらRaspberry Piの内蔵Wi-Fiは非対応(執筆時点)。それなのに、NetBSDはすでに対応済み。
「仕様が公開されていないなら、動かない」という壁を、彼らがどう乗り越えたのか。セッションで聞いた「執念」を垣間見た気がしました。
今回は最新安定版である NetBSD 10.1 の64bit版(aarch64)を使用します。
Raspberry Pi へ NetBSD をインストールする全手順
ここからは、実際のインストール作業のメモです。MobileGear2以来、久々に触れるNetBSDの感触を楽しみながら進めました。
1. イメージの書き込み
公式サイトのArmアーキテクチャ用のダウンロードページから NetBSD 10.1 の Generic 64-bit をダウンロード。書き込みツールにはシンプルで使いやすいUSBImagerを使用しました。
2. 起動確認
SDカードをRaspberry Pi 3A+に差し込み、HDMIケーブルとキーボードを繋いで電源ON。何の問題もなくブートプロセスが走ります。初回起動時はRaspberry Pi OSと同様にルートパーティションの拡張が行われ、その後ログイン画面まで到達しました。
ユーザー名 root でログイン(初期パスワードなし)。この無防備さが、開発環境っぽくて逆に新鮮です。
3. 環境構築
ここからは黒い画面(コンソール)での作業です。
・rootパスワードの設定
まずは何よりこれを設定しないと始まりません。
passwd
## 新しいパスワードを入力
・キーボード設定(日本語配列へ)
デフォルトだとUS配列なので、日本語配列に修正します。
vi /etc/wscons.conf
キーボード設定の箇所を見つけて以下のように修正します。
encoding = jp
・タイムゾーンを東京へ
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
再起動して設定を反映させます。
・Wi-Fiの有効化
さて、鬼門と思われたWi-Fi設定です。
wpa_passphrase myssid mypassword >> /etc/wpa_supplicant.conf
echo 'wpa_supplicant=YES' >> /etc/rc.conf
service wpa_supplicant start
(※ myssid と mypassword はご自身の環境に合わせてください)
設定後、祈るような気持ちで ifconfig を叩くと……
ifconfig
...
bwfm0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ssid myssid nwkey *****
...
status: active
inet 192.168.***.***/24 ...
bwfm0 インターフェースで見事にIPアドレスが取得できています! 感動です。LANケーブルを刺す場所がない3A+にとって、これは生命線です。
・SSH接続の有効化
最後に、PCからリモートで作業できるようにSSHを整備します。rootでの直接ログインはセキュリティ上好ましくないので、一般ユーザーを作成します。
# ユーザー bsduser を作成(ホームディレクトリあり、シェルはsh)
useradd -m -s /bin/sh bsduser
passwd bsduser
# wheelグループに追加(後でsuするため)
usermod -G wheel bsduser
sshd_config を確認・編集します。
vi /etc/ssh/sshd_config
デフォルトで問題ないはずですが、値が異なっていれば以下のように修正します。
PermitRootLogin no
PasswordAuthentication yes
SSHサービスを再起動。
/etc/rc.d/sshd restart
以上でとりあえずの環境構築が完了しました。
パッケージ管理ツール「pkgin」の導入
最低限のインフラ整備が完了しましたが、効率よくソフトウェアを管理する手段が必要です。
そこで、NetBSDの強力なパッケージシステムである pkgsrc を、より手軽に利用できる pkgin を導入します。これは、Linuxにおける apt や yum のような感覚で使える、NetBSD版のパッケージ管理ツールです。
・pkginのインストール
su でrootになり、まず環境変数 PKG_PATH にパッケージリポジトリを指定します。以下のコマンドは、実行しているOSのバージョンに合わせて最適なパスを自動で設定してくれる便利な書き方です。
# 環境変数PKG_PATHの設定
PKG_PATH="https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -p)/$(uname -r|cut -f '1 2' -d.)/All/"
export PKG_PATH
# pkginのインストール
pkg_add pkgin
・基本的な使い方
パッケージのインストール
pkgin install {package名}
# 例: pkgin install vim bash git
パッケージの検索
pkgin search {パッケージ名}
システムの更新
pkgin update
pkgin upgrade
これで、あらゆるソフトウェアがコマンド一発で手に入るようになりました。
「何もない」という贅沢
では、テストがてら母艦のPCからターミナルでSSH接続を試みます。
ssh bsduser@192.168.x.x
表示されたのは、シンプルなバナーメッセージでした。
NetBSD 10.1 (GENERIC64) #0: Mon Dec 16 13:08:11 UTC 2024
Welcome to NetBSD!
arm64$
$ マークが表示され、一般ユーザーとして無事ログインすることができました。
ちなみに、Ubuntuなどでお馴染みの sudo コマンドはデフォルトでは入っていません。管理者権限が必要なときは su でrootになる。この不便さもまた、UNIXの作法を思い出させてくれます。
まとめ – 見通しのよい草原地帯へ
これで最低限のインストールと設定が完了しました。
今のこの環境には、PerlもPythonも入っていません。非常にクリーンで、ミニマルな状態です。
Ubuntuなどのリッチなディストリビューションが、最初からビルやコンビニが立ち並ぶ「便利な都会」だとしたら、インストール直後のNetBSDは、地平線まで続く「見通しのよい草原地帯」のようです。
遮るものは何もありません。ここに小屋を建てるのか、畑を耕すのか、あるいは高層ビルを建設するのか。これから何を作るかは、すべて自分次第です。
便利な都会での生活に飼いならされてしまった今の私には、この何もない草原の風景が、とても新鮮で、そして自由に見えました。これからこのRaspberry Pi 3A+という小さな箱庭の中で、NetBSDの世界を存分に走り回り、自分だけの環境を少しずつ建てていきたいと思います。
みなさんも、たまには「不便な自由」を楽しみましょう。 おいでよ、NetBSDの世界へ。
本日も最後までお読みいただきありがとうございました。
それでは、よいNetBSDライフを!




ピンバック: 【番外編】Wii UでNetBSDは動くのか? – 幻のWi-Fi対応とカーネル再構築のメモ - ビューローみかみ