Slackware ARMのSDなしブート

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

でまあ,その他的にも特に影響はないのですが😓2強いて言えば,現実味のあるブート用のSDカードの寿命の際,新しいSDカードに書くのがちょっとめんどうかも,という程度です.中身については,毎日実施しているバックアップで保存してます.,せっかくRaspberry Pi財団が,SDカードなしでブートするブートローダーを正式に出しているので,この際ですから,ブートローダーのupdateをしてみました.

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

  • パーティションマップはGPT4GPTを本格採用したのは2018年からで,それまではMBR.
  • 最初のパーティションは,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の最初のパーティション5/dev/sda1に書き換えて,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… を実行するしかなさそうです.

当社調べ

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

RasPi Kernel 5.4.xに

Raspberry PiのKernelが,Kernel V4の最後のlongterm 4.19.xから,V5最初のlognterm 5.4.xになりました.弊serverも上げてみました.

Majorなバージョンが上がったといっても,longtermとして次の系列なだけなんですが^^;

Raspberry Pi用のKernelは,次の系列がリリースされると,前の系列をサポートしてくれなくなるので,やむを得ません.

いまのところ特段の問題や,気がついた点などはありません.

RasPi4では電波出してません

当サーバーは,中国のオンラインショップから購入した,Raspberry Pi 4 Model Bで動いています.この個体は日本の技術適合基準証明(技適)を取得していません(2019/11/17現在でも,Raspberry Pi 4 Model Bは技適を取得していないと思います)12019/11/17の時点で技適を取得済のようです.

しかし,当サーバーではWifiもBluetoothも使用していないので全く問題ありません.

そもそも,Slackware ARMは,Raspberry Pi (少なくとも,3, 3+, 4)のオンボードのWifiもBluetoothもサポートしていないので,使いたくても使えないのが現状です.

RasPi 4へのupgrade手順

Raspberry Pi 3 Model B+(以下RPi3+)で動いていたSlackware ARM 14.2を,Raspberry Pi 4 Model B(以下RPi4)へ移転する手順のメモです.

→ 免責等について

まずは,RPi3+で使用していたSDカードをRPi4へ挿し,USB3ハブとそれにつながるルートディスク,バックアップディスクマウスとキーボード1KVM経由.もそのまま移し,LANポートにUTPケーブルを挿し,ディスプレー(microHDMI)と電源をつないで起動を試みましたが,起動しません.

ざっと調べるとRPi3(+)用のKernelではNGなようです.

そこで,Slackware ARM on a Raspberry Pi (SARPi)プロジェクトから,RPi4用のKernel, Kernel modules, Boot firwareをダウンロードします.

これらを展開して,/bootの中身をブート用のSDヘ,モジュールを/lib/modulesへコピーすれば良いだけの話です^^;

モジュールはKernelのサフィックスが違うので,上書きされることはないですが,SDの上書きを活きたシステムでするのは,2度とブートできなくなる可能性があって危険です2これも,たぶん大丈夫ですが,念を入れた方が安全でしょう.

そこで,いったんシステムを止め,SDカードをWindows機で複製した上で,/bootの中身を上書きしました.

結果これで動きました(さらに若干のおまじないは必要てすが).

USBドライブ(SSD)との接続は,これまでのUSB2からUSB3になりましたが,いまのところ体感速度的には大きな差は感じられません.