プログラミングノート

忘れないためにプログラミングTipsをメモしていく。本当にメモ程度のこともあれば、かっちり書くこともある

プロキシ環境内でJetson Nanoをセットアップする

プロキシ環境内でJetson をセットアップする

研究でJetson nanoを使う機会があり、セットアップ及びネットワーク設定、SSH接続設定を行ったのでここにその手順を記しておく。
プロキシ内でインターネットへ接続したい方。
DHCP内でSSH接続したい方に有益だと思う。

Jetson nano OSイメージダウンロード

nVIDIAよりJetson nanoのOSイメージをダウンロード
https://developer.nvidia.com/embedded/downloads

サイトにある
Jetson Nano Developer Kit SD Card Image の項目からImageと書いてあるリンクをクリックしてダウンロード
(5GB超あり、ダウンロードにそこそこ時間がかかる)
ダウンロードしたZIPは展開(解凍)しておく。

OSイメージをmicroSDカードに書き込む

※以降の作業はUbuntuで行っていることに注意。しかし、Windowsでもほぼ同様な手順で書き込めるはずである。

micro SDカードを用意する。64GB以上が望ましい(らしい)。
micro SDカードをSDカードリーダに差し込むと自動的にPCに認識されマウントされるだろう。

マウント先のディレクトリの確認

~$ sudo parted -l

Model: SD EB1QT (sd/mmc)
Disk /dev/mmcblk0: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

よりマウント状態が確認できる。
/dev/mmcblk0にマウントされていることがわかった。

ライターを用いて書き込む

https://www.balena.io/etcher/
よりイメージライターをダウンロードする。
ダウンロードしたらZIPファイルを展開しAppimage拡張子のファイルを実行する。
Etcherが起動する。

Select imageをクリックし、先程ダウンロードしたJetson nano用imgファイルを選択。
中央のドライブについて、すでに選ばれている状態でもchangeをクリックしてドライブが先程のマウント先のディレクトリであるか確認する。
Flashをクリックして書き込み実行。
(Etcherの初期設定では)書き込みが終了すると自動的にアンマウントされるためそのまま抜き出せる。

書き込んだSDカードをJetsonに挿し起動

起動したらセットアップウィザードに従ってセットアップ。 ログインして使える状態になったらプロキシ設定を行う。

3つのプロキシ設定

まずWebブラウザ等でプロキシ経由で外部にアクセスできるようにする。
左のDockからSystem settings を開きNetwork->Proxy設定。 AutomaticとManuallyがあるが、ここは自分に合わせて。設定パック(.pac)がある場合はAutomatic。
これでWebブラウザは利用できるようになる。
一方、Terminal上でsudo apt updateなどを実行してつながらない場合、追加で設定する必要がある。exportへの書き込みとapt.confへの書き込みだ。

sudo export http_proxy="http://プロキシサーバのドメイン名かIPアドレス:ポート番号"

httpsに対してもプロキシサーバを経由するよう命じられている場合はhttps_proxyについても同じようにexportを設定する。
つづいてapt.confを作成、編集する。

sudo vi /etc/apt/apt.conf

などと任意のテキストエディタでapt.confを開き
/etc/apt/apt.conf

Acquire::http::proxy "http://プロキシサーバのドメイン名かIPアドレス:ポート番号";

として保存。 これでproxy設定が完了する。
以上で最低限必要なセットアップが完了した。

【おまけ】DHCPIPアドレスを管理しているLAN内からsshでアクセスできるようにする

DHCPサーバーのあるLAN内でsshアクセスをするにはIPアドレスを適宜確認するか、DNSによる名前解決を用いたドメイン名でのアクセスが可能だ。
DNSサーバーを置くのは少し面倒である。そのようなときはmDNSを用いると良い。
mDNS、マルチキャストDNSは各機器がLAN内からのユニキャストクエリに応答するため、DNSサーバーを配置しなくてもドメイン名解決が可能である。
※ただし、実装法によっては外部からのユニキャストクエリにも応答してしまうため、DoS攻撃へ利用されてしまう恐れがある。運用には注意が必要。

今回はmDNSを用いてドメイン名でsshできるようにする。
avahi-daemonのインストールでmDNSが導入できる。 (場合によってはすでにインストールされていることもある。)

sudo apt update
sudo apt install avahi-daemon

以上で同じLAN内からのssh接続が可能である。
アドレスはユーザー名@コンピュータ名.localである。
具体的に知りたい場合、jetsonのTerminalを起動して、ウィンドウのタイトルバーに表示されている~~@~~~がそれに該当する。
同じLAN内のUbuntu (Windows) の Terminal (Windows Powershell) から

ssh ~~@~~~.local

で接続可能。

以上。