どうも、Reveです。
今回は、もう生産停止でサポート対象外になった古いシングルボードコンピュータ(Jetson TX1)を復活させた、そんな誰に刺さるかも分からないニッチな話です。
Jetson TX1って?
グラボで有名なNVIDIAが開発・生産しているシングルボードコンピュータ「Jetson」シリーズの初期に生まれたバージョン(正確にはTK1に次ぐ2代目)。
シングルボードコンピュータなのに、そのコストと消費電力にそぐわない程のCPU・GPU性能やメモリ容量などハイスペックを誇る正に超小型のスーパーコンピュータで、それゆえAIや機械学習、画像処理、CG、自動運転といったありとあらゆる目的の組み込み機器に利用され、エッジコンピューティングの先駆けといっても過言ではない存在です。
ただ、ハードウェアの性能に反してソフトウェアの更新が遅いといった欠点もあり、意外と開発には苦労する面も多々あります。特に旧バージョンのOSでは使えないライブラリやソフトウェアが必要になったら…。
で、何したの?
その昔、たまたまJetson TX1を貰ったReveという者がおりましたが、考えなしにOSのアップグレードをかけたところ全く動かなくなりました…(実話)
何度かリカバリーにトライしましたが、どうにも対処できなかったので、そのままほったらかしていたそうな。
それから早何年、もう使わないのでメ〇カリとかにでも売ってしまうかと考えましたが、そのまま出してもジャンク品で二束三文になりそうだし、せっかくならリカバリーできないか諦め悪く挑戦したところ、何とか出来たという次第。めでたし、めでたし。
…Windows 10にOracle VM VirtualBoxでUbuntu(16.04LTS)環境を作って、Jetson TX1にJetpack3.3を入れて復活させました。
手順
与太話はさておき、いよいよ本題です。
VirtualBoxのインストール
まずは自分のPCに該当するOS用インストーラをダウンロードしてください(今回はWindows)。また、Oracle VM VirtualBox拡張パックも必要となるので、同じ項目のインストーラも同時にダウンロードしてください。
ダウンロードしたら、本体→拡張パックの順にインストールします。ここはインストーラの指示に従えばOK。
環境構築(Ubuntu16.04LTS)
続いて、Ubuntuの環境構築に入ります。
まずは、公式からデスクトップ64ビット版のISOをダウンロードします。バージョンが16.04と古いのは、後述のインストーラーとの互換性のためです。
続いて、以下の通りに設定してください。ネットワークアダプター2はLANケーブル経由でPCからJetson TX1へパッケージを転送するためです(「VirtualBoxで有線 Ethernetを使う方法」参照)。
- 新規に仮想マシンを作成
- 名前とOSを選択 (名前にubuntuなどと付ければ、OSも自動的に選択される)
- 仮想ハードディスクを32GB以上で作成
- 設定ボタンで仮想マシンの性能を以下の通りにする
- メインメモリ (システム>>マザーボード):4096MB
- プロセッサー (システム>>プロセッサ):2
- アダプター2 (ネットワーク):有効化+ブリッジアダプター(Ethernetコントローラー=有線LAN)
- USB:USB2.0または3.0(xHCI)を選択 (PCのUSBコネクタに合わせる)
設定すると、以下のような構成で表示されるかと思います。
もちろん、より多くのリソースを割り当てても構いませんが、あまり多すぎるとPC本体の動作に支障をきたす恐れもあるので、PCのリソースを鑑みて設定してください(8GB、プロセッサ4つでも良かったかも…)。
Ubuntuのインストール
続けて、Ubuntuのインストールに入ります。詳細はほぼ「Windows10上のVirtualBoxにUbuntu20.04をインストール」の通り。
起動ボタンを押して画面を立ち上げると、まずディスクの選択画面が出てくるので、先にダウンロードしたUbuntuのisoファイルを指定してください。
するとインストーラーが立ち上がるので、基本的には画面の指示に従ってクリーンインストールします。ただし、最初のロケール設定だけはEnglishのままにしておいてください(Jetpackインストーラが英語以外は非推奨のため。キー入力は日本語でOK)。
インストールが完了して再起動ボタンを押したらしばらく待ちます。「Enterキーを押して…(意訳)」というメッセージが出たらそのままEnterキーを押してください。Ubuntuが起動するはずです。
もし、VirtualBoxにUbuntuがインストールできない場合はバグなので、以下の方法を試してください(Windowsの機能でhyper-v, Windowsハイパーバイザープラットフォーム, 仮想マシンプラットフォームを有効にしている場合は同じく無効化)。
- 管理者権限でコマンドプロンプトを起動
- bcdedit /set hypervisorlaunchtype off と入力
- PCを再起動
Jetson TX1の接続
Ubuntuにログイン出来たら、Jetson TX1とPCをつなぎましょう。
付属のACアダプタでコンセントとつないで(まだ電源は入れない)、以下の通りにPCとJetson TX1を繋げます。
Jetson TX1 | PC (Host) | 詳細 |
Micro USB | USB (2.0/3.0) | VMのUSBコントローラ経由 |
LAN | LAN | ネットワークのブリッジアダプター(Ethernet) |
接続したら、Jetson TX1をリカバリーモードで起動します。本来はもう少し複雑ですが、先にrecoveryボタンを押したまま、電源ボタン(POW)を押してその2秒後にrecoveryボタンから指を離してもリカバリーモードが立ち上がります。
少ししたら、VirtualBoxタブメニューの「デバイス」>>「USB」で「NVIDIA Corp. APX」と書かれたデバイスが出現するので、それを選択すればOKです。
なお、場合によっては「USBデバイスの割り当てに失敗」といったエラーが出る場合もありますが、その際はVirtualBoxかPC本体を再起動すれば、また認識されるようになります。
Jetpackインストーラの導入
いよいよJetpackをJetson TX1に入れるためのツールを導入します。
まずは、Jetpack 3.3用インストーラーをダウンロードします
ダウンロードしたファイルに実行権限を与えて、そのまま実行すればインストールが始まります。
1 2 3 4 5 |
# 実行権限を与える chmod +x JetPack-${VERSION}.run # 実行 ./JetPack-${VERSION}.run ¥ |
インストーラーが起動したら、画面の指示に従います。
デバイス選択では、当然Jetson TX1を選びます。
インストールするパッケージは、特に必要なければ全選択でOKです。そのあとのライセンス承認もすべてチェックして進みます。
パッケージのダウンロードが完了したら、続いてデバイスへの転送を行います。
PC(ホスト)とデバイスが同一ネットワークにつながっていれば上でもOKですが、仮想マシンがNAT経由でネット接続している関係で少し面倒なので、別のネットワークアダプタ(LAN)でPCとデバイスを直接つなぎ、パッケージを転送します(なのでネットワークアダプター2を有効にしました)。
そのまま次に進むとJetson TX1のIPアドレス、ユーザー名、パスワードを聞かれます。
ユーザー名とパスワードはデフォルトで両方「nvidia」、IPアドレスは以下のコマンドでネットワーク一覧を調べて、有線LANのネットワークからそれらしきものを見つけます。
1 |
arp -a |
正しく入力できていれば、デバイスへの転送が始まります。
転送が無事に完了したら、Jetson TX1をPCから外して電源を切り、いつもの通りモニターとマウス・キーボードをつないで電源ONにすればUbuntuの画面が起動する…はずです。
ちなみに
実は、最新の開発環境ではNVIDIA SDK Managerというツールも導入されていますが、残念ながらJetson TX1では使えません(泣)。SDK Managerからインストールをしようとしても、Jetson TX1と接続できずタイムアウトになるなど、だいぶ時間を無駄にしました…。そのため、とりあえず古いJetpack 3.3の使用をお勧めします。
反省
できたとはいえ、結構タイムロスしてしまいましたorz。もしかしたら、NVIDIA SDK Managerでも仮想マシンのネットワーク設定を見直して、Jetson TX1とLAN経由でIPを指定すれば書き込めたのかも…。
ちなみに、Macbook ProとVirtualBoxでJetson AGX Xavierをセットアップしている記事を見かけ、それきっかけでリカバリーに再トライしてみたのですが、Jetson TX1では辛すぎた…。
参考
Windows10上のVirtualBoxにUbuntu20.04をインストール
Virtual box 6.1(Windows10)へのUbuntu20.04のインストールが「Error 5 Input / output error」で失敗する場合の対処メモ
VirtualBoxで有線 Ethernetを使う方法
Jetson TK1 OSインストール
おまけ
どうしてもJetson TX1が気になる方はこちらをどうぞ…。
ただ、もう廃版のくせに価格が引くほど高くなっているので、購入は絶対にオススメしません(古いソフトしか使えませんし…)。
現役のJetsonも全て品薄で価格が高騰しているようなので、なかなか難儀な話ですが…。