Rpi4(8GB)がbootしなくなったので調べものをした。実は電源の容量不足で、OSが立ち上がる途中にSSDが落ちてしまうのが原因であったのだが、事実誤認にてconfig.txtで何とかなるかと試行錯誤してしまった。
以下の基本レシピの部分を除いて、/boot/config.txtを直接編集しなければいけない場面は少ないと思う。基本的にraspi-configコマンド経由の設定でOK。
1.基本レシピ
- 基本的にはroot権限でraspi-osのraspi-configを実行すれば充分。Pi3/Pi4をサーバー用途にするときは、Interfaceの項でsshのみYes、ssh以外はNoを選択。
- さらにRpi2/3/4でWifiやBluetoothを無効にするには、最後の行に下記追加。
BT無いボードはwifiのみ有効
dtoverlay=disable-wifi
dtoverlay=disable-bt - 古いLCDパネルとか、小型ディスプレイを使うときには、raspi-configの操作だけでは対処できない。/boot/config.txt で適切な解像度を指定し記述する。
公式に発表はされていないが、Rpi3A/Bでconfig.txtの下記行を読み込ませると、ボードの書き込み専用ROMが書き換わり、raspi-osをUSB mass strageからbootできる。(raspi-os 32/64bit双方で確認)
program_usb_boot_mode=1
mini-SDがスロットに刺さっていれば、USBよりも優先される。
変更は不可逆的。Mini-SDスロットにメディアが無ければ、USBからbootするので問題なし。
なお、FreeBSD(arm64)のUSB mass storageにあるboot-loaderでも、Raspi-osのconfig.txtを事前に読み込ませることで、本方法でのbootに成功した。ただし、pcに接続して見える/msdosfs/config.txtの"dtoverlay=mmc"をコメントアウトすることが必要。
cat /boot/msdos/config.txt
[all]
arm_64bit=1
dtparam=audio=on,i2c_arm=on,spi=on
# dtoverlay=mmc
dtoverlay=disable-bt
device_tree_address=0x4000
kernel=u-boot.bin[pi4]
hdmi_safe=1
armstub=armstub8-gic.bin
3B/3B+にて確認
(2021/9/19追記)
- 下記にてUSB mass storage の立ち上がりを2→5秒に伸ばせる。当方環境では不要で外した。HDDから起動する際に必要となるかも?パラメータ=1で5秒。
program_usb_boot_timeout=1
ネタ元はこちら
2.概要
Raspi-OSでは、/boot/config.txtという設定用テキストファイルにハードウェア状態を定義して、kernelを起動する。これはあたかもPCでのBIOS設定の如きである。PCがマザーボードのEEPROMに書き込むのに対して、Raspberry Piでは/boot/config.txtのテキストファイルで格納されている点が異なる。
Raspi-OSのbootディスク(mini-SDかUSB-Mass strage)は、FAT32の/bootパーテーションと、ext4(Linux)のrootfsのマルチパーテーションになっている。Bootディスクが格納された記録メディアをWindowsPCに接続すると、/bootのパーテーションを参照でき、config.txtはメモ帳、あるいはエディタ等で編集が可能だ。Windowsのエクスプローラで、ラベルが"boot"なるリムーバルディスクが見えたら、その中に、config.txtとして表示される。
Raspi-OSが初期状態で起動した後になるが、PCのBios設定の様なプログラムである、/usr/bin/raspi-config を使って、/boot/config.txtの最低限を設定できる。Rpi3, Rpi4で設定できる項目が違い、config.txtを直接エディタで編集必要となる部分もあるが、後に例を交えて詳述する。
(正式リリースの32bit(armhf)版とβ状態の64bit(aarch64)版のいずれも)
3.目的,使用環境
- 用途
ネットワークサーバー用途を想定。
sshのみ有効。Serial, I2C, GPIOは無効。
GUIを使わないのでVNCも無効。
イーサネット接続。WIFIやBTは無効。
各論は別記事に纏める。
2021年9月7日
コメント