web-dev-qa-db-ja.com

Ubuntu 18.04でのTigerVNC systemdプロセスの設定

私はTigerVNCがデスクトップUbuntu 18.04(GNOMEとすべて)のクリーンインストールで動作するように努めています。ランニング vncserver :1 -localhost noを使用すると、問題なく接続できますが、systemdサービスが機能していないようです。

システム起動後のログ:

Xvnc TigerVNC 1.7.0 - built Dec  5 2017 09:25:01
Copyright (C) 1999-2016 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11905000, The X.Org Foundation


Wed Jul 10 15:13:27 2019
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5901
 vncext:      created VNC server for screen 0
vncconfig: unable to open display ":1"

** (process:1184): WARNING **: 15:13:28.311: Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME environment variable: Could not connect: Connection refused

ターミナル(vncserver :1 -localhost no):

Xvnc TigerVNC 1.7.0 - built Dec  5 2017 09:25:01
Copyright (C) 1999-2016 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11905000, The X.Org Foundation


Wed Jul 10 15:14:25 2019
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5901
 vncext:      created VNC server for screen 0
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":1"
      after 175 requests (174 known processed) with 0 events remaining.

xstartup:

#!/bin/sh

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic & dbus-launch --exit-with-session gnome-session &

vncserver @ .service

[Unit]
Description=TigerVNC Service
After=syslog.target network.target

[Service]
Type=simple
User=<user>
PAMName=login

PIDFile=/home/<user>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -localhost no
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target
2
Joona

試行錯誤の末、ユーザーがログインした後、ユーザーモードでプロセスを実行することにしました。ユーザーがログインするとサービスが開始し、自動ログインが有効になっていると、目的のために完全に機能します。

/etc/systemd/system/[email protected]ファイルを削除し、$HOME/.local/share/systemd/user/[email protected]に次の内容で新しいファイルを作成しました(不足しているフォルダーを作成しました)。

vncserver @ .service

[Unit]
Description=TigerVNC Service

[Service]
Type=forking
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -localhost no
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=default.target

次に、systemctl daemon-reload --userでサービスを有効にし、systemctl enable vncserver@1 --userでサービスを有効にしました。

1
Joona