Jetson NanoをHeadlessで使う
今回はJetson NanoをUSB Wi-Fiドングルを使ってネットワークに接続して、ついでにpackageのupdateや最低限のセキュリティ対策をやっておく。
ちなみに私はmicro USB経由でTera Termから接続して操作して設定を行ったが、モニターをつないでGUI上のTerminalで設定してももちろんOK。
開発環境
開発用PC:Windows 10
Jetson Nano Development kit 4GB B01
USB wifi ドングルを使ってネットワークに接続する
私が今回使ったUSB wifi ドングルは以下のもの。ちょうど以前購入したものが手元にあった。結論から言うと、特に問題なくJetson NanoがUSBドングルを認識してくれてドライバのインストールなども不要だったので、簡単に接続できた。
エレコム Wi-Fi 無線LAN 子機 150Mbps 11n/g/b 2.4GHz専用 USB2.0 コンパクトモデル ブラック WDC-150SU2MBK
USBドングルはJetson Nanoの適当なUSBポートに接続すればOK。
接続の手順については、以下を参考にさせて頂きましたm(_ _)m
上記のサイトの手順そのままで接続できたので詳細は割愛するが、lsusbを打つとDevice 003として今回使うElecom製のUSBドングルが認識されていることが確認できた。
$ lsusb Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 056e:4008 Elecom Co., Ltd Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lsusb -tコマンドを打つと、Dev 3のDriver=r8188euと表示されており、ドライバもロードされている。
$ lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M |__ Port 4: Dev 3, If 0, Class=Vendor Specific Class, Driver=r8188eu, 480M
あとわざわざ書くほどでもないかもしれないが、nmcli d wifi connectでネットワークに接続する際は、sudoをつけないと権限が無くて以下のようにErorrが出るので注意。
Error: Failed to add/activate new connection: Not authorized to control networking.
installされているpackageのupdate
この手のガジェットでのお約束として(?)、インストールされているパッケージをアップデートしておく。ちなみにアップデート完了にはそこそこ時間がかかるので(私の環境だと10~20分くらいだったと思う)、時間に余裕がある時にやった方が良いかも。
sudo apt update sudo apt upgrade
あと、upgrade中にオプションを聞かれるが、とりあずEnterを押して全部デフォルトのままにしておいた。また、Dockerのdaemonをrestartするかみたいなことも聞かれた。正直どうすべきかよくわからんかったが笑、restartしないと不具合が出るかも的なことが書いてあったので、restartしておいた。
UFWをインストールして必要なportだけ解放する
デフォルトの状態だと色々なportが開いていてセキュリティ的にあまり良くないので、UFWファイアウォールをインストールして、必要なportだけ開いておく。ただ、後々いろいろなパッケージをインストールして使う場合、自分で必要なportを開く設定をしていく必要があるので、設定にあまり自信が無い人は(まぁport開くだけなんだけど)やらない方が良いかも。
セキュリティ対策については以下のサイトを参考にさせて頂いたm(_ _)m
買ったらまず実施!Jetson Nanoのセットアップとセキュリティ対策 #RaspberryPi – Qiita
NVIDIA Jetson Nano 初期設定 その2 | MIKI-IE.COM(みきいえMIKIIE)
とりあえず今回はSSH(22)、HTTP(80)、HTTPS(443)のportだけ開いて、他のportが必要になったら開放していこうと思う。手順は以下の通り。まずはuwfをインストールしてenableする。
$ sudo apt install uwf
$ sudo ufw enable
私の環境ではenableしたときにerrorが出た。それについては以下の記事で対策を書いているので、以下の記事を参照。
Jetson Nanoでufwをenableしようとしたら「[Errno 2] modprobe: FATAL: Module ip6_tables not found」と出た時の対処
ufwをenableできたら以下でportを開放していく。
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
最期に以下でstatusを確認。指定したPortが開放できている。
$sudo ufw status Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere
これで設定は完了…なのだが、電源を落とすとufwはdisableされてしまった。ということで、以下のコマンドを打って自動起動を有効にしておいた。
$systemctl enable ufw $systemctl start ufw
こちらに設定については以下のページを参考にさせて頂いたm(_ _)m
ここからさらに接続できるIPアドレスを制限したり、SSHを公開鍵認証に変更したりすればセキュリティ的には強くなるのだが、ひとまず今回はここまで。
ちなみに今はmicro USBで開発用PCとheadless通信しているのだが、ネットワーク経由でSSHを使ってJetson Nanoに接続すれば、Wi-Fi USBドングルと電源を接続するだけでJetson Nanoとheadless通信をすることができる。
ということで、次回はSSHでheadless通信してみたいと思う。