bookworm時代のRaspberry Pi OSヘッドレス初回設定

公開

Raspberry Pi 3 B+のシステム用に、今時の Raspberry Pi OS  ( bookworm ベース) をセットアップ。Raspbianと呼称されていた頃とはだいぶ異なる要領につまづきながら、 ヘッドレス 仕様のシステムを仕上げます。

Raspberry Pi OS 64bit Liteの入手

ヘッドレス運用のRaspberry Pi 3 B+で使用しているシステムを、アップグレードではなくまっさらなSDカードにbookwormベースの現行版Raspberry Pi OSを書き込み、いちから再構築。

図1.Raspberry Pi 3 B+

図1.Raspberry Pi 3 B+

さまざまな仕様のRaspberry Pi OSの中から、今回ヘッドレス用にダウンロードしたのは、Raspberry Pi OS (64-bit) Lite版です。

ディスクイメージの書き込み直後、小さかったルートパーティションは、従来は起動後に raspi-config を立ち上げて自分で拡張する必要がありましたが、今どきは初回ブート時に自動伸長してくれるようです。

図2.ルート領域の自動伸長

図2.ルート領域の自動伸長

これまでの初回ブート前仕込み

初回ブートから一貫してディスプレイに繋がず、SSHでターミナル越しで全て操作するには、システムSDにいくつかお膳立てが必要なのはいつもの通り。

まず、 bootfs ブートパーティションに、 ssh と言う名前の空ファイルを作って、SSHを利用可能に。

 

従来はこれでデフォルトユーザー pi 、パスワード raspberry で中に入れたのですが、bullseyeベースのある頃より、このデフォルトユーザーがセキュリティ上の理由から廃止されていました。

GUIベースなら対話式インストーラでアカウントを設定すれば良いだけの話ですが、ヘッドレスの場合は bootfs ブートパーティションに、 userconfig.txt と言うファイル名でユーザー名と暗号化したパスワードペアを記述すれば、初回ブートでアカウントを作成してもらえます(さもないと、SSHでユーザーアカウントが存在しないためにログインできない事態に)。

 

さらに、Raspberry Pi 3以降には内蔵WiFiがあるので、接続先アクセスポイント情報を wpa_passphrase コマンドで成形、それを wpa_supplicant.conf というファイル名で、 bootfs ブートパーティションへ保存しておけば、初回ブート時にシステムが取り込み、自動接続してくれたものでした。

が、今回のbookwormベースRaspberry Pi OSでは、このWiFi設定を初回ブートで取り込んでもらえません。

 

bookwormベースではcustom.tomlに集約

調べてみると、bookwormベースになって、 wpa_supplicant.conf がサポートされなくなったとのこと。おそらくネットワーク廻りがNetworkManagerが司ることになったためなのでしょう。

システムSD作成にRaspberry Pi Imagerを使うことが推奨とされているようですが、それ以外では bootfs ブートパーティションに custom.toml と言うファイルで記述すれば良さそう

このファイルには、WiFi接続情報のみならず、ホスト名やユーザー名、ロケールとタイムゾーン、SSHの有効化もまとめて記述しておけるので便利。

なお、初回ブートで初期設定が終わると、この custom.toml ファイルは自動削除されます。

 

初期設定後、ターミナルからWiFi設定を確認。やはり wpa_supplicant.conf は手付かずで、接続情報はNetworkManagerが握っていました。

 

config.txtの編集点

その他、bootfsブートパーティションのconfig.txtで編集したパラメータは、以下の通り。

I2Cセンサを繋げる予定なのでバスの有効化の他、Bluetoothの無効化などに続き、昔から頭を悩ませる Undervoltage detected 回避を願って、 avoid_warnings=1 を入れてみるも、起動時にちらっと数秒ログに記録されます(値を 2 にしても同じ)。

これは、GUI画面上に出る雷アイコンを消すだけかもしれません。

 

nmcliでeth0を静的IPへ

続いて、有線LANポートを静的IPへ変更を初めてNetworkManagerのCLIツールnmcli で設定します。

まずは、現在のインターフェイスを確認。

NAME項でインターフェイス名を把握したら、 nmcli con mod で静的IP情報を指定します。

インターフェイスのIPv4情報を確認。設定した通りですが、この時点ではまだインターフェイスに反映されていません。

nmcli con up コマンドを実行して、設定値を反映させます。

 

IPv6無効化手法

仕上げはいつもIPv6の無効化。多くのLinuxでは /etc/sysctl.conf にIPv6を無効にする設定を追記して対処していました。

これで恒久的にIPv6が無効化されるはずも、今回はシステム再起動後また元通り。 sysctl.conf を読まない悪寒。

そこでこれも nmcli でインターフェイス毎にIPv6を無効化してみます。

念のため再起動してからIPv6アドレスの有無を確認すると、小さなことですが lookback インターフェイスに残存。 lo は nmcli で触れないと怒られます。

 

最終的には、 bootfs ブートパーティションの cmdline.txt に、次のおまじないを追記することで、IPv6はいなくなりました。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA