ラズパイをmicroSDからUSB接続SSDに変えた
公開日:
カテゴリ: Raspberry Pi
ここ最近(筆者が)便利にサーバとして使用しているラズパイですが、ストレージをデフォルトのmicroSDで運用していると、停電等で電源断が発生したときにそこそこの確率でファイルシステムが破損します。
そこでラズパイのストレージをmicroSDからUSB接続のSSDに変えたので、その覚書です。
この記事は操作している環境がコピー元の場合の方法となります。
SSDの準備
今回採用したのはBUFFALO製のSSD-PST1.0U3-BA。
SSDといってもM.2SSDや2.5インチのSSDではなく、無線マウスのレシーバーみたいなSSDです。USBメモリにしか見えませんが。
ラズパイにはM.2SSDを接続するためのHATもあるようですが、公式ケースにファンを取り付けてしまっているので諦めました。ラズパイのCPUとSSDの両方の放熱の問題を考えたくないので・・・。
パッケージの更新
クローン前に各種パッケージやブートローダーの更新をかけておきます。最近ラズパイをインストールした人にはあまり関係がありませんが、数年前のブートローダーを使っている場合はUSBブートに一手間かかる(もしかするとできない?)ようです。ブートローダーの更新には再起動が必要です。
sudo apt update
sudo apt upgrade -y
sudo rpi-eeprom-update -a
sudo reboot
ブート時の優先順位を変更
クローン前にブート時の優先順位microSDからUSBに変えておきます。raspi-config
で変更できます。自信のある方は/boot/config.txt
の直接編集でも(USBブートの設定値は0xf14
、ラズパイ5の場合は0xf146
)。
# 対話方式で設定する場合
sudo raspi-config
# Advanced options -> Boot order -> B2: NVMe/USB boot
# コマンドで設定する場合
sudo raspi-config nonint do_boot_order B2
microSDをSSDにクローン
ネット上では各種GUIソフトが紹介されていますが、サーバ用途かつmicroSDということもあってコマンドライン環境しかなく、GUI環境を導入するのは非常に手間なのでコマンドラインで使える方法を探します。
調べて出てきたのが、rpi-cloneというシェルスクリプト。なのですが、このシェルスクリプトは長らく更新されていないので代わりを探します。もう少し調べてみると、geerlingguy氏がrpi-cloneのfork版を開発されているので、こちらを使います。
curl -sLo rpi-clone https://raw.githubusercontent.com/geerlingguy/rpi-clone/master/rpi-clone
chmod +x rpi-clone
スクリプトをダウンロードしたら、SSDを接続します。デバイス名を確認するため次のコマンドを実行します。
lsblk
実行すると接続されているストレージデバイスとパーティションが表示されます。ツリーの親がmmcblk0
と表示されているのがmicroSDカードです。接続したUSB接続のストレージはsdN
(Nにアルファベット1文字が入る)という名前になっているので、これを控えます。アルファベットはaから順番に名付けされるので、他にデバイスを接続していなければsda
になると思います。
クローン先のデバイスを確認したらrpi-clone
を実行します。引数に先ほど控えたコピー先のデバイス名を指定します。
./rpi-clone sda
確認メッセージが表示されたら、メッセージを読んだ上でyes
と入力すると続行します。microSDカードは容量が少ないとはいえ、それなりに時間がかかります。
sudo reboot
クローン完了後、再起動するとUSBブートに切り替わっています。
参考
カテゴリ: Raspberry Pi