概要
Ubuntu 14.04 LTSのサポート期限切れが迫っている中、既にNVIDIAによるサポートが終了しているJetson TK1をUbuntu 16.04にアップグレードして延命を図ります。nouveauドライバではなく公式ドライバで動いているため、CUDA 6.5も使えるようです。
今年6月の動作報告をほぼなぞっています。
https://devtalk.nvidia.com/default/topic/1036457/jetson-tk1/how-to-successfully-update-jetson-tk1-to-ubuntu-16-04
これまではdo-release-upgradeすると環境が壊れるというのが通説でしたが、xserver-xorg-coreをholdすればうまくいったという報告が今年になって相次いでいます。
手順
- Recovery modeで親機につなぎLinux for Tegra R21.7のインストール
- https://developer.nvidia.com/linux-tegra-r217
- 書き込み時にpartition sizeは必ず広げる
sudo ./flash.sh -S 14580MiB jetson-tk1 mmcblk0p1
- 所要時間は30分程度
- 親機と同じネットワークにつなぎJetpack 2.3.1よりCUDA等のインストール
- https://developer.nvidia.com/embedded/jetpack-2_3_1
- サンプルもインストールしておくと動作確認を容易に行える
- こちらも所要時間は数十分
- 以下実機コンソールにて実行
sudo apt update && sudo apt upgrade
# L4T R21.7でもhold必須
sudo apt-mark hold xserver-xorg-core
# 所要時間数十分かつ途中の選択肢あり
sudo do-release-upgrade
sudo reboot
# Timezone設定
sudo timedatectl set-timezone Asia/Tokyo
# gccは4.8を使う
sudo apt install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8;
sudo update-alternatives --config gcc
# デスクトップ環境をUnityから変更(ログイン画面にて選択可能になる)
sudo apt install gnome-session-flashback
動作確認
homeディレクトリに入っているtegrastats
をsudoつきで実行すると、1秒ごとのCPU, GPU, ハードウェアエンコーダ等の稼働状況を把握できます。
詳細は https://devtalk.nvidia.com/default/topic/935280/jetson-tk1/tegrastats-infomation/
CUDA, VisionWorksなど
Jetpackからhomeディレクトリにインストールした各サンプルを実行
ハードウェアエンコーダ
sudo apt install ffmpeg gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
ffprobe "サンプル.ts"
# ffprobe実行結果をprogram-number, demuxer.video_0XXX, demuxer.audio_0XXXに反映
gst-launch-1.0 filesrc location="サンプル.ts" ! progressreport ! tsdemux program-number=211 name=demuxer demuxer.video_0140 ! video/mpeg ! queue max-size-time=0 max-size-buffers=0 ! mpegvideoparse ! omxmpeg2videodec ! nvvidconv ! omxh264enc bitrate=4000000 profile=8 ! video/x-h264,stream-format=byte-stream,profile=high ! h264parse ! mux. demuxer.audio_0141 ! audio/mpeg ! queue max-size-time=0 max-size-buffers=0 ! aacparse ! mux. matroskamux name=mux ! filesink location="サンプル.mkv"
ハードウェアエンコーダ/デコーダを使用し実時間の半分程度で再エンコード可能。
注意
- grinch kernel適用は失敗するようです。
- まったく同じコマンドを実行しているにもかかわらずアップグレード中の挙動が異なったりフリーズしたりすることがありました。失敗して起動しなくなった場合もflashからやり直してみることをおすすめします。