JetPack for L4Tセットアップ ホスト編

引き続き、Jetson TX1の開発環境を構築します。

前回のセットアップではホストとしてVMWare上のUbuntuを用意しましたが、どうもVMWareやVirtualBox等の仮想環境上のUbuntuからのOSの書き換えがうまく動作しないことが判明しました。そこで、開発PCにSSDを増設して、この上にUbuntuをインストールし、デュアルブートできるようにしました。

今回増設したSSDは安い120GBのものです。BIOSでSATA2を有効にしてBIOSが認識できるようにし、DVDに焼いたUbuntu 14.04のインストールディスクをドライブに挿入して起動してUbuntuをインストールします。/dev/sdaはメインの開発環境であるDebianが入っているのでそのままにし、今回追加した/dev/sdb全体を/dev/sdb1としてUbuntuに割り当てました。SSDなので例によってswap領域は用意せず、無効にしてあります。

インストール完了後にPCを再起動したところ、grubが追加したSSDを認識できずにgrub rescue画面になってしまいましたが、

grub rescue> set prefix=(hd0,msdos1)/boot/grub
grub rescue> insmod normal
grub rescue> normal

で/dev/sda1の/boot/grubにあるnormalモジュールを読み込んで、通常のgrub画面の表示に成功しました。ここからDebianを起動し、

$ sudo cfdisk /dev/sdb

してみたところ、Ubuntuをインストールした/dev/sdb1パーティションにbootフラグが立っていません。bootフラグを立ててWrite→Quitした後に、念のためにupdate-grubを実行してgrubを再インストールして再起動したところ、ようやくUbuntuが起動できました。

2016/04/21追記: ストレージがSSDですので、Debianの時と同じく/etc/fstabのマウントオプションにnoatimeしておきます。fstrimは/etc/cron.weekly/fstrimから呼び出されるようなので、Debianのように手動で設定してやる必要はありません 。ただし、特定のメーカ以外のSSDの場合、このファイルでfstrim-allコマンドへの--no-model-checkオプション追加が必要です。詳細は/sbin/fstrim-allを読んでみて下さい。

JetPack for L4Tセットアップ 失敗編

前回に引き続きJetson TX1の開発環境のセットアップを行います。

2016/04/20追記: この記事を作成しながらセットアップを進めていたところ、仮想環境からのOSの入れ替えは失敗することが分かりました。Nvidiaとしても仮想環境上のUbuntuはサポート外で、デュアルブート等のネイティブ起動を推奨のようです。以下、記録として残しておきますが、参考にする際はご注意下さい。

開発用ホストとして、Ubuntu 14.04 64bit環境をVMWare上に構築します。後述しますが、JetPack for L4Tのインストールに16GBほど必要です。最近のLinuxのインストールは本当に簡単でいいですね。インストールが完了したら、例によってibus-skkとlv, tmuxをインストールしておきます。また、SSDなのでswapは無効にしました。

次に開発環境を用意します。NVIDIAにJetsonのポータルがありますので、まずはそこにアクセスします。並んでいるアイコンのうち左端にあるのがREGISTERですので、ここをクリックして開発者登録します。必要な情報を入力してsubmitすると、登録確認のメールが届きますので、URLをクリックすると登録が完了します。パスワードの変更(設定)を求められるので、次の画面で設定します。

パスワードの設定が完了すると、開発者サイトにログインした状態になります。ダウンロードページに移動し、JetPack for L4Tの最新版(現時点では2.1)をダウンロードします。ダウンロードしたらインストールしましょう。ここでは /opt/nvidia にインストールします。

$ sudo mkdir /opt/nvidia
$ sudo chown ユーザ名:グループ名 /opt/nvidia
$ mv JetPack-L4T-2.1-linux-x64.run /opt/nvidia
$ cd /opt/nvidia
$ chmod +x JetPack-L4T-2.1-linux-x64.run
$ ./JetPack-L4T-2.1-linux-x64.run

途中でTK1かTX1かの選択が出ますので、TX1を選択します。認証ダイアログが出たらパスワードを入力します。パッケージの選択では、Standardのままで問題ないと思います。この標準インストールの場合、ストレージに16GBほどの空きが必要になります。Agreementにチェックを入れ、先に進むとインストールが開始されます。

