Jetson nano にtigerVNCをインストールする(Jetpack4.6)
Jetson nano をセットアップする(Jetpack4.6)
ではVNCにvinoをインストールしましたが、vinoはキー入力/画面描画のレスポンスがかなり遅く、
結構なストレスになります。
そこで、代わりにtigerVNCをインストールしてみます。
最初に結論を書いておきますが、レスポンスはvinoより良くなるのですが、クリップボードの共有
(ホスト/ターゲット間でのコピペ)ができないので、普段使いにはあまり使い勝手が良くありません。
githubのリポジトリもずいぶん前から更新されていないみたいなので、今後改善される可能性も低そうです。
なので、私は使っていません(^^ゞ
vinoをセットアップしてある場合は停止しておいてください。
~/.config/autostart/vino-server.desktop
を削除しておけば大丈夫でしょう。
以下、vinoのセットアップは行っていないものとして記載します。
必要なプログラムをインストールします
sudo apt install tigervnc-standalone-server tigervnc-scraping-server
接続パスワードを設定します
vncpasswd
Password:
とVerify:
で設定するパスワードを入力
Would you like to enter a view-only password (y/n)?
には n
を入力
VNCクライアントから接続する際にこのパスワードを入力します
VNCはログインしてないと接続できないので、自動ログインを設定します
/etc/gdm3/custom.conf
を以下のように変更
AutomaticLoginEnable
の行を有効化AutomaticLogin
の行を有効化して user1
をloginするユーザ名に変更/etc/X11/xorg.conf
に以下を追加
Virtual 1920 1080
の部分は使用する解像度に合わせて変更
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Tegra0"
SubSection "Display"
Depth 24
Virtual 1920 1080 # Modify the resolution by editing these values
EndSubSection
EndSection
リブートしないと下の単体テストで「displayがopenできない」とエラーになる模様。
動作確認として、サーバを手動で起動してみます。
x0vncserver -display :0 -passwordfile ~/.vnc/passwd
サーバが起動したら、PCからVNCクライアントでJetson nano のポート5900(VNCのデフォルトポートなので省略可)に接続します。
正常に設定できていればVNCクライアントにデスクトップが表示されます。
逐一x0vncserver
を起動するのは面倒なので、自動で起動するように設定しておきます。
参考: https://qiita.com/iwatake2222/items/a3bd8d0527dec431ef0f
/etc/systemd/system/x0vncserver.service
を以下の内容で作成します。
ただし、XXXXXXXX
の部分は 自分のユーザ名に置き換えてください。
[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=XXXXXXXX
Group=XXXXXXXX
WorkingDirectory=/home/XXXXXXXX
ExecStart=/bin/sh -c 'sleep 10 && /usr/bin/x0vncserver -display :0 -rfbport 5900 -passwordfile /home/XXXXXXXX/.vnc/passwd &'
[Install]
WantedBy=multi-user.target
sudo systemctl start x0vncserver
sudo systemctl status x0vncserver
以下のように出力されることを確認します
● x0vncserver.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/x0vncserver.service; enabled; vendor pres
Active: active (running) since Fri 2021-09-03 11:08:07 JST; 8s ago
Process: 14646 ExecStart=/bin/sh -c sleep 10 && /usr/bin/x0vncserver -display ・・・・
Main PID: 14659 (sh)
Tasks: 2 (limit: 4172)
CGroup: /system.slice/x0vncserver.service
├─14659 /bin/sh -c sleep 10 && /usr/bin/x0vncserver -display :0 ・・・・
└─14666 sleep 10
9月 03 11:08:07 jetson systemd[1]: Starting Remote desktop service (VNC)...
9月 03 11:08:07 jetson systemd[1]: Started Remote desktop service (VNC).
起動時に自動実行されるように、サービスの有効化を行います。
sudo systemctl enable x0vncserver
再起動後、PCからVNCクライアントでJetson nano のポート5900(VNCのデフォルトポートなので省略可)に接続します。
正常に起動できていればVNCクライアントにデスクトップが表示されます。
ディスプレイとは別のデスクトップを表示する場合は以下の手順で。
ここではwindow managerにlxdeを使用していますので、モニタ表示とは異なる見た目になりますし、
ウィンドウマネージャの設定も同じではありません。
参考:https://forums.developer.nvidia.com/t/how-to-setup-tigervnc-on-jetson-nano/174244
一回試しただけ(ちゃんとメモってなかった)なので、抜けとかあるかも。
必要なプログラムをインストールします
sudo apt install tigervnc-standalone-server
接続パスワードを設定します
vncpasswd
Password:
とVerify:
で設定するパスワードを入力
Would you like to enter a view-only password (y/n)?
には n
を入力
VNCクライアントから接続する際にこのパスワードを入力します
VNCはログインしてないと接続できないので、自動ログインを設定します
/etc/gdm3/custom.conf
を以下のように変更
AutomaticLoginEnable
の行を有効化AutomaticLogin
の行を有効化して user1
をloginするユーザ名に変更/etc/X11/xorg.conf
に以下を追加
Virtual 1920 1080
の部分は使用する解像度に合わせて変更
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Tegra0"
SubSection "Display"
Depth 24
Virtual 1920 1080 # Modify the resolution by editing these values
EndSubSection
EndSection
~/.vnc/xstartup
を以下の内容で作成します
XXXXXXXX は 自分のユーザ名に置き換えてください
!/bin/sh
export XDG_RUNTIME_DIR=/run/user/1000
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb /home/XXXXXXXX/.Xresources
xsetroot -solid grey
gnome-session &
startlxde &
実行属性を付けます
chmod 755 ~/.vnc/xstartup
.Xresources ファイルを作成します
touch ~/.Xresources
/etc/systemd/system/vncserver@.service
を以下の内容で作成します
XXXXXXXX は 自分のユーザ名に置き換えてください
[Unit]
Description=Start TigerVNC Server at startup
After=syslog.target network.target
[Service]
Type=forking
User=XXXXXXXX
Group=XXXXXXXX
WorkingDirectory=/home/XXXXXXXX
PIDFile=/home/XXXXXXXX/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -depth 24 -geometry 1920x1080 -nolisten tcp
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
/etc/vnc.conf
に以下を追記してリモートアクセスを許可します
$localhost = “no”;
参照元がこうなってたので。
sudo systemctl enable vncserver@
でも良い気がするけど。ここのファイル名でポート番号決めてる?
cd /etc/systemd/system/multi-user.target.wants/
sudo ln -s /etc/systemd/system/vncserver@.service vncserver@1.service
再起動後、PCからVNCクライアントでJetson nano のポート5901に接続します。
(VNCクライアントの接続先に«JetsonのIPアドレス»:5901
を指定します)