##やること
Raspberry Pi用のSDカードをバックアップしたり復元/リストアしたりします。
(ラズパイ付属の「SD Card Copier」がとても便利そうですが、手元のものはうまく動いてくれません。)
##注意
書き込み時のデバイス選択に失敗するとMac用の大切なハードディスクやストレージを失う可能性がありますので、作業は自己責任にてお願いします。
##環境
- Raspberry Pi ならなんでも
- SDカード(今回は32GBのもの)
- Mac
- 必要に応じてSDカードリーダー
##バックアップ方法
####まずバックアップしたいSDカードのデバイスの位置を特定します
$ diskutil list
すると、/dev/disk数字 のリストが表示されます。
バックアップ対象のSDカードをMacのカードリーダーに入れた状態、抜いた状態のそれぞれで$ diskutil list
を実行し、差分を確認することで目的のデバイス番号を確認できます。
SDカードを入れたときだけ現れるデバイス番号が目的のSDカードの場所となります。
/dev/disk数字 をメモします。
####ddコマンドでバックアップを実施します
$ sudo dd if=/dev/disk数字 of=~/Desktop/<バックアップ名>.img
/dev/disk数字の数字は先ほど特定したSDカードの場所の数字にします。
<バックアップ名>は任意のもの。この例ではバックアップはデスクトップに作られるようにしていますが、詳しい方はパスをお好きなものに変更してください。
####バックアップの進捗確認
バックアップにはかなり時間がかかります。
Macの場合はctrl+tで動いているかどうかの確認ができます。
また、進捗を秒単位で表示させたい場合は、別のターミナルを開き
$ while true; do sudo killall -INFO dd; sleep 2; done
とします。
(参考URL https://kaworu.jpn.org/kaworu/2012-11-29-1.php)
終了するとデスクトップに<バックアップ名>.img というSDカードをまるごとコピーしたファイルができています。もちろんzipで圧縮して保存することも可能です。
##復元/リストア方法
注意!特にこの項目は失敗するとお手持ちのMac等の大切なディスクを消去してしまう可能性があります。十分ご注意の上自己責任において実施してください。
####まず復元ファイルを書き込みたいSDカードのデバイスの位置を特定します
$ diskutil list
これを利用して書き込みたいSDのデバイスの位置を特定します。
####該当するSDカードをアンマウントします
$ diskutil unmountDisk /dev/disk数字
####バックアップファイルの準備
さきほど作成したバックアップファイル<バックアップ名>.imgを準備します。
zipなどで圧縮されている場合は解答しておきます。
####SDカードへのバックアップファイルの書き込み(バックアップの復元)
$ sudo dd if=/<パス名>/<バックアップ名>.img of=/dev/rdisk数字 bs=1m
of=の後半に出てくる「rdisk」は「disk」ではないので打ち間違いに注意してください。
また、ターミナルでsudo dd if=
まで打ち込んだ後、デスクトップ上の<バックアップ名>.img
のファイルアイコンをターミナル上にドラッグ&ドロップすれば、そのファイルの絶対パスが自動的に入力されて便利です。
当然ながら、<バックアップ名>.imgのバックアップファイルよりも小さい容量のSDカードには書き込みができません。
この手順で作ったSDカードはラズパイに入れればそのまま使えます。
#SDカードを選ぶときのコツ
SDカードはメーカーなどによって使える容量が微妙に違っています。
$ diskutil list
とすると、*31.0 GB という感じでストレージサイズが表示されますが、この数字がSDカードによりまちまちです。
たとえば手元のものでは、
①Sandisk Ultra 32GB → 31.9 GB
②TOSHIBA EXCERIA 32GB → 31.0 GB
③Transecend 32GB → 30.04 GB
となりました。
オリジナルのSDカードとして②を使用しており、②から①と②には無事書き込みができましたが、③では書き込み自体は完了するものの起動ができませんでした。
ということは、新たにラズパイ起動用のSDカードを作る場合、手持ちのカードの中で一番容量が小さいものを選んでおけば、そのバックアップの復元に使えるSDカードの選択肢が増えて便利ということが言えるかと思います。
#windowsでは?
下記のエントリを参考に行うと、簡単でなおかつうまくいくようです。
https://qiita.com/henjiganai/items/fac178aef2a03ffe83fc