ウィンドウを消すなとか色々言われますが、普通にインストールしていけば大丈夫です。インストールが完了すると、ネットワーク構成を確認されます。ホストのUbuntu, Jetson TX1ともにネットワーク接続している方を選択し、ネットワークI/Fにeth0を選択し、先に進めます。すると開発ボードをForce Recoveryモードにせよ、とのダイアログが表示されますので、

  1. 開発ボードの電源を切り、ACアダプタも抜く
  2. 開発ボード側のmicroUSBポートとホストを付属のUSBケーブルで接続
  3. 開発ボードにAC電源を接続し、電源ボタン(S4)を押下
  4. すかさずForce Recoveryボタン(S3)を押しっぱなし
  5. リセットボタン(S1)を押して数秒待ってからForce Recoveryボタンを離す

という手順で開発ボードをForce Recoveryモードに移行させます。うまくいけばホスト側にNVidiaのデバイスが現れます。確認のためにホスト側のターミナルでlsusbコマンドを実行すると

$ lsusb
Bus 001 Device 002: ID 0955:7721 NVidia Corp.
...

のような行が表示されるはずです。開発ボードが認識されたら、ダイアログでエンターを押すとセットアップが開始されます。が、この直後、"Post Installation" 画面でセットアップがストールします。参りました。記事冒頭で追記した通り、VMWare等の仮想環境からではOSの入れ替えに失敗するようです。後日、デュアルブート環境を作成して再チャレンジします。

 

NVIDIA Jetson TX1

仕事で使うかもしれないので、NVIDIA Jetson TX1を入手しました。

開発ボードの他にアンテナ2本、ACアダプタ、USBケーブル、USBアダプタ、ジャンパーピンがそれぞれ1つずつ付属しています。使い方は簡単で、アンテナ刺してHDMI刺してキーボード刺してLANケーブル刺して電源刺して電源入れて、でOK。Ubuntu 14.04が起動します。と、これだけではアレなのでもう少し。

初回起動時はコンソールで起動します。設定済みのアカウント ubuntu/ubuntu でログインすると、ドライバのインストールが指示されるので、

$ cd NVIDIA-INSTALLER
$ ./installer.sh

して再起動しますと、見慣れたUbuntu 14.04のXというかUnityが起動します。日本語環境の設定や使い慣れたツールをインストールしておきましょう。私はuniverseを有効にしてlvとibus-skk, tmuxをインストールしておきました。HHKBでibus-skkを使う場合は、キーボードレイアウトをusに変更しておきましょう。

なお、常温で普通の使い方をしている限りでは、ボードに付属のファンは回らないようです。

2016/04/21追記: ここで開発ボード上のUbuntu環境をセットアップしても、後ほどJetPack for L4Tのインストールで上書きされます。ここでは雰囲気を味わう程度にして、ガリガリとカスタマイスしない方が無難です。

USB 3.0 ポート増設

USB 3.0対応の機器が増えてきましたので、ポートを増設しました。背面の拡張スロットだけでは不便ですので、空いているフロントの3.5インチベイにもポートを出します。SATA電源ケーブルが足りない予感がしたので、分岐ケーブルも購入しておきます。

T5500のサービスマニュアルを見ながらフロントパネルを外してUSBパネルを設置し、PCIeスロットにボードを差してSATA電源を接続し、フロントパネルのケーブルと接続したらOKです。もともと3.5インチベイに付いていたネジとUSBパネルに付いてきたネジとが噛み合わず、微妙な固定になってしまったのは気にしない方向で。

蓋を閉めて電源を入れ直し、dmesgにxhci関連のログが出ていれば認識されていると思います。lspciでもRenesasのUSB 3.0ボードが表示されるはずです。

LinuxのストレージをSSDに換装

開発でメインに使っているPC (DELL Precision T5500)のストレージを、HDDからSSDに換装しました。2.5インチ→3.5インチ変換アダプタも合わせて購入しました。

最初は単純にSSDをSATA 2に接続し、rescue modeでDebianを起動して

