2016/04/30(土)ubuntu 16.04インストール(11) リモートデスクトップ(xrdp)
リモートのubuntuに何かさせたいとき、普通は単にsshで、GUIなアプリを使いたければssh -Xで済みますが、稀にデスクトップ全体を転送したいことがあります。それを実現するものとしては、windowsのリモートデスクトップとVNCが有名ですが、素のwindowsで使えるし速度も速いのでリモートデスクトップを愛用しています。
ところが、unityを採用している最近のubuntuは、リモートデスクトップやVNCのサーバになれません。代わりに標準で「デスクトップの共有」という機能があるのですが(プロトコルはVNC)、これは本体にログインしている状態でしか使えず、ログアウトしてしまうとリモートからログイン出来ないというとても不便なものです。
以下は、ubuntu 16.04に無理やりリモートデスクトップをやらせたときの記録です。
sudo apt install xrdpこれで、サーバそのものは簡単に入ります。しかし、全く動作せず、灰色の画面が出るだけです。動作させるには、リモートから接続した場合はunityを捨てて他のデスクトップを使うしかありません。gnome2の操作性で軽く、見た目を重視しているということで最近人気のある、「MATE」を入れてみました。「メイト」ではなく「マテ」と読むらしいです。
sudo apt install mate-desktop-environment sudo apt install mate-desktop-environment-extrasリモートでない本体の方でも使えるようになります。いったんログアウトするとデスクトップを選択するためのメニューが出るようになります。
さて、これだけではダメで、/etc/xrdp/startwm.sh を書き換えて、最終行の
. /etc/X11/Xsessionを消して
mate-sessionにします。これで一応動いたようですが、日本語キーボードにならず、またかな漢字変換も出来ません。
まず、キーボードを何とかします。これは検索するとたくさん見つかって、/etc/xrdp で
sudo wget http://www.mail-archive.com/xrdp-devel@lists.sourceforge.net/msg00263/km-e0010411.ini sudo mv km-e0010411.ini km-0411.ini sudo ln -s km-0411.ini km-e0010411.ini sudo ln -s km-0411.ini km-e0200411.ini sudo ln -s km-0411.ini km-e0210411.ini sudo systemctl restart xrdpとしたら直りました。
かな漢字変換は、fcitxがダメでibusにすれば大丈夫という情報がいくつか見つかりました。
sudo apt install ibus-mozc (すでに入っていた)/etc/xrdp/startwm.shのmate-session起動前に
export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS="@im=ibus" ibus-daemon -dを挿入したらうまく行きました。
ここまであれこれ入れると環境依存で不具合が出そうな気もしますが、参考になれば幸いです。
追記(2017年5月29日)
この方法を使ってNvidiaのGPUを積んだマシンをリモートで管理しようと思ったところ、なぜかNvidiaドライバを有効にするとxrdp経由で入ったときうまく動かず、firefoxが起動しなかったりかな漢字変換が起動しなかったりしていました。xorgドライバなら大丈夫なのですが、それだとcudaが使えず困ります。全く原因が分からずにしばらく放置していたのですが、偶然nvidiaドライバを入れたubuntuにVNC接続する際に一部のプログラムが起動しない(segmentation fault)場合の解決策
を見かけて解決しました。
cd /usr/lib/x86_64-linux-gnu/ sudo ln -s /usr/lib/nvidia-375/libGLX_indirect.so.0 .でうまくいきました。nvidia-375の数字の部分は今後のアップデートで変わっていく可能性があるので、そのときはまたやり直す必要があると思います。