Raspberry PiのmicroSDバックアップとリストア for Mac
はじめに
Raspberry Piであれこれ遊び始める前に、特に初期において、Raspberry Piの入ったmicroSDのイメージを自由にバックアップ・リストアする方法を確立しておくことは重要だ。
設定ミスでOSをぶっ壊しそうだし。microSDもいつ壊れるか分からないし。今後似たような構成のOSイメージを作る時にバックアップを活用して省力化できそうだし。
ということで、ここではMacを母艦とした、microSDバックアップとリストアの方法についてまとめてみた。
結論から言えば、バックアップとリストアの方法は以下のとおり。
- バックアップはddコマンドを利用
- リストアは以下のいずれか
- Etcherというソフトを利用(推奨)
- ddコマンドを利用
付記:ディスクユーティリティによるバックアップについて
Mac標準のツールであるディスクユーティリティによるmicroSDのバックアップ方法について記述されているページがあるが、結論から言えば、Raspberry Piのバックアップにおいては、これは上手く行かない。少なくとも自分の場合はダメだった。FAT部分だけしかバックアップされないためだと思われる。
準備
自分のMacにおいて、microSDがどのデバイス(/dev/diskN)にあたるかを確認することが必要だ。以下、その手順。
Terminalで以下のコマンドを実行する。
$ diskutil list
上記コマンドの実行結果から、microSDのデバイスを特定する。環境によって結果は異なる。サイズとパーティションの状況が判断基準か。たとえば、以下の場合は、/dev/disk4 がmicroSD(8GB)だ。
/dev/disk0 (internal): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme 24.0 GB disk0 1: EFI EFI 314.6 MB disk0s1 2: Apple_CoreStorage Macintosh HD 23.6 GB disk0s2 3: Apple_Boot Boot OS X 134.2 MB disk0s3 /dev/disk1 (internal, physical): (略) /dev/disk2 (internal, virtual): (略) /dev/disk3 (external, physical): (略) /dev/disk4 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *7.9 GB disk4 1: Windows_FAT_32 boot 43.5 MB disk4s1 2: Linux 7.9 GB disk4s2
バックアップ
現在のところ、バックアップはddコマンド利用一択。以下、その手順。
- Terminalを立ち上げる
- microSDのアンマウント
$ diskutil umountDisk /dev/diskN (Nは自分の環境に読み替えること) Unmount of all volumes on disk4 was successful
$ sudo dd if=/dev/diskN of=raspi-init.img bs=1m (Nは自分の環境に読み替えること)
- コマンドが終われば、バックアップも終了。microSDを抜いてお好きなように。
なお、このコマンドの終了までには相当時間がかかることを覚悟しておいたほうがよい。自分の環境では、8GBのバックアップで50分ほどかかった。
リストア
リストアの方法として以下、2通りの方法を紹介したい。
Etcherによるリストア
Etcher( https://etcher.io/ )をインストールした環境であれば、その利用を勧めたい。リストアの速度が後述のddに比べて、圧倒的に速いからだ。 このツールは、Raspberry PiのOSイメージをmicroSDに書き込むときにも便利なので、インストールしてもよいのではないか。難しいことは何もないが一応、以下手順を。
- Macにリストア先のmicroSDを挿す
- Etcherを起動し、"Select image"から、ddでバックアップしたイメージを選択する
- 真ん中で選択されたドライブがリストア先のmicroSDであることを確認し、"Flash!"ボタンを押下する。
- microSDへの書き込みが始まるので、待つ。
- microSDを取り外す前に、アンマウントすることをお忘れなく。
$ diskutil umountDisk /dev/diskN
Etcherによるリストアは、自分の環境では、8GBのmicroSDで15分程度で終了した。
ddコマンドによるリストア
ddコマンドによるリストアは時間がかかるが、おそらくどのMacでも追加アプリなしに利用できるという点において、メリットがあろう。以下、その手順。
$ diskutil umountDisk /dev/disk4 Unmount of all volumes on disk4 was successful
- ddコマンドでリストアを行う。 以下は、カレントディレクトリの raspi-init.img がddでバックアップされたファイルである場合。
$ sudo dd if=./raspi-init.img of=/dev/diskN bs=1m
ddコマンドによるリストアは、自分の環境では、8GBのmicroSDで50分程度かかった。
以上