# ddrescue -f -v -r 3 /dev/sda /dev/sdb

し、shutdownした後にHDDをSATA 0から外してSSDをこちらに繋ぎ直し、再起動で一応Debianが起動しました。が、いくつか問題が。

  • fdiskを実行するとエラーが表示される。パーティションの開始セクタがおかしいらしい
  • 元のHDDのfsはext3だが、SSDのfsはext4の方がいいらしい
  • 起動時にエラーが表示される (起動はする)。fsck.ext4が見つからないらしい

続きを読む

Raspberry Pi 3

桜も開花し、ようやく本格的に春めいてきました。花粉が飛び交っていますが、これからアクティブティを上げてきたいと思います。

さて、先月末に発表されたRaspberry Pi 3ですが、ようやく国内でも入手できるようになりました。私も数台入手して、セットアップしました。3になってデフォルトでWi-Fiが搭載され、LANケーブルを引き摺り回さなくて済むようになったのは嬉しいのですが、電源が5V 2.5Aを要求するようになったが地味に痛いです。

今回は4台でクラスタを組むつもりなので、Ankerの6ポート60WのUSB電源を購入しました。電源コードが付くので自由度が高いのもいい感じです。

各ポート2.4Aで微妙に2.5Aに足りていませんが、スイッチサイエンスによると2Aでも動作するらしいので気にしない方向で。USB電源ケーブルは細くて取り回し易いのを選択しました。

4台をスタックするために20mm M2.6の六角スペーサーを捜したのですが、直ぐに手に入るものが見つからなかったので、10mmのものを2本繋いで20mmにすることにしました。microSDはいつものTranscend Class10のものです。

続きを読む

96Boards Dragonboard 410c

HiKeyに続いてDragonBoard 410cも入手しました。こちらはQualcomm製のSnapdragon搭載のシングルボードコンピュータです。もちろんGPUも搭載されています。ちなみに、製品版ではSoCチップ等がシールドで囲われています (もしかしたらシールド兼ヒートシンクかも知れません)。

デフォルトではAndroidがインストールされていますので、Debianを入れ直します。手順はドキュメント (PDF)の通りで何も難しいことはありません。microSDを用意するのが面倒だったので、HiKey用にインストール済みだったfastbootを使いましたが、詰まるポイントもなく、簡単に更新できました。

また、Dragonboardの方はブートパラメータの設定変更等は一切必要なく、一発でSHARPの7インチLCDパネルへの1200x1920表示もできました。HiKeyのイメージは昨年11月末のもの、Dragonboardのイメージは今年2月末のもの、ということでこの数ヶ月分のアドバンテージがあったということでしょうか。

2016/03/18追記: xrandrで1920x1200のlandscape表示ができましたが、画面最下部までマウスカーソルを動かせないという不具合(?)があるため、今は素直にportrait表示で使っています。

HiKeyでディスプレイが表示されない問題

前回の続きです。

ファームを更新しただけでは状況は改善されず、依然としてディスプレイには何も表示されません。困った時のシリアルコンソール、ということでUSB UARTアダプタを追加で入手しました。が、これは根本的な解決にはなりません。githubにあるドキュメントWikiをしっかり読み直します。

ドンピシャな情報がありました。起動後に "右Alt + PrintScr + G" の同時押しで、EDIDのモードを一つずつ手動で切り替えられるようです。UARTアダプタをHiKeyに接続し、PCとmicroUSBで接続し、TeraTermでシリアルポートを開いておけば自動ログインしてくれます。

この状態で上記のキーを同時押しする度に解像度とリフレッシュレートが変更され、シリアルコンソールに表示中の値が表示されます。何度か押していくと、ディスプレイに表示されました。この時の解像度とリフレッシュレートを、HiKeyのブートパラメータに追加します。私の環境では 1920x1200 @59Hz でした。これを

$ sudo vi /boot/grub/grub.cfg
...
linux ~ video=HDMI-A-1:1920x1200@59

のようにしてgrubの設定ファイルのlinux行の末尾に追記します。追記したら再起動しましょう。通常であればこれで画面が表示されるようになります。

続きを読む