📚

Jetson NanoのVNCサーバーをコマンドラインで設定する

2 min read

はじめに

Jetson Nanoを装置に組み込むとheadless modeで運用することになるのだが、GUI操作が必要になったときにHDMIモニタとUSBキーボード・マウスを接続するのが面倒なので、VNCサーバーを設定してリモートから接続できるようにする。
公式イメージでセットアップしたときに、/opt/nvidia/l4t-usb-device-mode/filesystem.img内のREADME-vnc.txtに書かれている内容とほぼ同じ。
README-vnc.txtだと一部GUI操作があるが、この記事ではすべてコマンドラインで実施)

GUI loginしていない状態の場合は下記でfilesystem.imgの内容を参照できる。

$ sudo mount -o ro /opt/nvidia/l4t-usb-device-mode/filesystem.img /mnt
$ less /mnt/README-vnc.txt

Vinoのインストール

$ sudo apt update
$ sudo apt install vino

Vinoの自動起動の設定

$ mkdir -p ~/.config/autostart
$ cp /usr/share/applications/vino-server.desktop ~/.config/autostart

Vinoのコンフィグレーション

thepasswordの部分はお好みのパスワードで。

$ gsettings set org.gnome.Vino prompt-enabled false
$ gsettings set org.gnome.Vino require-encryption false
$ gsettings set org.gnome.Vino authentication-methods "['vnc']"
$ gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)

自動loginの設定

/etc/gdm3/custom.confを書き換える。AutomaticLoginの部分は使用しているユーザー名にする。

--- a/etc/gdm3/custom.conf 2021-01-22 17:26:49.583451113 +0900
+++ b/etc/gdm3/custom.conf 2021-01-22 17:19:47.888171728 +0900
@@ -7,8 +7,8 @@
 WaylandEnable=false

 # Enabling automatic login
-#  AutomaticLoginEnable = true
-#  AutomaticLogin = user1
+AutomaticLoginEnable = true
+AutomaticLogin = xxx

 # Enabling timed login
 #  TimedLoginEnable = true

解像度の設定

HDMIモニタを接続していないと、解像度が640x480と小さいので、/etc/X11/xorg.confに解像度設定を追加する。

Section "Screen"
   Identifier    "Default Screen"
   Monitor       "Configured Monitor"
   Device        "Tegra0"
   SubSection "Display"
       Depth    24
       Virtual 1280 800 # Modify the resolution by editing these values
   EndSubSection
EndSection

reboot

rebootすると自動login済みでXサーバーが起動して画面共有できるようになっている。

$ sudo reboot

macOSからの接続

Finder → 移動 → サーバへ接続... (Command+K) で表示されるダイアログに、vnc://hostname.localとかvnc://xxx.xxx.xxx.xxxと入力して接続する。