目的

今までカーナビで使用してきた8GBのSDカードを32GBの大容量SDカードに移行します

移行先SDカードは今回もドラレコでも使っているコスパの良い下記のmicroSDカード(Samsung EVO Plusシリーズ)の32GBを使いました

microSDの方がアダプタで色んな機器に応用しやすいので私は基本的にmicroSDを買っていますが、下記のSDカードでもOK

解決方法

ddコマンド

やり方は色々ありますが、今回はmac bookで行ったのでddコマンドでSDカードイメージを作成する方法にすることにしました

ディスクイメージであればブロック単位で完全な複製(ぶっこ抜き)が作れるので、手動コピーでは対応できないセクタ情報もぶっこ抜いて完全な複製ができる...はず

コピー元SDカードの名前を調べる

dfコマンドでまず差込前のディスク情報を見ておきます

df
Filesystem     512-blocks      Used Available Capacity iused      ifree %iused  Mounted on
/dev/disk1s1s1  489825072  29909808  89368344    26%  553757 2448571603    0%   /
devfs                 382       382         0   100%     662          0  100%   /dev
/dev/disk1s4    489825072  20973864  89368344    20%      11 2449125349    0%   /System/Volumes/VM
/dev/disk1s2    489825072    761440  89368344     1%    1336 2449124024    0%   /System/Volumes/Preboot
/dev/disk1s6    489825072       984  89368344     1%      17 2449125343    0%   /System/Volumes/Update
/dev/disk1s5    489825072 344329400  89368344    80% 1731438 2447393922    0%   /System/Volumes/Data
map auto_home           0         0         0   100%       0          0  100%   /System/Volumes/Data/home

次に移行元SDカードを差し込んでから再度dfします

df
Filesystem     512-blocks      Used Available Capacity iused      ifree %iused  Mounted on
/dev/disk1s1s1  489825072  29909808  89379760    26%  553757 2448571603    0%   /
devfs                 385       385         0   100%     666          0  100%   /dev
/dev/disk1s4    489825072  20973864  89379760    20%      11 2449125349    0%   /System/Volumes/VM
/dev/disk1s2    489825072    761440  89379760     1%    1336 2449124024    0%   /System/Volumes/Preboot
/dev/disk1s6    489825072       984  89379760     1%      17 2449125343    0%   /System/Volumes/Update
/dev/disk1s5    489825072 344317984  89379760    80% 1731444 2447393916    0%   /System/Volumes/Data
map auto_home           0         0         0   100%       0          0  100%   /System/Volumes/Data/home
/dev/disk2s1     15742976  10236864   5506112    66%       0          0  100%   /Volumes/NO NAME

一番下に/dev/disk2s1が追加されたので、今回の移行元SDカードは/dev/disk2っぽいですね
※環境によってデバイス名は異なるので面倒でも必ず対象のSDカードを特定したほうが良いです

コピー元SDカードをアンマウントする

名前が特定できたらアンマウントします
アンマウントしないとddコマンド時にエラーになった...はず

diskutil umountDisk /dev/disk2

コピー元SDカードのディスクイメージを作成する

ddコマンドでSDカードのブロック情報をぶっこ抜きます

cd ~
sudo dd if=/dev/rdisk2 of=carnavi_sdcard.dmg bs=16m

しばらくするとコマンドが完了してユーザーディレクトリ直下にcarnavi_sdcard.dmgがSDカードと同じくらいの容量になっています

ちなみにbsは1mbにするとかなり時間かかりますので、私は16mbくらいにしてまとめて読み書きしています

また/dev/disk2ではなく/dev/rdisk2になっている理由は完全バックアップなので先頭からのシーケンシャルアクセスで良いからです
別にrをつけなくても大丈夫だと思いますが、ランダムアクセスになって効率が悪い=遅いらしいです

コピー先SDカードにディスクイメージを書き込む

コピー元のディスクイメージが作成できたら、コピー元SDカードを取り出して、移行先のSDカードを差し込みます

ちなみに移行先SDカードの中身はディスクイメージ書き込み時に完全に消滅します

コピー先SDカードを差し込んだら、まずはアンマウントします

diskutil umountDisk /dev/disk2

で、ddコマンドで書き込みます

cd ~
sudo dd if=carnavi_sdcard.dmg of=/dev/rdisk2 bs=16m

コマンドが完了したら複製完了

カーナビに複製後のSDカードを差し込んで動作確認する

パーティション情報も含めて複製されてるので特に問題なく再生できると思います