やまものブログ

メモ書きブログです (^_^;A

SDHCカードの丸ごとコピー

Ultra96ボードに付いてくるSDHCカードをバックアップ&コピーした手順のメモです。

母艦PCは 18.04.1 LTS (Bionic Beaver) です。

Ultra96にはSDHCカードが付属していて、これでブートすると Wifi経由で 192.168.2.1に接続してサンプルプロジェクトを動かせます。
# 動いているOSはよく耳にするPeta Linuxか? このあたりの知識は近いうちに…

SDHCカードを使うと、母艦PCに繋がなくても Ultra96 を立ち上げられます。
そこで、心配症の私は、あれこれいじっている間に付属SDHCカードを誤って壊してしまうとか、その類の事故が無かったとしても、経年劣化で読み書きできなくなるのが心配なので、次のチュートリアルへ進む前にSDHCカードをバックアップしました。

付属SDHCカードを丸ごとバックアップ

付属のSDHCをPCにUSB3.0対応カードリーダで挿します。カードリーダは上海問屋 DN-915045です。

$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
: 中略
/dev/sdd1 vfat 1046516 19360 1027156 2% /media/myaccount/boot
/dev/sdd2 ext4 6867972 1623688 4872368 25% /media/myaccount/16874448-8ca9-4131-9c97-8aa234857bbd

このカードには vfat と ext4パーティションがあるようです。
バイス/dev/sdd であることも分かります。
ファイル名ultra96img.ddでバックアップをとりました。

$ sudo dd if=/dev/sdd of=/home/myaccount/work2/SDHC/ultra96img.dd

5分程度でバックアップを取れました。


別のSDHCカードへのリストア
ハマったのは書き込む前の umount です。後述の通り、umountしないと失敗します。理由は分かりませんが。

付属のSDHCは取り外して、別のSDHC(上海問屋16GB (Class10) DNF-TSD16384C10)をカードリーダで接続します

$ df -T
: 中略
/dev/sdd1 vfat 15340896 5656 15335240 1% /media/myaccount/SDHC16GB

バイスのパス /dev/sdd を確認します。今回は書き込みなので、間違えると悲惨なことになるので慎重に(汗)

アンマウントします。

$ sudo umount /media/myaccount/SDHC16GB

書き込みの時間を計りたかったので time をつけています。

$ time sudo dd if=/home/myaccount/work2/SDHC/ultra96img.dd of=/dev/sdd
dd: '/dev/sdd' に書き込み中です: デバイスに空き領域がありません
30720001+0 レコード入力
30720000+0 レコード出力
15728640000 bytes (16 GB, 15 GiB) copied, 3436.84 s, 4.6 MB/s

real 57m20.684s
user 0m16.252s
sys 2m39.908s


書き込みは 1時間もかかった。読み出しとは速度が全然違う。

【追記】別のところで「dd コマンドに bs=1M とか大きいブロックサイズを指定すると速くなるかも」との助言をいただきました。確かにそうかも

この時点で、ファイルブラウザで "boot" と 「7.3GBボリューム」が見えています。
「デバイスに空き領域がありません」は16GB SDHCカードだと出るようですが、Ultra96のブートは出来ました。

dfで確認します。

$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
:中略
/dev/sdd2 ext4 6867972 1623688 4872368 25% /media/myaccount/16874448-8ca9-4131-9c97-8aa234857bbd
/dev/sdd1 vfat 1046516 19360 1027156 2% /media/myaccount/boot


これを使って Ultra96の Wifi接続(192.168.2.1)を無事に確認できました。


リストア操作を以下4つの条件で試しました。試した順番のままで条件がいびつですが。

 #  SDHCサイズ  直前umount  空き領域エラー  Ultra96ブート
 1  16GB  無し  エラーあり  失敗
 2  32GB  あり  エラー無し  成功
 3  16GB  あり  エラーあり  成功
 4  32GB  無し  エラー無し  失敗


umount の有無は結果のブートの成否に直結しているようです。

「デバイスに空き領域がありません」エラーはSDHC容量が理由のようで、無視できそうです。パーティションの Used の容量からはブートだけなら4GBもあれば大丈夫そうですが、作業領域とかファイルの保存も考慮すると16GBくらいあると安全なのでしょうね(憶測)


【おまけ】 SDHCカードのフォーマット
ultra96 で使うSDHCカードvfatフォーマットのようです。
パーティションは必要ならfdiskで変更します。
下記はパーティション/dev/sdd1SDHC16GBという名称でフォーマットするコマンドです。

$ sudo mkfs.vfat -F 32 /dev/sdd1 -n SDHC16GB