雑記帳

整理しない情報集

更新情報

ラズパイを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