2016/08/04

Raspberry Piのことはじめ - 03 OSバックアップ

今度こそ開発環境を・・・と思ったが、これまでに作った環境がベースとなり、これ以上は用途によって異なる改造をして、サーバにしたり制御基板にできたらいいな、と思った。
現状をバックアップして、これから何か作るたびにこのベースをSDカードに復元して、ホスト名を変えれば効率が良さそう。

そういうわけで、今回はOSのバックアップ、および復元をまとめた。
(今回は短め)



前提


※今回の操作は、方法を間違うとデータを著しく破損させたりするため、十分注意して自己責任で。
マジで十分注意すること!!


まず、バックアップと復元は同じ容量の SDカード間で行う。
また、バックアップファイルがSDカード容量と同じサイズになるため、あまり容量が多いと色々不便。
そのため、SDカードはRaspbianが推奨する最小の容量である8GBを選択した。


バックアップ、復元の方法


基本的にOSごとにファイルの形式や保存方法は異なる為、ただ中身をコピーしてもRaspbianのバックアップはできない。
MicroSDをまるっとディスクイメージ化しておいて、別のSDにそのイメージを指定して復元する方法をとるのが一般的。


Raspbianのバックアップ


Windowsの場合


Windowsはコマンドなどが独特であまり使用されない代わりに、アプリケーションが充実している。
今回も便利なソフトを拝借してサクッとやってしまおう。

Win32DiskImagerをインストールする。このソフトはバックアップも復元もできる。
なんか起動に管理者権限が必要とのこと。はじめはexeを右クリックして「管理者として実行」を選択すると起動できる。



SDカードを挿したら「Device」の項目にバックアップ元のドライブ名が表示されるので、適切なもの(MicroSD)を選択する。
「Image File」に保存先のパスを入れたら「Read」を押すことができる。
"xxxxxxx.img"とかわかりやすい拡張子をつけておいたほうがいいね。

簡単簡単。

Macの場合


Mac OSXはUnix由来のOSなので、Unix、Linuxなどで実装されたコマンドを使うことができる場合が多い。
今回もそれを使用する。

まず、MicroSDカードのマウント先を確認する。マウント先とは簡単に言うと、MacにSDカードがどんな名前で認識されているか、ということを表す。
まずはSDカードを挿さないで
$ diskutil list
とコマンドを打つ。すると認識されているディスクが表示される。
/dev/disk0 (internal, physical):
...
みたいに表示される。
その後、SDカードを挿してから同様にdiskutilコマンドを打つと、先ほどのリストとの差分でMicroSDのdisk番号がわかる。
/dev/disk0 (internal, physical):
...
/dev/disk1 (external, physical):
...
みたいにexternalが一つ増える。上記の例の場合はdisk1が増えていることがわかる。
これを覚えておく。

ddコマンドでバックアップを取る。MicroaSDのマウント先がdisk1の場合、
$ sudo dd bs=1m if=/dev/rdisk1 of=[保存先のパス]/RaspbianBackup.img
などとコマンドを打つ。ただし、imgファイル名は好きに決めてね。
少し解説すると、ddコマンドは、ifで指定したファイルの内容をofで指定したファイル名でコピーするが、これが0/1レベルのコピーだというなかなか漢らしいコマンド。
bsは一度に処理するブロックのデータサイズ。ifのディスク名が「/dev/disk1」でなく「/dev/rdisk1」なのはアンバッファ・モードという書き込み、読み込みを行うための指定方法で、こっちのほうがコピーが速くなる、くらいに思っておくといい。


Win/Macどちらも同じくらいの時間がかかる。イメージファイルのサイズはMicroSDカードと同じ容量だが、有効なデータが少ないため、圧縮がかなり効く。保存する際にはオススメ。


Raspbianの復元


Windowsの場合


Win32DiskImagerを起動後、復元先のMicroSDカードを挿したら、「Device」の項目にドライブ名が表示される。
「Image File」にバックアップイメージファイルを選択して「Write」を押すと、復元が始まる。

超簡単。

Macの場合


バックアップと同じ方法で、SDカードのマウント先を確認しておく。(ここではdisk1とする)

SDカードに復元するのだから、当然まず、SDカードを挿す。
ただこの状態で書き込もうとすると、ビジーだと言われて書き込めない。OSがロックをかけている。
かといって、FinderでSDカードの取り出しを行うと、認識まで解除されるので書き込めない。

そこで、SDカードを挿した後にdiskutilコマンドでアマウントを行う。
$ diskutil unmountDisk /dev/disk1
ディスク名は適切に書き換えてね。

次にddコマンドを、ifとofをバックアップ時とは逆にして入力する。具体的には
$ sudo dd bs=1m if=[保存先のパス]/RaspbianBackup.img of=/dev/rdisk1
しばらくすると書き込みが終わる。


復元してRaspberry Piで起動し直したところ、普通にGUIでリモートログインができた。
これはいける!!


一見長く見える記事だけど、Win/Macどちらも書いたし説明部分が多い為、やってみるとすぐだと思う。

今回はここまで、次回こそは・・・


0 件のコメント:

コメントを投稿