Jetson NanoのSDカードの中身を丸々コピーしたい
丹精込めて作り上げたJetson Nanoの環境、SDカードごと丸々コピーしたくなったりしますね。
SDカードをイメージ化する方法自体はJetCardのGitHubリポジトリのREADMEに書いてありますので、これを参考にすれば良いのですが、例えば32GBのSDカードをそのままイメージ化してしまうと、32GBのSDカードにコピーするときSDカードの微妙な容量差によりコピーできない場合があったりします。
また、イメージ自体の容量は、できれば削減したいのが人情です。そこで、ここでは容量を削減しつつイメージ化するテクニックを紹介します。
ちなみに、この記事は昔Raspberry Piで実施した方法をJetson Nanoで実施したものとなります。
MacでRaspberry PiのSDカードをハードコピー(バックアップ)
Jetson NanoのSDコピー
必要なもの
Jetson Nanoに加えて、コピー元のSDカードAとSDカードのイメージ化を行うSDカードB、コピー先のSDカードCと、3枚のSDカードが必要です。
- Jetson Nano + 周辺機器(キーボード・マウス・ディスプレイ)
- SDカードリーダー
- SDカードA:コピー元のSDカード
- SDカードB:SDカードのイメージ化を行うSDカード(64GB以上が望ましい)
- SDカードC:コピー先のSDカード
注意点としては、SDカードBは、自身のJetson Nanoのプログラム容量に加えて、イメージの容量も必要なため大きい容量が必要です。64GB程度は必要になると思います。
また、SDカードAとSDカードBの容量が違う方が見分けがつきやすく、操作間違いが減ると思います。
ハードウェアの準備
SDカードBにJetson Nanoのイメージを書き込んで、SDカードBでJetson Nanoを起動します。その後、Jetson NanoにSDカードリーダを使って、SDカードAを接続します。
SDカードのパーテーションの縮小(リサイズ)
コピー元のSDカードAのサイズを削減するため、パーティションを縮小(リサイズ)します。パーティーションのリサイズには、GUIで操作できるgpartedを使用します。
以下コマンドでインストールできます。
$ sudo apt-get update
$ sudo apt-get install gparted
gpartedは以下コマンドで起動します。起動する前にJetson NanoにSDカードリーダーとSDカードAを接続しておいて下さい。
$ sudo gparted
右上のボタンから、SDカードのデバイスを選択します。 /dev/sdb
の場合が多いと思います。容量で見分けるか、SDカード接続前後で確かめて下さい(SDカード接続後に増えたデバイスが対象のデバイスです)。
dev/sdb1
を右クリックして、Resizeを選択してからカードを適度にリサイズします。1GB程度は容量にマージンがあった方が良いと思います。
Edit -> Apply All Operationsでパーティション操作を確定します。
SDカードのイメージ化
以下コマンドでSDカードAをjetcard_image.img
というファイル名でイメージ化します。
$ sudo dd bs=4M if=/dev/sdb of=jetcard_image.img status=progress count=6250
bs=4M
は1度に4MB書き込むことを意味しています。count=6250
で6250x4MB=25000MBのサイズのイメージを作成します。このサイズは、先ほどリサイズした容量以上の値を指定するようにして下さい。何も指定しないと、SDカードのサイズでイメージ化されます。
イメージファイルのSDカードへの書き込み
通常のJetson NanoのSDカード同様、Etcher等を使ってコピー先のSDカードCにイメージを書き込みましょう。
書き込み方の詳細知りたい方は、以下記事のイメージ書き込み方法を参照下さい。
Jetson Nanoで使えるSDカードのイメージファイルまとめとイメージ書き込み方法
書き込んだ後は、またGpartedを使って縮小と同じ容量でSDカードCに合わせたサイズにパーティション拡大しましょう(拡大しないと、SDカードに使えない容量が残ったままになってしまいます)。
方法は、SDカードBでJetson Nanoを起動して、SDカードCをSDカードリーダーでJetson Nanoに接続します。
その状態で、以下コマンドでgpartedを起動します。
$ sudo gparted
すると、ダイアログが出るので、OK、Fixの順にクリックします。
右上から/dev/sdb
を選択すると、以下のようになっています。
dev/sdb1
を右クリックして、Resizeを選択してからカードのNew Sizeをカード容量の最大まで増やします。
Edit -> Apply All Operationsでパーティション操作を確定します。
これで容量がリサイズされます。
まとめ
Jetson NanoのSDカードを丸ごとハードコピーする方法を書きました。結構手間がかかりますが、せっかく作り上げたJetson Nanoの環境、イメージ化してバックアップしておくことをおすすめします。
関連記事
Jetson Nano関係のTIPSまとめ
Jetson Nano関係の情報は、上記ページにまとめていますのでよければ参照下さい。