Ubuntu18.04でモニタレスVNC

投稿者: | 2019/12/07

Unityから GNOMEに、LightDM に代わって GDMが。Desktop版を使う者にとっては注目すべき変更点であるが、実際に使ってみると、操作性はともかく、設定のし辛さばかりが第一印象として心に残る。過去にリリースされてきた Ubuntuも第一印象は大抵そんなもので、時間が経てば慣れとともにそれも忘れる。

設定のし辛さと言えば、今回のテーマもその一つ。正直リリースされた直後に使いだす猛者達は尊敬に値する。今、ここで自分が使えているのは、そんな猛者達が公開してくれている情報のおかげだ。

モニタレスVNC

いわゆるヘッドレスである。
サーバーを立ち上げる際に使う Ubuntuは、やはりサーバー版を使うのが正しい。でも個人ユースであればその限りにあらず。自由なのだ。
ただ、ディスクトップ版を使うからと言って、複数台のそれぞれのサーバーに、それぞれモニタを接続しながら運用するのは茶番の他ない。そんな時に便利なのが VNC(リモートデスクトップ)。

Ubuntu18.04LTS+vino環境でのVNC運用設定

Ubuntuの LTS版で言うと、12.04の頃まで Ubuntuに標準で備わる vinoはスタンドアロンで使えていた記憶がある。自分は、12.04の後に 14.04を見送って 16.04に進んだ人なので詳しい経緯はわからないが、16.04時点で vinoはあきらめ、x11vncに移行した記憶がある。
18.04はどうなのだろう。調べてみた限りやはり一筋縄ではいかないらしい。

x11vncを使うにしても、18.04の目玉の一つである GDMを従来の LightDMへ変更したりと、こちらはこちらで苦労するようだ。

さて、どうしたものだろうと。ネットを探ってみると、Ubuntu18.04LTSに、ヘッドレスで VNCを組み込む際に苦労している箇所をある程度絞り込めた。

今回は、12.04以来使っていなかった vinoによる VNC接続設定がテーマ。

vinoの暗号方式にWindowsが対応していないので、それを解除する

vinoは、「設定」 ⇒ 「共有」 ⇒ 「画面共有」で設定する。
ただし、これだけでは Windowsからは接続できない。これ以降は沼地であり、そこに足を踏み入れることになる。

ubuntu 18.04の画面共有設定

ヘッドレスで使う使わないにかかわらず、最初に躓くのが vinoの暗号化方式。
Windowsから接続する際、どのクライアントソフトも、「暗号化方式に互換性がありません」などのエラーを吐いて接続できない。

試した中で、これを解決する最も簡単な方法は、dconf-editorを使うこと。

sudo apt install dconf-editor

アプリケーションランチャーで、 dconf-editorを開き、「org」⇒ 「gnome」 ⇒ 「desktop」 ⇒ 「remote-access」中の「require-encryption」を「オフ」にする。

一つ上の項目、「prompt-enabled」も「オフ」にする。

ubuntu 18.04の画面共有設定

NICが複数ある時の設定

サーバー用 PCでは、複数の NICを搭載させるケースがある。全ての NIC経由で VNC接続が可能になるように設定する。
なぜこのような事をするかと言うと、複数の NICに LANケーブルを接続した状態で Ubuntuを立ち上げると、なぜかどちらの NICからも VNC接続ができなかったから。

また、dconf-editor中の設定プロパティに、待ち受けするインターフェースの設定らしき項目があったが、うまく機能してくれなかった。
なので、dconfをコマンドラインから直接いじる。

まずは、ネットワークインターフェースの UUIDを確認。

$ nmcli connection show ↵
NAME	UUID	TYPE	DEVICE
有線接続 1	72ea97bb-1093-xxxx-xxxx-xxxxxxxxxxxx	ethernet		enp1s0
有線接続 2	fbcee97d-77ac-xxxx-xxxx-xxxxxxxxxxxx	ethernet		enp2s0 

「有線接続 1」と「有線接続 2」の 2枚の NICが確認できた。ちなみに、UUIDはそれぞれの環境で異なる。
2枚の NICを VNC待ち受けインターフェースとして機能させるには、以下のコマンドを使い、UUIDをカンマで区切って登録する。

$ dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['72ea97bb-1093-xxxx-xxxx-xxxxxxxxxxxx','fbcee97d-77ac-xxxx-xxxx-xxxxxxxxxxxx']" ↵

これで、2枚の NICいずれからも VNC接続ができるようになった。

モニタ無しでVNC接続ができるようにする

vinoは、デスクトップに表示された画面のクローンをネットワーク経由で表示させる。ディスプレイを PC本体から取り外してしまうと、元のが画面がないのでクローン表示できなくなってしまう。

ダミービデオドライバをインストールする

ディスプレイを接続せずに、VNCで画面表示させるため、ダミーのビデオドライバを使って X.Org(X11)を動作させる。
ダミーのビデオドライバである xserver-xorg-video-dummyは、ubuntuパッケージ検索から拾ってくる。
Ubuntuのバージョンが 18.04.2以降であれば、hwe版をインストール。

sudo apt-get install xserver-xorg-video-dummy-hwe-18.04   ↵

VNC表示画面設定ファイルを作る

VNCで接続した画面の表示設定をファイルに保存する。ファイル名の頭の 20は優先順位を示すもので、ファイル名は必ず数値から始まるものを作る。

sudo nano /usr/share/X11/xorg.conf.d/20-dummy.conf

書き込む内容は以下。出力画面関連のみを設定。

Section "Monitor"
Identifier "Monitor0"
HorizSync 5.0-200.0
VertRefresh 5.0-200.0
# 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz
Modeline "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync
EndSection

Section "Device"
Identifier "Card0"
Option "NoDDC" "true"
Option "IgnoreEDID" "true"
Driver "dummy"
EndSection

Section "Screen"
DefaultDepth 24
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
    SubSection "Display"
    Depth 16
    Modes "1368x768"
    EndSubSection
EndSection

105と106行目は、環境に応じて設定する。解像度の設定値は、cvtコマンドで生成する。例をいくつか挙げておく。

$ cvt 1024 768
# 1024x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 64.11 MHz
Modeline "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync

$ cvt 1280 720
# 1280x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 74.48 MHz
Modeline "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync

$ cvt 1368 768
# 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz
Modeline "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync

$ cvy 1600 900
# 1600x900 @ 60.00 Hz (GTF) hsync: 55.92 kHz; pclk: 119.00 MHz
Modeline "1600x900_60.00" 119.00 1600 1696 1864 2128 900 901 904 932 -HSync +Vsync

$ cvt 1920 1080
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync

$ cvt 3840 2160
# 3840x2160 @ 60.00 Hz (GTF) hsync: 138.90 kHz; pclk: 740.06 MHz
Modeline "3840x2160_60.00i" 740.06 3840 4160 4584 5328 2160 2162 2168 2314 -HSync +Vsync

ディスプレイサーバーをX.Orgに固定する

Ubuntu 18.04 LTSのデスクトップ環境には、「X.Org」と「Wayland」という、2つの「ディスプレイサーバー」がインストールされている。基本的に、VNCでは X.Org(X11)でしか使わないので、切り替えを無効にする。設定箇所は、/etc/gdm3/custom.conf内。

# Uncoment the line below to force the login screen to use Xorg
# WaylandEnable=false
のコメントアウトをはずす。

# Uncoment the line below to force the login screen to use Xorg
WaylandEnable=false

以上で終了。お疲れさまでした。



コメントを残す

メールアドレスが公開されることはありません。