Raspberry Pi 4B + openSUSE leap 15.4 beta USB起動まわりのメモ
ねんがんのひかりふぁいばーを手に入れたぞ\(^o^)/
ルーターを作る必要があるので色々試している最中。現時点でわかっていいる事とメモする。
・Raspberry Pi 4B
ファームウェアは現時点で最新。
micro SDとUSBから起動する2パターンのファームがあるが、デフォルト起動がそのファーム専用というだけらしく、起動時に各々の起動可能ドライブが見つからない場合はもう片方を見にいくので、とりあずmicro SD優先起動でUSBストレージにシステム構築後にuSD抜いてファームを書き換えずにUSB起動にさせる。レスキューの方法としてuSD優先を残しておく、という考え方。
・USB起動するパーティション形式
パーティション管理方法はMSDOS/GPTとあるがどちらでも読める。Rp4は第1パーティションの/boot/efi部分を探しにいくので各々のディストリビューションの/boot/efiサイズでいいと思う(openSUSEで64MB)。
・USB起動させるためのドライブ(またはケース)
これがちょっと癖がある。
Rp4BにはUSB2.0/3.0とあるが、hostかケース側のUSB to SATAブリッジの認識させるアルゴリズムが若干異なりUSB3.0側で起動するが2.0側で起動しないコントローラー(もしくはブリッジのファーム)がある。
とりあえず対象ドライブの第1パーティションに/boot/efiをコピーして素のgrub2が起動するか試してみるよろし。
・openSUSE leap 15.4 betaの現時点でのgrubが認識する範囲
grub2.efiの初期ローダーの範囲でgrub2が起動するときに認識する範囲は、/boot/efiパーティションを覗いて
・md raid1(metadata 1.0)
・ lvm
・ btrfs(zstd、/boot含む)
まで読める。metadata 1.0なので/boot/efiも含めてミラー化は理論上可能(1ドライブでしか試していない)
/boot/efiからlvmが見えzstdなbtrfs上のgrub2が読めるのでパーティションについてはかなり自由度が高い。
・headless化
現在のopenSUSE leap 15.4 betaのkernel/initrdの場合HDMIに何も接続されいない場合、initrdシーケンスの途中で停止する可能性がある(うちでは100%)
参考:
HCL:Raspberry Pi4 - openSUSE Wiki
・openSUSE 15.4のインストール
uSDでイメージ作成後uSD側で起動(USBアダプターでは起動はするが途中で止まった)。
uSDのp1→USBのp1にVFATでファイルコピー
uSDのrootfsをUSBの適当なパーティションのファイルコピー
必要ならSWAP等を作る
/mnt下にUSBのパーティション郡をマウントしchroot
fstab書き換え
yast bootloader→Bootloader Optionsに必ず移動させてからF10/OKで終了しgrub書き換え
mkinitrd
yast2 bootloader/Bootloader Optionsとyast2 diskでパーティションを作る際に別途パッケージをいくつかインストールするので、rootfsコピー前にyast diskとbootloaderを起動して足りてないパッケージをインストールしてからUSBストレージへのコピーを始めるといい。
USBへのインストール作業はRp4Bのみで完結しネットワークがありsshで作業できるなら作業自体は触る事がない、ヘッドレスの部分で躓くかもしれないけど。