Sympapaのスマートホーム日記

スマートなんとかはスマートじゃない方法でつくられている

Home Assistant: Raspberry PI 4BをSSDブート化する

Sympapaです。
Home Assistantを使い始めて1年ちょっとが経ちました。ちなみにこのブログは昨日で1周年だったようです(汗


我が家のHome AssistantはRaspberry PI 4B上で動いています。
導入当時は(ってか今もですが)Raspberry PIのことなどチンプンカンプンで、なんも考えずHome Assistantの公式ページに書かれた初心者おススメコースをひたすら手順どおりにインストールしただけなので、OSはHome Assistant OSでmicroSDカードにインストールして使っています。
一応、ドラレコではmicroSDカードがご臨終する経験を2回しているので、このテのものに使用するSDカードは「MLCに限る」と思っており、MLCであることが明記されている"Sandisk Industrial 32GB"を使用しています。
microSDカードが壊れなくてもHome Assistant自体が壊れることもあるでしょうし、日常的にはHome Assistantに備わったバックアップ機能でバックアップを行い、2ヶ月に1回くらいはSDカードを丸々イメージとしてバックアップしています。
この運用をしていれば簡単に復旧できるのでmicroSDカードでも十分かなと思っていたのですが、最近、アドオンやインテグレーションやデバイスがかなり増えてきたせいか、起動や履歴などの読み込みが結構重くなっており速度面が気になってきました。
そこでHome AssistantをSSD化してやろうというのが今回のお話です。

■用意したハード

SSD

コンパクトさを求めてM.2 2242のにしようと思いましたが、少し大きい方が放熱に有利かなって思ったのとケースの兼ね合いでM.2 2280のコレにしました。しかしSATAのM.2ってラインナップ少ないですねぇ。
たぶんAmazonで売っている「有名どころ」のSATA M.2 2280 小容量SSDとしては一択である”シリコンパワー 3D TLC NAND採用 128GB SATA III 6Gbps A55シリーズ SP128GBSS3A55M28”を選択しました。
amzn.asia


SSDのUSB接続アダプタとケース
ググるとRasberry PI 4BにSSDを接続する手段としては、Paspberry PIのケースと一体になった"Argon ONE M.2アルミニウムケース"がメジャーなようです。
一体型ですっきりするし良さげですが6000円はお高いし組み立てが面倒そう(汗
それに当然ながらSSDを接続するアダプタとしてRaspberry PI 4B以外では使えないというデメリットもあります。
そんなワケで私はトランセンド USB3.1 [M.2 SATA SSD 専用] 外付けケース TS-CM80Sを選択しました。
M.2 2280 SATA用です。
amzn.asia

■作業していく

Home AssistantのSSD化についてググってもあまり新しい情報がヒットしなかったのですが、昔はRasberry PIをSSDブート化するのは大変だったけど今はラクになったということなんでしょうたぶん。
作業としては、ブートローダをUSBブートするように設定してSSDにHome Assistantをクリーンインストールし、起動後にバックアップを復元するだけのようですので、サクサクっと1時間以内に終わらせましょう。

1.Home Assistantをバックアップする

Home Assistantのバックアップ機能でバックアップします。
バックアップが終わったらPCなどにバックアップファイルをダウンロードしておきます。

2.ブートローダー更新とUSBブート設定

Raspberry PI 4BはもともとはUSB Bootに対応しておらず、2020年6月頃から正式にUSB Bootに対応したらしいです。なので古いバージョンのブートローダーだとUSB Bootできないようです。
私は自分のRaspberry PI 4Bのブートローダーバージョンを調べもせずに最新版にします。バージョンを調べる方法を調べる方が面倒そうだったので(笑)
ブートローダーを最新版に更新してくれるmicroSDcardを作成して起動するだけです。


1)Raspberry PI ImagerをPCにインストールし起動します。(私はWindowsマシンで実行します)
www.raspberrypi.com


2)空の(あるいは消去してもいい)microSDカードをPCと接続します。


3)Raspberry PI ImagerのOS選択で“Misc utility Images">“Bootloader” と進みます。
ここで"SD Boot", "USB Boot", "Network Boot"の3つの選択肢がありますが、どれから優先的に起動するかをここで選べばブートローダーを焼くのと一緒に設定してくれるようです。今回は“USB Boot”を選びます。ちなみに"USB Boot"を選んでもUSBストレージが無い時にはmicroSDカードから起動してくれます。


4)書き込むmicroSDカードのドライブを選択し、「書き込む」を押して数秒で「ブートローダー更新用microSDカード」の出来上がりです。


