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からは接続できない。これ以降は沼地であり、そこに足を踏み入れることになる。
ヘッドレスで使う使わないにかかわらず、最初に躓くのが vinoの暗号化方式。
Windowsから接続する際、どのクライアントソフトも、「暗号化方式に互換性がありません」などのエラーを吐いて接続できない。
試した中で、これを解決する最も簡単な方法は、dconf-editorを使うこと。
sudo apt install dconf-editor
アプリケーションランチャーで、 dconf-editorを開き、「org」⇒ 「gnome」 ⇒ 「desktop」 ⇒ 「remote-access」中の「require-encryption」を「オフ」にする。
一つ上の項目、「prompt-enabled」も「オフ」にする。
dconf-editorを使いたくない。
と言う人であれば、次の 1行のコマンドで達成できる。
gsettings set org.gnome.Vino require-encryption false
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(X11)」と「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
以上で終了。お疲れさまでした。
情報有難うございます。助かりました。”ユーザー”の設定として、自動ログインがオンになっていることも条件として必要かと思います。
新リリースの都度、ほぼリモート接続については苦労させられてます。
自動ログインに関するご指摘ありがとうございました。
今後ともよろしくお願いいたします。
とても参考になりました.ありがとうございました.
ちなみに、手元の環境では、この方法でモニタにつながないで起動すると「リモートのみ」となるようで、その後モニタを接続してログインすると、リモート側がログインしてしまい、ローカルは黒い画面+マウス・キーボード操作ができない...になるようです.20-dummy.confを削除して、再起動するまでこの状態は続きました.さらに、また、一度この状態になるとその状態を覚えてしまう(?)らしく、20-dummy.confを復活させると再び同じ状態になります.ローカルで保守しようとモニタをつなぐ場合は要注意ですね.
かわい様、こんばんは。
情報提供ありがとうございます。
一度 VNCでの接続が成功してしまうと、以降ローカルで動かすことが無いため、本件については気が付きませんでした。
ちんみに、こちらのサイトは、ubuntu16.04上で動作しています。サポート期限の関係で、次の正月には 20.04に入れ替える予定です。
VNCを含め、スムースに問題なく移行できることを願うばかりです。
今後ともよろしくお願いいたします。