個人的な経験則ですがSDカードは壊れやすいと思います。※信頼性の低い格安な製品を使用している要因もあります。
「Raspberry Pi2 Model B V1.2」以降ではMicroSD不要でUSB接続のメモリ・HDD等にインストール可能なそうです。私が使用しているラズパイは「V1.1」なのでMicroSDが起動に必須ですが、システムルートパーティションをUSB接続のストレージに移動することができるのでそのように運用し、安定性・耐久性向上を期待したいと思います。
[参考] Raspberry Pi の USB ブート環境を作っておくと、backup と restore が捗った話
1.ラズパイの起動
USBメモリを刺して通常通りラズパイを起動し、SSH接続します。2.USBメモリのデバイス名確認
パーティションのデバイス名確認 下記コマンドでパーティションのデバイス名を確認します。パーティションサイズ等を手がかりにします。sudo fdisk -l
以下のような状況でした。
デバイス名 | フォーマット | 用途 |
---|---|---|
/dev/mmcblk0p1 | FAT32 | 「/boot」パーティション |
/dev/mmcblk0p2 | Linux(ext4) | ルートパーティション |
/dev/sda1 | FAT32 | USBメモリ |
3.SDカード内のルートディレクトリをUSBメモリにコピー
コピー操作については別のLinux PCにて「GParted」のGUI操作によって行いました。一旦ラズパイをシャットダウンし、Linux PCにSDカードとUSBメモリを挿入します。コピー元のルートパーティションは「ext4」フォーマットですがコピー先のUSBメモリは一般的な「FAT32」フォーマットです。念の為USBメモリを「ext4」にフォーマットしておきました。操作は「Gparted」でUSBメモリのパーティションを右クリックして「ext4」を選択するだけです。(※Applyボタンのクリックを忘れずに!)
画像の「/dev/sdc1」はUSBメモリのパーティションです |
「Gparted」を起動し、SDカードの2番目のパーティションを右クリックして「copy」を選択します。
画像の「/dev/sdc2」はMicroSD内のルートパーティションです |
USBメモリのパーティションを右クリックして「Paste」を選択します。
最後に「Apply」ボタンをクリックすると設定が反映されます。
画像の「/dev/sdd1」はUSBメモリのパーティションです |
コピー元のパーティションは約7GB、コピー先は約15GBの容量なのですが、コピー後にパーティションの伸長を自動的にしてくれていました。
4.ルートディレクトリの指定変更
SDカードをLinux PCに挿入したまま作業を行います。/bootディレクトリ内のcmdline.txtにルートディレクトリはどのパーティションなのかを指定しているので修正します。変更前
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=68ebb135-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
ルートパーティションはUUIDで指定されています。
変更後
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
「root=/dev/sda1」と記述を変更し、UUIDではなくデバイス名で指定しました。別のUSBメモリやHDDを接続した場合にトラブルが起きる可能性はあります。
しかし、作成したUSBメモリをコピーして複数用意し、入れ替えて使用する場合は都合が良さそうです。
再度SDカードをラズパイに挿入して起動します。
SSHで接続後、「mount」コマンドでルートディレクトリはどのパーティションに割り当てられているか確認します。
/dev/sda1 on / type ext4 (rw,noatime)
以上で設定完了です。
おそらくSDカード内の/bootパーティションは読み込みしか行わないので、耐久性は向上すると思われます。
ルートディレクトリをUSBメモリに移して後の操作感は、動作が遅くなることはなく特に違和感はありません。
デメリットとしてはUSBメモリを刺した分、物理的な出っ張りが大きくなることでしょうか?
0 件のコメント:
コメントを投稿