Mac Book Pro で Jetson TX2 のセットアップ

2018年2月現在のセットアップ方法を記録しておきます。

## 前提

今回セットアップするのは「 NVidia Jetson TX2 Developer Kit 」です。スペックは以下の通り。
![](https://i.imgur.com/T8TrSXQ.png)
（[from 組み込みシステムの開発者キットとモジュール | NVIDIA Jetson|NVIDIA](http://www.nvidia.co.jp/object/embedded-systems-dev-kits-modules-jp.html)）

セットアップのために用意するホスト PC は「 MacBook Pro (Retina, 15-inch, Mid 2014) 」です。
こちらのスペックは以下の通り。

![](https://i.imgur.com/eOfyw76.png)

主に、以下の記事を参考にしながら Jetson tx2 をセットアップしていきます。

* [JetPack install from an Ubuntu VM host on a Mac](https://devtalk.nvidia.com/default/topic/1023934/jetson-tx1/jetpack-install-from-an-ubuntu-vm-host-on-a-mac/)
* [jetson TX2 のセットアップ](http://ossyaritoori.hatenablog.com/entry/2017/11/24/jetson_TX2_%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)
* [JetsonTX2初期セットアップ(Jetpack)からサンプルのコンパイルまでの手順](https://qiita.com/akrian/items/54c321bfa95d8eaef17d)
* [MacにVirtualBoxとUbuntuをインスールしてみた](http://www.morinao-freelan.com/entry/2016/02/26/Mac%E3%81%ABVirtualBox%E3%81%A8Ubuntu%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F)

## 0. 準備

* Jetson TX2 Developer Kit に入っているもの（で今回使うもの）
    * Jetson TX2
    * 電源アダプタ
    * 電源コード
    * Wifi アンテナ
    * USB-MicroUSB ケーブル

* 自分で準備するもの
    * USB Hub (Type-A)
    * USB キーボード
    * USB マウス
    * ディスプレイ
    * HDMI ケーブル（Jetson TX2 は HDMI 出力しかできないので注意）
    * Wifi 環境
    * ３ ピンプラグ用電源タップ
    * JetPack インストール用 Host PC (Mac Book Pro)
    
## 1. 必要なコードやデバイスを接続して電源を入れる

Jetson TX2 に USB Hub、USB キーボード、USB マウス、HDMI ケーブル、ディスプレイ、電源アダプタなどを接続していきます。こんな感じに。

![](https://i.imgur.com/XsE3DVH.jpg)

デバイスの端子の反対側に 4 つボタンが並んでいるのがわかります。

![](https://i.imgur.com/gbidVS9.jpg)

それぞれ以下のような役割です。

| RS | VOL | REC | POWER BTN |
| --- | --- | --- | --- |
| リセット | ボリューム | リカバリ | 電源 |

そのうちの一番右側にある電源ボタンを押して、電源を入れます。


## 2. 初期設定と起動

電源を入れると、LEDが点灯しはじめ、接続しているディスプレイにコンソールが起動します。
パスワードを聞かれるので、デフォルトの「nvidia」を入力。
そして、以下のコマンドを入力。

```shell
$ cd NVIDIA-INSTALLER
$ sudo ./installer.sh
$ sudo reboot
```

最後のリブートコマンドを打つと、Ubuntu の GUI が立ち上がり、これで Ubuntu インスタンスとして機能します。
ただ、ここまでだと GPU を利用するためのツールや API がないため、それらがまるっとパッケージになっている JetPack をインストールしていきます。

## 3. Jetson をリカバリモードにし、 Host PC に接続しておく

このあとやる VM の設定時に、 USB で Jetson を認識させる必要があるので、先に USB で Jetson と Host PC
 を接続しておきます。

1. Jetson 本体の電源を落とし、電源アダプタも抜く。
2. USB-MicroUSB ケーブルを接続する。（USB → Host PC, MicroUSB → Jetson） 
3. 電源アダプタを挿し、リカバリーモードにするためボタン操作を行う。
    1. 電源ボタンを押して離す。
    2. リカバリーボタンを押しっぱなしにし、
    3. リセットボタンを 2 秒間押したあと、離す。
    4. リカバリーボタンを離す。
    5. そのままにしてディスプレイへの信号入力がなければ、リカバリモードになっています。

![](https://i.imgur.com/PWiFmq4.jpg?1)
（端子に緑の印がついたケーブルが、接続されている USB-MicroUSB ケーブルです。）

## 3 Host PC に VirtualBox で Ubuntu 環境を構築する

[JetPack のインストール手順](http://docs.nvidia.com/jetpack-l4t/index.html#developertools/mobile/jetpack/l4t/3.2rc/jetpack_l4t_install.htm%3FTocPath%3D_____3)によるとインストールには Ubuntu 14.04 or 16.04 が入った Host PC が必要とのこと。手元には Mac Book Pro しかないので、VirtualBox で Ubuntu 16.04 環境を手に入れます。

1. Ubuntu 16.04 のイメージを入手： http://www.ubuntulinux.jp/download/ja-remix
2. [MacにVirtualBoxとUbuntuをインスールしてみた](http://www.morinao-freelan.com/entry/2016/02/26/Mac%E3%81%ABVirtualBox%E3%81%A8Ubuntu%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F) に従って Ubuntu 環境を入手
    * VM 上への Ubuntu のインストールには 1 時間ほどかかりました。。
    * **作成時の Disk Space は 32GB ぐらいに設定**しておくとよいかも。
        * 私は 20GB で作ってしまい、 Disk が足りなくなったので拡張しました。。
        * [VirtualBox環境でのUbuntuのHDD容量変更方法](https://qiita.com/ryokato_eras/items/3b2298f9016a8a002ecd)
    * **VM の設定で USB ポートを割り当て、先ほど接続した Jetson を追加する。**
        * VMの設定画面から「ポート」 > 「USB」のプラスアイコンを押して「NVIDIA Corp.*」を追加する。
        * [USBポートの割当](https://qiita.com/0x0c@github/items/bc2683b00617981e4468#usb%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E5%89%B2%E5%BD%93) を参考
       
## 3. JetPack のインストール

[3.Jetpackをhost側PC(ubuntu)へインストール](https://qiita.com/akrian/items/54c321bfa95d8eaef17d#3jetpack%E3%82%92host%E5%81%B4pcubuntu%E3%81%B8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) を参照しながら手順を進めるとインストールできる。
全体的な流れは、以下のような感じです。

1. Host PC 上の VM Ubuntu で JetPack インストーラをダウンロード。
2. JetPack インストーラを実行。
    * 上記リンクの 3-10 まで実行。
    * 3-10 までいけば Jetson 側に OS が入り、ディスプレイにログイン画面が表示されるはず。
3. Jetson を Host PC と同じ Wifi 環境に接続。
4. Jetoson でターミナルを起動。 `ifconfig` で IP を取得。
5. VM Ubuntu 側インストーラを進め、 上記リンク 4-3 にてその IP を入力。
6. そのままいけばインストール完了。

以下に注意点を書くので、実行前にご一読ください。

#### 注意点

* この時点での Jetpack 最新バージョンは `JetPack-L4T-3.2-linux-x64-b157.run` でした。
* **言語とロケールが日本語だと JetPack インストール時にエラーが出る**ので、英語に設定。
* Full でインストールする場合は、上述の通り **VM の Disk Space が 30GB ぐらい必要**です。
* `sudo ./JetPack-L4T-3.2-linux-x64-b157.run` でインストールを実行すると以下のエラーが出るので、 `sudo` なしで実行。

    ```
    Error: Please run JetPack as a non-elevated user: when root access is needed, the installer will prompt you
    ```
* Jetson 側で取得する IP は、 Host PC と同じ IP アドレスの範囲のもの。
    * Host PC でも `ifconfig` を実行し、 IP アドレスの範囲を確認する必要があります。
    * 私の場合は、 Jetson 側の `wlan0` のアドレスが Host PC と同じ範囲でした。

## 4. インストールが完了していることを確認する

以下のコマンドを実行すると、煙玉のシミュレーションが動きます。

```shell
$ cd ~/NVIDIA_CUDA-8.0_Samples/bin/aarch64/linux/release
$ ./smokeParticles
```

お疲れ様でした。