巷の情報を描き漁ったところ、raspberry pi の SD カードのバックアップや復元は "dd" コマンドで作成するのが基本様です。
ところが私の環境(Mac OS Sierra 10.12.2)ではどうしても復元ができません。
ディスクのイメージは取り出せている様ですが、SD カードに書き込んでもきちんと書き込めていない様です。
Mac では通常 Ext 形式のファイルの読み書きはできませんが、ユーティリティの "ExitFS for Mac"(試用版あり:Windows 版もあります。) というものを利用すれば、マウントして読み書きできる様になります。
で試したところ、オリジナルの SD カードはちゃんとマウントできるのに、コピーした SD カードはファイルシステムが壊れているということでマウントできません。
さらに調べたところ、"rpi-clone" というものを見つけました。
これは Rasspberry pi で動作中のシステムそのものを丸ごとコピーしてくれるアプリです。
Raspberry pi の USB に SD カードリーダーを差し込めば、そこにセットされた SD カードに現在動作しているシステムをそのままクローニングしてくれます。
で、早速試しました。
ダウンロードなどは上記のサイトから行ってそのまま適当なディレクトリにコピーするだけです。
私は Mac でダウンロードし、raspberry pi から nfs でマウントしてあるディレクトリに置いて、そのまま raspberry pi にコピー。
その後に nfs はアンマウントしておかないと、nfs マウントした先までコピーされてしまう(コピー中のファイルを眺めていて気がついて、慌てて中止してやり直しました(汗))ので注意してください。
[2019/4/10 追記]
GITから直接ダウンロードする方が早そうです。
ラズパイで、ワークディレクトリにダウンロードされます。
$ git clone https://github.com/billw2/rpi-clone.git
-v は動作の状況を逐一表示させます。
事前に /dev/ の下を確認し、USBアダプタをつないだ後と比較して、USBアダプタ(クローン先のSDカード)のデバイス名を確認してください。
以下の例ではフォーマット済みのSDカードにコピーするので、イニシャライズして良いか聞いてきています。
何か書き込まれているSDカードの場合、マウントされたディスクの下のディレクトリを消して良いかとかのメッセージが表示されますので、デバイス名を確認して "yes" を入力してください。
pi@raspberrypi:~ $ sudo rpi-clone /dev/sda -f -v
Forcing a partition initialization of destination disk sda
The existing destination disk 'sda' partitions are:
Disk /dev/sda: 15523MB
Partition Table: msdos
Number Start End Size Type File system Flags
1 4.19MB 15523MB 15519MB primary fat32 lba
*** All data on destination disk sda will be overwritten! ***
Do you want to initialize the destination disk /dev/sda? (yes/no): yes
ここで “yes” を入力
Imaging the partition structure, copying 1187 megabytes...
この後しばらく反応がありませんが、準備が終わると以下のメッセージが表示されます。
1187+0 レコード入力
1187+0 レコード出力
1244659712 バイト (1.2 GB) コピーされました、 187.358 秒、 6.6 MB/秒
Running fsck on /dev/sda1...
Sizing partition 2 (root partition) to use all SD card space...
mke2fs 1.42.12 (29-Aug-2014)
Found a dos partition table in /dev/sda2
Creating filesystem with 3501982 4k blocks and 876544 inodes
Filesystem UUID: 7c3669f7-e817-4e9f-83dd-75624f77ce90
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
/dev/sda is initialized and resized. Its partitions are:
Disk /dev/sda: 15523MB
Partition Table: msdos
Number Start End Size Type File system Flags
1 4.19MB 1179MB 1175MB primary fat32 lba
2 1179MB 15523MB 14344MB primary ext4
e2label: Attempt to read block from filesystem resulted in short read while trying to open /dev/mmcblk0p2
Couldn't find valid filesystem superblock.
Your booted /dev/mmcblk0p2 rootfs existing label:
You may enter a label for the destination rootfs /dev/sda2:
ここでは単にリターンした方が良さそうです。
======= Clone Summary ========
Clone mode : rsync all files to sda root file system
Clone destination disk : sda
Clone destination rootfs : /dev/sda2 (no label) on /mnt/clone
Clone destination bootfs : /dev/sda1 on /mnt/clone/boot
Verbose mode : on
===============================
Final check, is it Ok to proceed with the clone (yes/no)?: yes
最終確認に “yes” を入力すれば、コピーを開始して、コピーしているファイルがズラーっと表示されます。
私は長時間なんの反応もないのは嫌なので、表示させていますが、表示がうざったいという人は "-v" のオプションは指定しないでください。
=> Mounting /dev/sda2 (no label) on /mnt/clone
=> Mounting /dev/sda1 on /mnt/clone/boot
===============================
Starting the filesystem rsync to sda
(This may take several minutes)...sending incremental file list
./
LightStatus
bin/
bin/bash
bin/bunzip2
これで無事にコピーが作成され、ちゃんと起動させることが出来ました。
dd でのバックアップで悩んでいる方は試す価値があるはずです。
ただ何故か、Noobs でインストールした SD カードは上手くクローニング出来ていません。
普通に jessie のディスクイメージからインストールした SD カードはクローニング出来てます。
ただし、Raspberry pi 3 で作成する分には問題ありませんが、Raspberry pi Zero で作成しようとすると、途中でハングアップします。
処理負荷に耐えられないのでしょう。
ところが私の環境(Mac OS Sierra 10.12.2)ではどうしても復元ができません。
ディスクのイメージは取り出せている様ですが、SD カードに書き込んでもきちんと書き込めていない様です。
Mac では通常 Ext 形式のファイルの読み書きはできませんが、ユーティリティの "ExitFS for Mac"(試用版あり:Windows 版もあります。) というものを利用すれば、マウントして読み書きできる様になります。
で試したところ、オリジナルの SD カードはちゃんとマウントできるのに、コピーした SD カードはファイルシステムが壊れているということでマウントできません。
さらに調べたところ、"rpi-clone" というものを見つけました。
これは Rasspberry pi で動作中のシステムそのものを丸ごとコピーしてくれるアプリです。
Raspberry pi の USB に SD カードリーダーを差し込めば、そこにセットされた SD カードに現在動作しているシステムをそのままクローニングしてくれます。
で、早速試しました。
ダウンロードなどは上記のサイトから行ってそのまま適当なディレクトリにコピーするだけです。
私は Mac でダウンロードし、raspberry pi から nfs でマウントしてあるディレクトリに置いて、そのまま raspberry pi にコピー。
その後に nfs はアンマウントしておかないと、nfs マウントした先までコピーされてしまう(コピー中のファイルを眺めていて気がついて、慌てて中止してやり直しました(汗))ので注意してください。
[2019/4/10 追記]
GITから直接ダウンロードする方が早そうです。
ラズパイで、ワークディレクトリにダウンロードされます。
$ git clone https://github.com/billw2/rpi-clone.git
rpi-clone の使い方
オプションの -f はコピー先の SD カードをフォーマットしてくれます。-v は動作の状況を逐一表示させます。
事前に /dev/ の下を確認し、USBアダプタをつないだ後と比較して、USBアダプタ(クローン先のSDカード)のデバイス名を確認してください。
以下の例ではフォーマット済みのSDカードにコピーするので、イニシャライズして良いか聞いてきています。
何か書き込まれているSDカードの場合、マウントされたディスクの下のディレクトリを消して良いかとかのメッセージが表示されますので、デバイス名を確認して "yes" を入力してください。
pi@raspberrypi:~ $ sudo rpi-clone /dev/sda -f -v
Forcing a partition initialization of destination disk sda
The existing destination disk 'sda' partitions are:
Disk /dev/sda: 15523MB
Partition Table: msdos
Number Start End Size Type File system Flags
1 4.19MB 15523MB 15519MB primary fat32 lba
*** All data on destination disk sda will be overwritten! ***
Do you want to initialize the destination disk /dev/sda? (yes/no): yes
ここで “yes” を入力
Imaging the partition structure, copying 1187 megabytes...
この後しばらく反応がありませんが、準備が終わると以下のメッセージが表示されます。
1187+0 レコード入力
1187+0 レコード出力
1244659712 バイト (1.2 GB) コピーされました、 187.358 秒、 6.6 MB/秒
Running fsck on /dev/sda1...
Sizing partition 2 (root partition) to use all SD card space...
mke2fs 1.42.12 (29-Aug-2014)
Found a dos partition table in /dev/sda2
Creating filesystem with 3501982 4k blocks and 876544 inodes
Filesystem UUID: 7c3669f7-e817-4e9f-83dd-75624f77ce90
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
/dev/sda is initialized and resized. Its partitions are:
Disk /dev/sda: 15523MB
Partition Table: msdos
Number Start End Size Type File system Flags
1 4.19MB 1179MB 1175MB primary fat32 lba
2 1179MB 15523MB 14344MB primary ext4
e2label: Attempt to read block from filesystem resulted in short read while trying to open /dev/mmcblk0p2
Couldn't find valid filesystem superblock.
Your booted /dev/mmcblk0p2 rootfs existing label:
You may enter a label for the destination rootfs /dev/sda2:
ここでは単にリターンした方が良さそうです。
======= Clone Summary ========
Clone mode : rsync all files to sda root file system
Clone destination disk : sda
Clone destination rootfs : /dev/sda2 (no label) on /mnt/clone
Clone destination bootfs : /dev/sda1 on /mnt/clone/boot
Verbose mode : on
===============================
Final check, is it Ok to proceed with the clone (yes/no)?: yes
最終確認に “yes” を入力すれば、コピーを開始して、コピーしているファイルがズラーっと表示されます。
私は長時間なんの反応もないのは嫌なので、表示させていますが、表示がうざったいという人は "-v" のオプションは指定しないでください。
=> Mounting /dev/sda2 (no label) on /mnt/clone
=> Mounting /dev/sda1 on /mnt/clone/boot
===============================
Starting the filesystem rsync to sda
(This may take several minutes)...sending incremental file list
./
LightStatus
bin/
bin/bash
bin/bunzip2
これで無事にコピーが作成され、ちゃんと起動させることが出来ました。
dd でのバックアップで悩んでいる方は試す価値があるはずです。
ただ何故か、Noobs でインストールした SD カードは上手くクローニング出来ていません。
普通に jessie のディスクイメージからインストールした SD カードはクローニング出来てます。
ただし、Raspberry pi 3 で作成する分には問題ありませんが、Raspberry pi Zero で作成しようとすると、途中でハングアップします。
処理負荷に耐えられないのでしょう。
コメント
コメントを投稿