NVIDIA Jetson Nanoをセットアップし、sshとVNCで繋げるまでの手順をメモ。

OSセットアップ

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

公式通りに行い、OSイメージ入りのマイクロSDを用意する

  • ディスプレイ
  • マウス
  • キーボード
  • wifiドングルか有線ケーブル
  • マイクロSD
  • 電源ケーブル(micro USB)

をjetson nanoに挿しておく。

リモートで操作するまで

IPを調べる

ifconfig

ifconfigコマンドを打つと、有線ケーブルを挿しているのでeth0: xxx.xxx.x.xxxとか表示される。

wifiならlan0: xxx.xxx.x.xxxになると思う。

このIPをメモっておく。

ssh接続

ssh user@xxx.xxx.x.xxx

VNC接続

$ sudo apt update
$ sudo apt install tigervnc-standalone-server tigervnc-scraping-server
$ vncpasswd
# VNCクライアントからつなぐ時のパスワードを設定
$ x0vncserver -display :1 -rfbport 5900 -passwordfile ~/.vnc/passwd

これで待ち受け状態になったのでVNCクライアントからいつでもつなげる。

VNCクライアントとしてVNC® Viewer for Google Chrome™を利用。

Addressのところに先ほどメモった<jetsonのIPアドレス>:5900を入力してConnect

VNC待ち受けをサービス化

毎回待ち受けコマンド入力はしんどいのでサービス化。起動したら勝手にVNCを待ち受けるように設定。

/etc/systemd/system/x0vncserver.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target
After=network.target remote-fs.target nss-lookup.target
After=x11-common.service

[Service]
Type=forking
User=mito
Group=mito
WorkingDirectory=/home/mito
ExecStart=/bin/sh -c 'sleep 5 && /usr/bin/x0vncserver -display :1  -rfbport 5900 -passwordfile /home/username/.vnc/passwd &'

[Install]
WantedBy=multi-user.target

-display :1のところは正しくディスプレイが認識されるように設定すること。

:1が使用中で:2で動くこともある。

$ systemctl daemon-reload
# 手動サービス起動
$ sudo systemctl start x0vncserver.service
# 生存確認
$ sudo systemctl status x0vncserver.service
# 生存確認
$ systemctl list-units | grep vnc
# 自動起動を有効化
$ sudo systemctl enable x0vncserver.service 
# 再起動
$ sudo reboot yes

よく使うコマンド

command action
sudo reboot 再起動
systemctl daemon-reload デーモン再読み込み
systemctl status x0vncserver.service サービス状態確認
systemctl start x0vncserver.service サービス起動
systemctl stop x0vncserver.service サービス停止
systemctl enable x0vncserver.service サービス自動起動有効化
systemctl list-units サービス一覧
/usr/bin/x0vncserver -display :1 -rfbport 5900 -passwordfile /home/mito/.vnc/passwd VNC待ち受け