NVIDIA Jetson TX1にUbuntu環境を構築します。
この記事ではJetPackを使用してUbuntu16.04をJetsonにインストールする方法をまとめます。 

Ubuntu16.04のクリーンインストール

クリーンインストールに際して、方法をいろいろ探していると、大きなことに気づきます。
Ubuntu環境が別でもう一つ必要なんです。
JetsonへのUbuntuのインストールは、USBとEthernetを通して行いますが、それを行うためのアプリケーションが走るのもUbuntuだったんです。。。
というわけで、さらに文献をweb上で漁ります。
はてさて、またパソコンが1台必要なのか?
パソコン増やしてもお金かかるだけなので、増やしたくないです。

普段からMacを愛用している私は、Windowsを使用するときはParallels Desktopを使って仮想化したWindowsを使用しています。
「じゃあ今回も仮想化してやれば・・・」と思っていましたが、複数のサイトに「仮想環境ではうまくいかなかった」との報告が。
今回の導入のためだけに持ってるWindowsマシンにUbuntuをデュアルブートさせるのもめんどくさくてイヤです。
そして仮想環境でうまくいかなかった人たちの環境を見てみると、どの人もParallels以外を使っていました。
「ひょっとしてParallelsならいけるんじゃね?」と思い立ち、とりあえずやってみることに。

というわけで、ここからはParallels DesktopでUbuntu仮想マシンを使ってJetsonへUbuntuを導入する方法を掲載します。
なんらかのPCでUbuntuブートさせている場合でも、手順はほぼ同じです。
むしろParallelsを使うぶん、手順が増えていると言ったほうがいいでしょうか。

ParallelsでUbuntuの仮想マシンを作成し、起動します。(このとき仮想マシンのストレージは32GB以上に設定)
19
Jetsonをリカバリモードで起動します。
IMG_6598
起動手順は次の通りです。
  1. USB micro-BケーブルでJetsonをコンピュータを接続
  2. 「RECOVERY」ボタンを押しっぱなしで「POWER」ボタンを押して電源を投入
  3. 「RECOVERY」ボタンはそのまま押しっぱなしで「RESET」ボタンを一回押す
  4. 「RECOVERY」ボタンをそのまま2秒間押しっぱなし、その後離す

(ここからはParallelsを使用してのUbuntu導入の際に必要な手順です。)
きちんとJetsonをリカバリモードで起動できたら、Parallelsのデバイス接続先の選択画面が現れるので、Ubuntuの仮想マシンに接続します。(デバイス名は「APX」)
21
右側の「Ubuntu Linux」を選択。
また、仮想マシンのネットワークはホストのデフォルトアダプタとブリッジするように設定します。
(Parallelsを使用してのUbuntu導入の手順ここまで)

続いて、Jetsonをネットワークに接続します。
Jetsonを接続するネットワークは、インターネットに接続していないといけません。
Jetsonにインストールするファイルをインターネット経由で落としてくるためです。
Macが接続しているネットワークにJetsonを接続してください。

ここまでできたら、JetsonへのUbuntuのインストーラ「JetPack」を起動します。
JetPackはここからDLできます。(NVIDIAの組み込み開発者向けDLページ)
JetPackをDLできたら、ディレクトリ"/out/nvidia"を生成してください。
そこにDLしたJetPackのファイル「JetPack-L4T-3.0-linux-x64.run」(記事執筆当時)を置きます。

ではここからJetPackのパッケージを解凍して実行し、実際にJetsonへUbuntuをインストールしていきます。

Screenshot from 2017-05-28 11-27-09
ディレクトリ"/opt/nvidia"へ移動。
$ cd /opt/nvidia
続いてそこにある「JetPack-L4T-3.0-linux-x64.run」を実行。
$ ./JetPack-L4T-3.0-linux-x64.run
解凍が終わるとJetPackが起動します。
Screenshot from 2017-05-28 11-27-29
英語環境以外で実行するとどうも警告を出してくるみたいですが、構わず続行。

Screenshot from 2017-05-28 11-27-49Screenshot from 2017-05-28 11-27-39
「Next」で次へと進みます。

Screenshot from 2017-05-28 11-28-02
「開発環境はどれぞや」と聞いてくるので、今回使用するTX1を選択。

Screenshot from 2017-05-28 11-28-16
管理者権限を付与。

 Screenshot from 2017-05-28 11-28-50
「Next」をクリック。
Agreementが出てくるので、すべてにチェックを入れてacceptをクリック。
必要なファイルのDLが始まります。

Screenshot from 2017-05-28 11-57-47
すべてのDLが終わると出てくる「重要なお知らせ」。
確認して「OK」をクリック。

Screenshot from 2017-05-28 11-58-02Screenshot from 2017-05-28 11-59-01
下準備中。
またJetsonへの書き込みは始まっていません。

Screenshot from 2017-05-28 12-10-39
下準備が終了。
「Next」をクリックします。

Screenshot from 2017-05-28 12-10-51
ネットワークのレイアウトを聞いてきます。
今回の場合は上の「ルータ/スイッチ経由でインターネットへ接続」を選択します。

Screenshot from 2017-05-28 12-11-09
Jetsonが接続されているネットワークの口を選択します。
この仮想マシンに接続されているネットワークは1つしかないので、これしか選べませんでしたが・・・

Screenshot from 2017-05-28 12-11-18
それではいよいよ書き込み開始です。
「Next」をクリックすると別のコンソール(XTerm)が開きます。

Screenshot from 2017-05-28 12-11-42
「Jetsonをリカバリモードにして接続して、それを確認してちょうだい」だそうな。
先に接続してあるので、接続の確認を行います。

Screenshot from 2017-05-28 12-12-02
コマンドでUSBデバイスの一覧を表示させます。
$ lsusb
そこに「NVidia Corp.」の表示があれば接続されていることになります。

Screenshot from 2017-05-28 12-12-18Screenshot from 2017-05-28 12-26-39
XTermのウィンドウに戻り、Enter(Macだからreturn)を(優しく)押します。
すると、いよいよ書き込みが始まります。
実はこのとき、一緒にCUDAやOpenCVもJetsonに送り込まれます。

Screenshot from 2017-05-28 13-02-42
20分くらい?(途中でお昼食べたり色々してたのであまり詳しくわかりません)すると、インストールが完了します。

IMG_6652
お昼食べて戻ってきたらインストールが完了しているどころか、待ちくたびれてロック画面になってました。
というわけでログインします。
 ユーザー名:ubuntu
 パスワード:ubuntu
 
IMG_6654
パスワードを入力し、ログイン成功。
というわけで無事、Ubuntu16.04の導入が完了しました。 

参考ページ

今回のUbuntuのクリーンインストールにあたっては、以下のページを参考にしました。
Jetson TX1にUbuntu16.04をインストール(JetPack L4Tを使用)-ロボット研究者の戯言

以上、Jetson TX1にUbuntu16.04を導入する方法をまとめました。
次の記事にChromiumの導入方法をまとめます。