飲んだくれの記

方向音痴で熱しやすく冷めやすい、酒とラーメンの大好きなポンコツが綴る徒然の記。

Raspberry PiのmicroSDバックアップとリストア for Mac

はじめに

Raspberry Piであれこれ遊び始める前に、特に初期において、Raspberry Piの入ったmicroSDのイメージを自由にバックアップ・リストアする方法を確立しておくことは重要だ。

設定ミスでOSをぶっ壊しそうだし。microSDもいつ壊れるか分からないし。今後似たような構成のOSイメージを作る時にバックアップを活用して省力化できそうだし。

ということで、ここではMacを母艦とした、microSDバックアップとリストアの方法についてまとめてみた。

結論から言えば、バックアップとリストアの方法は以下のとおり。

  1. バックアップはddコマンドを利用
  2. リストアは以下のいずれか
    • Etcherというソフトを利用(推奨)
    • ddコマンドを利用
付記:ディスクユーティリティによるバックアップについて

Mac標準のツールであるディスクユーティリティによるmicroSDのバックアップ方法について記述されているページがあるが、結論から言えば、Raspberry Piのバックアップにおいては、これは上手く行かない。少なくとも自分の場合はダメだった。FAT部分だけしかバックアップされないためだと思われる。

準備

自分のMacにおいて、microSDがどのデバイス(/dev/diskN)にあたるかを確認することが必要だ。以下、その手順。

  • microSDMacに接続する

  • 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
  • ddコマンドでmicroSDのディスクイメージを指定ファイルに書き出す(以下の例では、カレントディレクトリの raspi-init.img に書き出す)
$ 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でバックアップしたイメージを選択する f:id:JEANA:20180319235200p:plain
  • 真ん中で選択されたドライブがリストア先のmicroSDであることを確認し、"Flash!"ボタンを押下する。 f:id:JEANA:20180319235211p:plain
  • microSDへの書き込みが始まるので、待つ。 f:id:JEANA:20180319235215p:plain
  • 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分程度かかった。

以上