sysctldな環境下でのvncserver設定
2014/07/09にCentOS7.0.1406がリリースされました。
システム操作用コマンド周りで従来使っていたコマンド群が一気にオワコン扱いにされる*1など、あまりの変化の大きさに阿鼻叫喚…って人も多いことでしょう。
そのような仕様変更故に、いきなり本番環境に入れることを躊躇う人も多いはず……で、使えるのが仮想環境。自分の場合、デスクトップPCではUSBの外部機器などをお手軽に繋ぎ替えができるOracle VM VirtualBoxを利用しています。グラフィック機能やマウスキャプチャなどの制約を解除して便利に利用するには、拡張パックをインストールしてやる必要があるのですが。
CentOS7.0.1406のリリース当初、自分もこのOracle VM VirtualBox上に仮想マシンを拵えたのですが、ライブラリの変更などの都合もあり、この時点では拡張パックを利用できませんでした*2。
このままでは、(グラフィック拡張はいいとして…)マウス操作を行う度にポインタがキャプチャされて何かと面倒くさいのです。
そこで善後策と云わんばかりに考えたのが、VNCServer(ここではtigerVNCを利用)。よくある設定を…と、よくよく考えてみたら、ここもserviceからsystemctlに変わってます。
従来からの設定方法をやっても、移行期間扱いでまだまだ猶予をもらえているのだが、それでは進歩しないのでsystemctl用の設定を行ってみました。
【編集するファイル】
- /usr/lib/systemd/system/vncserver@:n.service
nは任意の数字、同ディレクトリ内にあるvncserver@.serviceより複製・改称して利用します。
【編集内容】
※前半のコメント部は省略
ここでは、赤文字部分を修正・追記しています。
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l hoge -c "/usr/bin/vncserver %i -geometry XXXxYYY"
PIDFile=/home/hoge/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]
WantedBy=multi-user.target
接続ユーザ名への修正は必須ですが、当方が追記している解像度設定部分*3の編集は任意ですので、必要に応じて実施して下さい。
【設定の反映】
編集が完了したら、対象サービスの有効化と設定の反映を実施します。
# systemctl daemon-reload
# systemctl enable vncserver@\:n.service
# systemctl start vncserver@\:n.service
現時点ではOracle VM VirtualBoxの更新版がリリースされ、マウスが捕獲される問題は解消済みですので、ほぼこの記事自体の役目も終わっているようなものですが、あくまで参考として残すものとします。