Slackware ARMのSDなしブート

Slackware ARM 12.1をRaspberry Pi 4 Model B (以下 “RPi4” )で走らせています.かなり前から,ルートドライブはUSB 3.0で接続したSSD (1TB)にしているので,起動用に使用しているSDカードがパフォーマンスに影響することは全くありませんでした.

でまあ,その他的にも特に影響はないのですが😓,せっかくRaspberry Pi財団が,SDカードなしでブートするブートローダーを正式に出しているので,この際ですから,ブートローダーのupdateをしてみました.

Linuxと共に生きる人生を結構長くやってまして,近年,数百GB〜数TBのHDD/SSDのパーティションは,

  • パーティションマップはGPT
  • 最初のパーティションは,512MB〜4GBで,EFIや/boot,またはSWAP用
  • 2番目のパーティションは2〜4GBで,SWAP用
  • 残りは1つのパーティションのまま,Linux用

といった3パーティションの形で切るのに落ち着いてきてます.だいたいこのように統一しておくと,使い回すのに便利です.

Slackware ARM用のSSDも,GPTで,512MB EFI用(当システムでは不使用),4GB SWAP,残りの1TB弱がLinux用でルート,となっていました.そこで,fdiskで最初のパーティションのtypeをMicrosoft Dataに書き換え,リブート後,最初のパーティションをmsdos型式でフォーマットしてから,/bootにマウントしているSDカードの中身を全部書き込み,/etc/fstabで,/bootに対応する物理ドライブをSDカードからSSDの最初のパーティションに書き換えて,Slackware ARM側の準備は終了です.

ブートローダーの書き換えは,結局,Raspberry Pi財団のサイトから,外部PCによる復旧用SDカードの作成を選んで,空いているSDカードにBootloader修復ツールをインストールして,そこから実施しました.今後もブートローダーのアップデートの度に同様の方法を行うことにします.

以上正しくできていれば,SDカードなしでブートできます.また,Raspberry Pi OSから,rpi-eeprom-config, rpi-eeprom-updateおよび,/lib/firmware/raspberrypi/bootloader/の中身をSlackware ARMの方にコピーしました.今後,これらが役に立つのかどうかは解りません😓

実際は,紆余曲折,試行錯誤がいろいろありましたが,最短経路はたぶん上記の通りだと思います.

Slackware ARMで,rpi-eeprom-updateコマンドをかけて,最新のブートローダーになっていることが確認できました.

RPi OSによるupdateは必要(追記)2020/11/02

そうだろうなと思っていましたが,rpi-eeprom-updateは,EEPROM内のブートローダーと,/lib/firmware/raspberrypi/bootloader/criticalを比較するだけのようです.ですから,Slackware ARMで,rpi-eeprom-updateを今後何回繰り返しても未来永劫up-to-dateが返ってきます.

そのため,bootloaderを最新に保つためには,定期的に,Raspberry Pi OSのSDから起動して,apt update… を実行するしかなさそうです.

当社調べ

当記事を含む,当サイト内の情報は全て「当社調べ」によります.

Notes:
1. 起動後は/boot.
2. 強いて言えば,現実味のあるブート用のSDカードの寿命の際,新しいSDカードに書くのがちょっとめんどうかも,という程度です.中身については,毎日実施しているバックアップで保存してます.
3. たぶん,1995年から.
4. GPTを本格採用したのは2018年からで,それまではMBR.
5. /dev/sda1
起動後は/boot.
強いて言えば,現実味のあるブート用のSDカードの寿命の際,新しいSDカードに書くのがちょっとめんどうかも,という程度です.中身については,毎日実施しているバックアップで保存してます.
たぶん,1995年から.
GPTを本格採用したのは2018年からで,それまではMBR.
/dev/sda1