Windows環境では、Rapberry PIのSDカードイメージをWin32DiskImagerで読み込んで、別のSDカードに書き込むと、SDカードを複製することができる。これが一般的なラズパイイメージのバックアップ・複製方法だ。
けれども、コピー先のSDカードの容量が小さいと、書き込むことができない。しかも、同じサイズ表示のSDカードでもメーカーやロットによってサイズが違うことがあるからしばしば困ってしまう。
そんなときの解決法がこれだ。
結論
- DD for Windowsを使うか、Linuxのddを使う。
- その前に以下のように、いくつかの儀式を行う。
Win32DiskImagerを使わない
まず、広く使われているWin32DiskImagerは、サイズが小さいと、書き込み前にエラーダイアログを出力して書いてくれない。
だから、Win32DiskImagerは、使わない。
最初からRaspbianがインストールされているSDカードも市販されている
パーティションサイズを調整する。
イメージサイズ内のパーティションサイズを小さめにする。
そのためには、GParted (GNOME Partition Editor)を使って、読み込み元のパーティションサイズを変更する。末尾のパーティションをリサイズして、空き領域を作ればよい。
Win32DiskImagerやddなどでイメージを読み出すと、イメージサイズはSDカードのサイズによって決まるが、末尾のパーティション空き領域は書き込めなくてもよい。
DD for Windowsを使う。
Windows環境からの書き込みには、シリコンリナックスさんの公開しているDD for Windowsを使う。↓
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
DD for Windowsは、書き込み先サイズが小さくても、警告を出すだけで最後まで頑張ってくれる。その結果、小さめのSDカードの書き込みに成功する。
Linuxならイメージファイルをtruncateしてからddで書き込む。
Linux環境からの書き込みには、truncateコマンドでイメージファイルの末尾をカットしてからddで書き込む。詳しくは↓
http://raspberrypi.stackexchange.com/questions/7177/image-of-a-16gb-card-containing-unpartitioned-space-at-the-end-truncating-possi
だれも買いそうにない関連商品を見つけた。順に、
- 超高級SDカード
- SDカード複製機
- SDカード二枚刺しできるカードリーダライタ