LoginSignup
4
10

More than 5 years have passed since last update.

Manjaro Linux MATE 17.0 + xrdp + xorgxrdpでのリモートデスクトップ

Last updated at Posted at 2017-05-02

はじめに

xrdpを使ったリモートデスクトップ環境をセットアップしたので、そのメモ。

環境

  • Manjaro Linux Mate (17.0)
  • テスト用のためFW設定は省略

ソフトウェアバージョン

  • xrdp 0.9.2-1 (AUR)
    • AURで提供されているので、yaourtなどで入れる。
  • xorgxrdp 0.2.1
    • まだAURには登録されていなかったので、 xorgxrdpからインストール。

WMを起動できないとき、xrdpはxtermを起動する設定になっているので、xtermも入れておくと問題の解決に役立つかもしれない。

インストール直後の状態

xrdp.servicexrdp-sesman.service は実行できる状態だが、実際に接続してもデスクトップ画面は現れない。順をおって解決していく。

Xorg.Wrapを動くようにする

デスクトップ画面が出ない状態でプロセス一覧を見ると、Xorg.wrap が止まったままになっている。どうも正しい権限で実行できていないようにみえるので、以下のような設定ファイルを作成してやる。

/etc/X11/Xwrapper.config
allowed_users=anybody
needs_root_rights=auto

pam.dの修正

接続してみると、今度はDBus関連のエラーが表示されてしまう。startwm.shのタイミングですでにDBus関連の環境変数が落ちてしまっているので、xrdpのIssue情報を元に修正をする。

/etc/pam.d/xrdp-sesman
auth      include   system-remote-login
account   include   system-remote-login
password  include   system-remote-login
session   include   system-remote-login

これでstartwm.shにいくつかの環境変数が渡るようになる。

.xinitrcの修正

上記修正をしても、まだDBusのエラーが表示されてしまう。実際には、Manjaro Linux MATE版は.xinitrcdbus-launchが走るようになっているのだが、これが正しく動いていない様子。調べたところ、--exit-with-sessionがなければ動作するようであった。

.xinitrc
get_session(){
-        local dbus_args=(--sh-syntax --exit-with-session)
+        local dbus_args=(--sh-syntax)
        case $1 in
                awesome) dbus_args+=(awesome) ;;
                bspwm) dbus_args+=(bspwm-session) ;;
                budgie) dbus_args+=(budgie-desktop) ;;
                cinnamon) dbus_args+=(cinnamon-session) ;;
                deepin) dbus_args+=(startdde) ;;
                enlightenment) dbus_args+=(enlightenment_start) ;;
                fluxbox) dbus_args+=(startfluxbox) ;;
                gnome) dbus_args+=(gnome-session) ;;
                i3|i3wm) dbus_args+=(i3 --shmlog-size 0) ;;
                jwm) dbus_args+=(jwm) ;;
                kde) dbus_args+=(startkde) ;;
                lxde) dbus_args+=(startlxde) ;;
                lxqt) dbus_args+=(lxqt-session) ;;
                mate) dbus_args+=(mate-session) ;;
                xfce) dbus_args+=(xfce4-session) ;;
                openbox) dbus_args+=(openbox-session) ;;
                *) dbus_args+=($DEFAULT_SESSION) ;;
        esac

        echo "dbus-launch ${dbus_args[*]}"
}
exec $(get_session)

番外編: NVIDIA GPUでxorgxrdpが読まれるようにする

video-nvidia を使っている場合、mhwdのxorg.conf(/etc/X11/xorg.conf.d/90-mhwd.conf)が読まれてしまい、xorgxrdpが読まれないことがある。幸い、sesman.iniからXorgへオプションを渡すことができるので、/etc/xrdp/sesman.iniを以下のように修正することで回避する。

/etc/xrdp/sesman.ini
[Xorg]
param=Xorg
param=-config
param=xrdp/xorg.conf
param=-noreset
param=-nolisten
param=tcp
param=-logfile
param=.xorgxrdp.%s.log
+param=-layout
+param=X11 Server
4
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10