個人的な闇の事件簿

ロシアの文豪ドストエフスキーの罪と罰。殺人を犯す主人公は自らを正当化する為こう考えた。選ばれた非凡人は、新しい社会の成長のためなら、社会道徳を踏み外す権利を持つ

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で作業できるなら作業自体は触る事がない、ヘッドレスの部分で躓くかもしれないけど。