5)Home AssistantがインストールされているRaspberry PI 4Bに挿さったmicroSDカードを抜いて、4)で出来上がったブートローダー更新用microSDカードを挿入して電源を入れます。抜いたmicroSDカードは絶対に無くさないようにします(笑)


6)自動的にブートローダーを更新し"USB Boot"に設定してくれます。
「緑の画面が表示されて緑のLEDが点滅したら更新完了」ってことらしいですが、電源を入れた瞬間にそうなっていたので失敗かと思いました(笑)


7)電源を切ってmicroSDカードを抜きます。こっちは無くしてもいいです(笑)

3.SSDにHome Assistantをインストールする。

初めてHome Assistantを導入した時と同じ手順でSSDにHome Assistantをクリーンインストールします。
こちらのページの手順どおりにやりました。
www.home-assistant.io

4.SSDを繋いでRaspberry PIを起動する

SSDRaspberry PIUSB3.0ソケット(青い方)に繋いで電源を入れます。
しばらく経つと他のPC等から”homeassistant.local:8123"でHome Assistantの画面にアクセスできるようになります。
最初「内部処理が終わるまで待ってろ」って画面が出ますが、ここの完了はmicroSDカードよりSSDの方が断然早かったです。

5.バックアップを復元する

なんて書いてあったか覚えてないけど「バックアップから復元」みたいなのを押して、最初にバックアップしてPCに保存しておいたファイルをアップロードし復元します。
これで作業は完了です。

■だがしかし

Raserry PI 4Bの電源はケースとセットで2000円くらいで買った5.1V 3Aアダプタですが、電源供給も全く問題無いようでサクッと起動してくれました。
しかしHome Assistantでバックアップしたファイルからの復元にはあまり良い印象はないんですよね。
たまに一部が復元されないというか。。。
2ヶ月に一度くらいmicroSDカードを丸々イメージとしてバックアップしているのはそういう理由が大きいです。
ちなみに最初はSSDにイメージを復元すりゃ手順も少なくなるし確実に復元出来ていいんじゃないかと思ってましたが、復元するとSSDが元のmicroSDカードと同サイズのパーティションになってしまうのを解決する方法が判らず断念。


起動後は過去の経験上特に懸念していたZigbeeバイス達が問題なく動いてくれました。
「今回はちゃんと復元されたー!」と喜んだのも束の間、アドオンがどれも起動していません。
いや、Zigbee2MQTTで接続しているセンサー達はちゃんと機能してる。。。
裏ではアドオンがちゃんと動いているのにUI上では起動していないことになっていて、サイドバーから各アドオンのUIを開こうとすると「先に起動しなさい」と怒られ、アドオンを再起動してみてもやっぱりUI上では起動していないことになったまま。。。
再起動したりクリーンインストールからやり直したり、違うバックアップから復元してみたり、新たなアドオンをインストールしてもダメで3時間ほどを費やし「今日はあきらめてmicroSDカードに戻そう。。。」と思いかけた時に何故かUIが復活しました。
ググってもあんまり出てこない不具合でしたが、同様の不具合で「俺は15回再起動したら直ったぜ!」と書いてる人がいたので再起動しまくり作戦か放置プレイがいいのかもしれません(笑)


(後日追記:Alexa Switch用として使っているSamsung Smart Thingsインテグレーションのログインが外れてしまってました。トークンをメモってなかったのでトークンを再生成してログインし直しました。バックアップからの復元だとこういうのがちょいちょいあります。)


見た目はもう少しスマートになると思っていたのにUSBケーブルがゴツすぎた(><)
これなら2.5インチのSSDでも良かったかも(笑)
まぁどのみち隠れる場所に置いているのでいいっちゃいいんですけど、柔らかくて短いケーブルを探してみます。

■感想

もちろんサクサクになりましたが、PCのシステムドライブをHDDからSDDに換えた時のような感動はありません(笑)
システムの起動時間とかは、PCだと体感で5倍くらい速くなったように感じましたが今回は2倍にはなっとらんかなという印象です。最初の頃はmicroSDカードで全く不満がなかったのですが、今の色々なものをゴチャゴチャ入れた状態で最初の頃の感覚に戻ったなーみたいな感じです。
一方、人感センサーやスイッチによる照明点灯などの動作が数十ミリ秒早くなった気がしますがプラシーボかもしれません(笑)
いずれにしても思ったほど速くならんかったと思うわけですが、今回かかったお金は5500円で容量120GB。
MLCmicroSDカードが32GBで2000円くらいするので、寿命や性能に対するコスパとか、今回みたいにバックアップが復元されないトラブルの可能性なども考えると、これからHome Assistantを導入される人には最初からSSDにしとくことをおススメしたいと思います。

それでは。