2014年6月4日水曜日

Jetson TK1がやってきた!〜購入・OSインストール編〜


NVIDIAが発売した世界初の組み込みスーパーコンピュータ"Jetson TK1"

購入したので設定やらインストールやらをメモ代わりに書いてみます.
ボード本体です.


ケースは自作しました.NVIDIAカーラーでいい感じ.

ダウンロードするものもろもろはこちらから.

OSはARMベースのLinux for Tegraです.
インストールは↓にあるQuick Start Guideでできます.

Linuxの動くホストPCが必要ですが,自分はUbuntu12.04でやりました.
以下コマンドをつらつらと.
sudo tar xpf Tegra124_Linux_R19.2.0_armhf.tbz2
cd Linux_for_Tegra/rootfs
sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R19.2.0_armhf.tbz2
cd ../
sudo ./apply_binaries.sh

今回は内蔵のeMMC(16GB)にインストールします.
ホストPCとJetsonを付属のUSBケーブルで繋ぎます.
ここでJetsonをリカバリーモードに(RECOVORYを長押ししながらRESETボタンを押す)
そして書き込むコマンド."mmcblk0p1"の部分を変えるとHDDやSDカードにもインストールできます.(flash.shのなかに記述があります)
sudo ./flash.sh -S 8GiB jetson-tk1 mmcblk0p1
上記コマンドを打つと書き込みに約30分ぐらいかかります.

Guideには書き込み終了後にRebootされると書いてありましたが,自分の場合しなかったので手動でリブート.

ubuntuのログイン画面が立ち上がります.
user: ubuntu
pass: ubuntu
になっています.このへんは後で変更しましょう.ただし,変更は慎重に...

あとは,ifconfig でIPの固定をします.
sudo ifconfig eth0 <ip address> netmask <netmask> up
ex) sudo ifconfig eth0 192.168.0.111 netmask 255.255.255.0 up
こんな感じです.

で,今回eMMCにインストールしたので容量が不安ということで,SSDをマウントします.SATAでつなぎました.SSDのフォーマット時にラベルを付けておくとマウントするときの記述が楽になります.
起動時にマウントするようにするには/etc/fstabに書き加えます.
sudo vim /etc/fstab
   LABEL=<label name> /<mount name> <data format> defaults,2 0
   ex) LABEL=data /data ext4 defaults,2 0

再起動してマウントできたらそのディレクトリの権限をchownで変更しておきましょう.


次にCUDAのToolkitを入れます.
ちなみにディベロッパー登録しないとダウンロード出来ないかもです.

sudo dpkg -i cuda-repo-l4t-r19.2_6.0-42_armhf.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-6-0

.bashrcにcuda-6.0のPATHを記述します.
sudo vim .bashrc
   export PATH=/usr/local/cuda-6.0/bin:$PATH
   export LD_LIBRARY_PATH=/usr/local/cuda-6.0/lib:$LD_LIBRARY_PATH
あと,nvcc.profileにはcommon/incのパスを通してあげます.
sudo vim /usr/local/cuda-6.0/bin/nvcc.profile
   INCLUDEのところに
   “-I$(TOP)/samples/common/inc"
   を追加.
これでnvccコマンドが普通に使えるようになるはずです.

CUDAのサンプルはRead Onlyですが,下記コマンドでいじれるやつを任意の場所に作れます.

cuda-install-samples-6.0.sh <target dir>

cuda-6.0にパスが通っていればスクリプトが起動します.
で,makeしてやればOK.


次にOpenCV

sudo dpkg -i libopencv4tegra_2.4.8.2_armhf.deb
sudo dpkg -i libopencv4tegra-dev_2.4.8.2_armhf.deb

で完了.ヘッダとライブラリが入ります.
サンプルプログラムとかは普通にopencvダウンロードしてついてくるものや,cookbookなどから取ってこれます.

以上,こんな感じでJetsonでCUDAやらOpenCVやらが動きます.

全体的にコンパイルするときにもろもろのインクルードやらライブラリやらへの依存関係が面倒ですね.makefile書くのをおすすめします.
いままでROSに頼りきっていたことがわかりました...笑

あと,計算速度とかはやはり192コアなので微妙ですが,組み込みなのでご愛嬌.ゲーミングマシーンのほうが処理能力は数段高いです...


てことで,なにかミスってるところとかあればコメントしてくれると嬉しいです.


ではでは(・∀・)ノ


<追記>
コメントを見て気づきましたがOSはpre-installでしたね...
でも勉強になったから良し!笑