NetBSD 11 デスクトップを Raspberry Pi 4 にインストール
NetBSD 11 desktop on a Raspberry Pi 4 (neongd.com)
要約
この記事では、Raspberry Pi 4 に NetBSD 11 をインストールする手順を解説しています。SDカードの準備、UEFI設定、Wi-Fiの有効化、パッケージ管理システム `pkgin` を使ったソフトウェアのインストール、そして NsCDE デスクトップ環境の設定方法までを網羅しています。AIを含まないオペレーティングシステムを求める筆者が、実用的なデスクトップ環境を構築する過程を詳細に記しています。
全文翻訳
NetBSD 11 デスクトップを Raspberry Pi 4 にインストール
このカプセルをVPSに移転したので、Raspberry Pi が他の用途に使えるようになりました。私が知る限り、現在開発中のオープンソースOSで、AIのスラッジを含まないのは NetBSD だけです。少なくとも今のところは? 試してみることにし、Pi にインストールしてみることにしました。どれほど難しいでしょうか? 実際、それほど難しくはありませんでした。私がどのように行ったかの簡単なガイドを作成しました。誰かの役に立つかもしれません。
Linux 上で Pi 用の SD カードを準備していると仮定します。
arm64 用の最新イメージを入手します。
https://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-11/latest/evbarm-aarch64/binary/gzimg/arm64.img.gz
最新の Raspberry Pi UEFI ファームウェアを入手します。
https://github.com/pftf/RPi4/releases
Balena's Etcher を入手します(お持ちでない場合)。
https://etcher.balena.io/#download-etcher
展開
microSD カードをラップトップに挿入します(私は安価なUSB SDカードリーダーを使用しました)。
Etcher を展開し、そのディレクトリに入って(通常のユーザーとして)起動します。
UI で「Flash from file」オプションを選択し、以前展開した NetBSD arm64 イメージを見つけます。宛先として SD カードを選択します(それが本当に SD カードであることを確認してください! 私の場合は /dev/sda でした)。イメージをフラッシュします(sudo アクセスを許可します)。
展開します。
NetBSD ブートパーティションのマウント用ディレクトリを作成します。
mkdir /mnt/netbsd-boot
SD カードの最初のパーティションをそこにマウントします。
sudo mount /dev/sda1 /mnt/netbsd-boot
rpi_firmware ディレクトリ内のすべてのファイルを /mnt/netbsd-boot にコピーします(すべて上書きします)。
この手順は、UEFI BIOS が SD カード上の NetBSD パーティションを実際に起動できるようにするために必要です。
パーティションをアンマウントします。
sudo umount /mnt/netbsd-boot
これで SD カードを Raspberry Pi に挿入できます。
電源を入れ、ESC キーを押して UEFI セットアップメニューに入ります。
「Boot Maintenance Manager」→「Boot Options」→「Change Boot Order」を開き、SD カードを(+ キーで)一番上に移動させ、次に「Commit Changes and Exit」を選択します。
NetBSD が起動するはずです。ルートファイルシステムのリサイズから始まります。
完了したら、「root」でログインできます。
passwd でパスワードを設定します。
すぐにユーザーを作成することが推奨されますが、後で作成することもできます。
adduser
Wi-Fi を動作させる
次に Wi-Fi に接続しましょう。
ifconfig と入力しても、ワイヤレスアダプターが表示されません。これは問題です。
しかし、dmesg ではカーネルがそれを認識し、ドライバを見つけたものの、自動設定できなかったことがわかります。
bwfm0: Found firmware file: brcmfmac43455-sdio.bin
bwfm0: autoconfiguration error: NVRAM file not available
これを修正しましょう。
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/firmware-brcm-nonfree-20220315.tgz
sudo reboot
再起動します。
ifconfig には bwfm0 デバイスが表示されるはずです。Wi-Fi アクセスポイントを設定しましょう。
rc.conf を編集します。
vi /etc/rc.conf
末尾に以下を追加します。
wl_monitor=YES
wl_ssid="YOUR_SSID"
wl_password="YOUR_PASSWORD"
wpa_supplicant.conf を編集します。
vi /etc/wpa_supplicant.conf
末尾に以下を追加します(大文字小文字に注意してください)。
network={
ssid="YOUR_SSID"
psk="YOUR_PASSWORD"
}
(簡単な Vi ヘルプ:編集モードに入るには i を押します。編集モードを抜けて文字を削除するには ESC を押し、削除したい文字の上で x を押します。ファイルを保存するには、編集モード外で : を押してコマンドモードに入り、wq と入力して Enter を押します。これは write and quit の略です。)
すべてうまくいけば、再起動後(または wpa_supplicant の再起動後)オンラインになっているはずです。
ifconfig は status: active と、DHCP で受信した IP アドレスを表示するはずです。
ここから先は、OS をどのように設定し、何をインストールするかは完全にあなた次第です。次に、私がそれをより使いやすくするために行ったことのいくつかを紹介します。
ソフトウェアのインストール
NetBSD には、ソースからパッケージをインストールおよびビルドする方法である pkg_src と、プリビルドされたバイナリパッケージをインストールする方法である pkgin があります。
PKG_PATH を設定するコメントを削除してバイナリパッケージをインストールできるように、~/.profile を編集します。
export PKG_PATH=http://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All
次に exit でログアウトし、再度ログインします。
バイナリパッケージマネージャーである pkgin を追加しましょう。
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/pkgin-0.20230101.tgz
sudo pkgin update
いくつかのソフトウェアをインストールします。例えば:
sudo pkgin install git vim htop
doas は、管理者コマンドを通常のユーザーとして実行するために、sudo と同様の方法で機能します。
vi /etc/pkg/etc/doas.conf で doas 設定を作成し、この行を追加します。
permit nopass root
permit nopass your_username
X11 のセットアップ
グラフィカルログインマネージャーを有効にします。
sudo vi /etc/rc.conf
wscons_enable="YES"
ユーザーのホームディレクトリに .xinitrc と .xsession を作成します(また、root としてログインしたい場合に備えて /root にも作成します)。
vi ~/.xinitrc
exec ctwm
詳細についてはこちらをご覧ください。
https://www.netbsd.org/docs/guide/en/chap-x.html
通常のユーザーでログインします(ユーザー名を入力した後、パスワードフィールドに入るために Enter を押します)。
これにより、NetBSD の組み込みウィンドウマネージャーである ctwm が起動します。非常にシンプルですが効率的です。
NsCDE - Not so Common Desktop Environment
実際に使用可能にするには、CDE スタイルのモダンなデスクトップ環境である NsCDE をお勧めします。これは fvwm に基づいています。
https://github.com/NsCDE/NsCDE
まず、必要なすべての依存関係をインストールします。これらはすべて root として行いましょう。
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/fvwm-1.0.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/nspr-4.35.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/nss-3.92.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/gtk3-3.24.41.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/qt5-qtbase-5.15.12.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXScrnSaver-1.2.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXext-1.3.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXrender-0.9.10.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXft-2.3.7.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXinerama-1.1.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXrandr-1.5.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXcursor-1.2.0.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXfixes-6.0.0.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXmu-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXpm-3.5.13.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXv-1.0.11.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXvMC-1.0.12.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXxf86vm-1.1.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXxf86dga-1.1.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXdmcp-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXau-1.0.10.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXdmcp-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXext-1.3.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXfixes-6.0.0.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXrender-0.9.10.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXinerama-1.1.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXrandr-1.5.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXcursor-1.2.0.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXft-2.3.7.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXmu-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXpm-3.5.13.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXv-1.0.11.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXvMC-1.0.12.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXxf86vm-1.1.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXxf86dga-1.1.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXdmcp-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXau-1.0.10.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXdmcp-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXext-1.3.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXfixes-6.0.0.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXrender-0.9.10.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXinerama-1.1.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXrandr-1.5.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXcursor-1.2.0.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXft-2.3.7.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXmu-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXpm-3.5.13.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXv-1.0.11.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXvMC-1.0.12.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXxf86vm-1.1.4.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXxf86dga-1.1.5.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXdmcp-1.1.3.tgz
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/libXau-1.0.10.tgz
python3 を利用可能にします。
sudo pkg_add -v https://cdn.netbsd.org/pub/NetBSD/packages/2023/x86_64/All/python39-3.9.18.tgz
(ユーザーのホームディレクトリでも同様のことを行います)。
NsCDE が期待する可能性のあるこのフォルダを作成します。
mkdir -p ~/.config/NsCDE
NsCDE を取得してビルドします。
git clone https://github.com/NsCDE/NsCDE.git
cd NsCDE
./configure --prefix=$HOME/.local
make
make install
警告を確認します。パッケージがまだ不足している場合は、インストールします。利用可能なパッケージは以下で見つけられます。
pkgin search fvwm
次に NsCDE をビルドします。
make
すべてうまくいけば:
make install
シェルをより使いやすくするために、root とユーザーの両方の ~/.shrc を編集し、インタラクティブモードの設定に以下を追加します。
export PATH=$HOME/.local/bin:$PATH
次に、ユーザーの ~/.xinitrc を編集します(root としてログインしたい場合も同様)。そして一番下の exec 行を以下のように変更します。
exec $HOME/.local/bin/NsCDE
再起動してユーザーでログインします。NsCDE の初回起動セットアップが開始され、テーマや GTK、QT との統合を設定できます。
タスクバーのマルチメディアアイコンの上にある上向き矢印をクリックすると、「Volume Control」メニューオプションが見つかります。しかし、それをクリックすると、volumectrl アプリケーションがインストールされていないというエラーメッセージが表示されます。ファイルマネージャーも同様です。これを修正しましょう。
~/.NsCDE/NsCDE.conf を編集し、以下を追加します。
InfoStoreAdd volumectrl true
InfoStoreAdd filemgr true を以下に置き換えます。
InfoStoreAdd filemgr $HOME/.local/bin/pcmanfm
開始として、グラフィカルウェブブラウザをインストールすることもできます。
sudo pkgin install firefox
これで、おそらく慣れてきたでしょう。新しいマイナーなオペレーティングシステムを楽しんでください!
スクリーンショット:
NetBSD 11 が Raspberry Pi 上で NsCDE を実行している様子 [画像, png, 250Kb]