Jetson NanoのSDカードを丸ごとハードコピー（イメージ化）する方法

![IMG_4820.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/1cefa37c-ded0-85ff-8e27-57e7962fa5cd.jpeg)

# Jetson NanoのSDカードの中身を丸々コピーしたい
　丹精込めて作り上げたJetson Nanoの環境、SDカードごと丸々コピーしたくなったりしますね。

　SDカードをイメージ化する方法自体は[JetCardのGitHubリポジトリ](https://github.com/NVIDIA-AI-IOT/jetcard)のREADMEに書いてありますので、これを参考にすれば良いのですが、例えば32GBのSDカードをそのままイメージ化してしまうと、32GBのSDカードにコピーするときSDカードの微妙な容量差によりコピーできない場合があったりします。

　また、イメージ自体の容量は、できれば削減したいのが人情です。そこで、ここでは容量を削減しつつイメージ化するテクニックを紹介します。

　ちなみに、この記事は昔Raspberry Piで実施した方法をJetson Nanoで実施したものとなります。
[MacでRaspberry PiのSDカードをハードコピー（バックアップ）](https://karaage.hatenadiary.jp/entry/2015/06/09/080000)

# 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を接続します。

![IMG_4820.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/1cefa37c-ded0-85ff-8e27-57e7962fa5cd.jpeg)

## SDカードのパーテーションの縮小（リサイズ）
　コピー元のSDカードAのサイズを削減するため、パーティションを縮小（リサイズ）します。パーティーションのリサイズには、GUIで操作できるgpartedを使用します。

　以下コマンドでインストールできます。

```sh
$ sudo apt-get update
$ sudo apt-get install gparted
```

　gpartedは以下コマンドで起動します。起動する前にJetson NanoにSDカードリーダーとSDカードAを接続しておいて下さい。

```sh
$ sudo gparted
```

　右上のボタンから、SDカードのデバイスを選択します。 `/dev/sdb`の場合が多いと思います。容量で見分けるか、SDカード接続前後で確かめて下さい（SDカード接続後に増えたデバイスが対象のデバイスです）。
![Screenshot from 2019-07-05 22-36-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/f4bfa6e4-e9a3-5573-cf4b-591743dbc470.png)

　`dev/sdb1`を右クリックして、Resizeを選択してからカードを適度にリサイズします。1GB程度は容量にマージンがあった方が良いと思います。
![Screenshot from 2019-07-05 22-37-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/a2018596-cc19-4019-5281-541ef1d6ff69.png)

　Edit -> Apply All Operationsでパーティション操作を確定します。
![Screenshot from 2019-07-05 22-37-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/0b4fec5b-fcc7-5cdc-ece0-358312d2a34d.png)

　パーティションがリサイズされます。
![Screenshot from 2019-07-05 22-38-36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/b3fad623-4abb-274b-b42c-ea2f33cba301.png)

　以下で完了です
![Screenshot from 2019-07-05 22-56-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/ddeb7bd2-738a-7e39-0877-13c4232c80a6.png)

## SDカードのイメージ化
　以下コマンドでSDカードAを`jetcard_image.img`というファイル名でイメージ化します。

```sh
$ 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カードのイメージファイルまとめとイメージ書き込み方法](https://qiita.com/karaage0703/items/0583528f1f9c34911a31)

　書き込んだ後は、またGpartedを使って縮小と同じ容量でSDカードCに合わせたサイズにパーティション拡大しましょう（拡大しないと、SDカードに使えない容量が残ったままになってしまいます）。

　方法は、SDカードBでJetson Nanoを起動して、SDカードCをSDカードリーダーでJetson Nanoに接続します。

　その状態で、以下コマンドでgpartedを起動します。

```sh
$ sudo gparted
```

　すると、ダイアログが出るので、OK、Fixの順にクリックします。
　![Screenshot from 2019-07-06 01-08-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/d477f695-f582-9f9e-514a-b0750bd445db.png)

　右上から`/dev/sdb`を選択すると、以下のようになっています。
![Screenshot from 2019-07-06 01-08-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/50ce0b15-000a-22b4-6760-13e9e72ca27b.png)

　`dev/sdb1`を右クリックして、Resizeを選択してからカードのNew Sizeをカード容量の最大まで増やします。
　![Screenshot from 2019-07-06 01-09-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/b20d3fac-f710-9f30-828a-41c5d343723a.png)

　Edit -> Apply All Operationsでパーティション操作を確定します。
　![Screenshot from 2019-07-06 01-10-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81919/f013d553-9294-b06f-5547-c08e170b673e.png)

　これで容量がリサイズされます。

# まとめ
　Jetson NanoのSDカードを丸ごとハードコピーする方法を書きました。結構手間がかかりますが、せっかく作り上げたJetson Nanoの環境、イメージ化してバックアップしておくことをおすすめします。

# 関連記事
[Jetson Nano関係のTIPSまとめ](https://qiita.com/karaage0703/items/b14c249aa33112669ee4)
Jetson Nano関係の情報は、上記ページにまとめていますのでよければ参照下さい。