xrdp v0.9.1をRaspberry Pi 3にインストールする
xrdpのバージョン0.9.1がリリースされました。
RASPBIAN JESSIEにインストールする方法の2016年版として手順を書いておきます。
xrdpのバージョン0.9.1がリリースされました。関係者の皆様、ありがとうございます。とても便利なソフトウエアです。
Release notes for xrdp v0.9.1 (2016/12/21)
2016年のまとめてして現在のビルド手順を書いておきます。
今現在私の試したところではクリップボード、サウンド、ドライブのリダイレクトが使えています。
ですがビルド手順に若干の不具合があります。今回のリリースでインストールのスクリプト化ができるかと期待しましたが、まだできません。
変更点の確認
バージョン0.9.1で私が気になる点を挙げてみます。
- Initial support for RemoteFX Codec (disabled by default)
- Support clients that don't support drawing orders, such as MS RDP client for Android, ChromeRDP (disabled by default)
RASPBIAN JESSIE WITH PIXELで使うにはsystemdサポートというのが役に立ちます。インストールがとても簡単になりました。
- Added files for systemd support
RemoteFXもビルド手順が簡潔になりました。
最も気になっていたのはandroidのリモートデスクトップアプリから使えるようになるというものです。
【公開日の17:45に修正:
Microsoft Remote Desktopで接続できました。betaでなくても接続できます。
】
Raspberry Pi 3でビルドしてインストールする
RASPBIAN JESSIE PIXEL Version:November 2016 を使います。ビルドとインストール手順の確認
新バージョンのリリースと共にドキュメントも更新されているようです。一通り目を通しましょう。Building on Debian 8 neutrinolabs/xrdp
Compiling and using xorgxrdp
Audio Output Virtual Channel support in xrdp
Raspberry Pi 3の更新
sudo apt-get -y update sudo apt-get -y upgradeリポジトリをアップデートします。ファームウエアの更新もあるようです。
バージョンは次のようになっています。
pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l GNU/Linux
ビルドする
それではビルドしてみます。ソースはgitで取ってきます。ホームディレクトリのDownloadsフォルダで作業します。Windowsパソコンでこのページを表示してコマンドをコピペする方は改行コードに気を付けてください。改行コードが異なるため動かない場合があります。
必要なパッケージをインストールします。
sudo apt-get -y install libx11-dev libxfixes-dev libssl-dev libpam0g-dev libtool libjpeg-dev flex bison gettext autoconf libxml-parser-perl libfuse-dev xsltproc libxrandr-dev python-libxml2 nasm xserver-xorg-dev fuse libmp3lame-dev
ソースを取得します。
cd ~/Downloads git clone https://github.com/neutrinolabs/xrdp.git git clone https://github.com/neutrinolabs/xorgxrdp.gitバージョンを確認します。
cd xrdp git tag -lバージョン0.9.1を使いますが次のコマンドはやらなくてもいいと思います。何かおかしいときの避難場所です。develブランチを選べば最新版を試せます。
git checkout refs/tags/v0.9.1サブモジュールを更新します。ここでサブモジュールのmakeをするのかしないのかわからなくなりました。makeしなくとも後でまとめてやってくれるようになったと思うのですが。
git submodule init git submodule updateコンパイルします。"--enable-painter"とするとandroidアプリから使えるようになります。
./bootstrap ./configure --enable-fuse --enable-rfxcodec --enable-mp3lame --enable-pixman --enable-painter --disable-ipv6 sudo make -j4 sudo make install cd ..
次にxorgxrdpをビルドします。
このまま行うとmakeがエラーで終了します。fontutil.hが無いためです。なぜ存在しなくなったのかわかりません。10月ごろは問題なくビルドできていましたけど。
/usr/include/X11/fontsフォルダにfontutil.hファイルを作ってください。ファイルの中身は検索して入れてください。
ファイルを入れたら続けます。
cd xorgxrdp sudo ./bootstrap sudo ./configure sudo make -j4 sudo make install cd ..
音を出すためpulseaudioのsinkモジュールを作る
音を出すためにpulseaudioのsinkモジュールを作ります。sudo apt-get install -y intltool libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev libcap-dev cd ~/Downloads wget https://freedesktop.org/software/pulseaudio/releases/pulseaudio-5.0.tar.gz tar -zxvf pulseaudio-5.0.tar.gz cd ~/Downloads/pulseaudio-5.0 ./configure cd ~/Downloads/xrdp/sesman/chansrv/pulse sudo sed -i 's/PULSE_DIR = \/home\/lk\/pulseaudio-1.1/PULSE_DIR = \/home\/pi\/Downloads\/pulseaudio-5.0/g' Makefile sudo make sudo cp *.so /usr/lib/pulse-5.0/modules/ cd ~【公開日に追記: piユーザのホームディレクトリの例を書いています。PULSE_DIRを確認してください。
】
以前の私の手順ではpulseaudioのsinkモジュールを動かすために"/etc/pulse/default.pa"ファイルを編集していましたが、その必要はありませんでした。
xrdp接続時には"/etc/xrdp/pulse/default.pa"が読み込まれます。このファイルにはすでにsinkモジュールを呼び出す記述がされています。
上で紹介した"Audio Output Virtual Channel support in xrdp"に書かれていました。
設定ファイルを修正する
xrdpの設定ファイルを修正します。sudo sed -i.bak 's/^\(EnvironmentFile.*sysconfig.*\)/#\1/' /lib/systemd/system/xrdp.service sudo sed -i 's/^\(EnvironmentFile.*\)\(\/etc\/default\/xrdp\)/\1\/etc\/xrdp/' /lib/systemd/system/xrdp.service sudo sed -i 's/^\(ExecStart.*\)\(\/usr\/sbin\/xrdp\)\(.*\)/\1\/usr\/local\/sbin\/xrdp\3/' /lib/systemd/system/xrdp.service sudo sed -i 's/^\(ExecStop.*\)\(\/usr\/sbin\/xrdp\)\(.*\)/\1\/usr\/local\/sbin\/xrdp\3/' /lib/systemd/system/xrdp.service sudo sed -i.bak 's/^\(EnvironmentFile.*sysconfig.*\)/#\1/' /lib/systemd/system/xrdp-sesman.service sudo sed -i 's/^\(EnvironmentFile.*\)\(\/etc\/default\/xrdp\)/\1\/etc\/xrdp/' /lib/systemd/system/xrdp-sesman.service sudo sed -i 's/^\(ExecStart.*\)\(\/usr\/sbin\/xrdp\)\(.*\)/\1\/usr\/local\/sbin\/xrdp\3/' /lib/systemd/system/xrdp-sesman.service sudo sed -i 's/^\(ExecStop.*\)\(\/usr\/sbin\/xrdp\)\(.*\)/\1\/usr\/local\/sbin\/xrdp\3/' /lib/systemd/system/xrdp-sesman.serviceサービスに登録します。
sudo systemctl daemon-reload sudo systemctl enable xrdp.service sudo systemctl start xrdp.service
この後再起動します。
リモートデスクトップで接続してみる
再起動したらもうリモートデスクトップで接続できるはずです。Windowsのリモートデスクトップが良いでしょう。ログイン画面が出たら半分成功です。
"Session"ではXorgを選択します。X11rdpでは動きません。vncサーバをインストールしていればXvncでも接続できるはずですが、rdpではなくvncを使うためxrdpを使う意味はほとんどありません。
セッションを正しく選択しユーザ名とパスワードを入れてOKを押せばデスクトップが表示されるでしょう。
最初にXorgが選択されていないのは面倒です。/etc/xrdp/xrdp.iniファイルを編集し[Xorg]セクションを[X11rdp]セクションの前に移動しましょう。
音を出す
デスクトップが表示されて安心したところで音がでない事に気づくと思います。pulseaudioが動いていないためです。デスクトップが表示されたらターミナルを開いて次のコマンドを入れてください。
start-pulseaudio-x11このコマンドを自動で動かせばわざわざ手で入れる必要はなくなるのですが、どこに書けばいいのか未だにわかりません。
sudoでウインドウが開かない
最近リポジトリの更新をしたらsudoでテキストエディタなどを開けなくなりました。raspbianの何かが変わったようです。そんな時は次のコマンドを入れます。xhost +
まとめ
まとまってないまとめです。
当初、xrdpをビルドして動かすのはとても面倒なことだと思っていました。jessieでの情報がとても少なかったからです。他のディストリビューションでの不具合も目についてしまいます。
ですが今はコンパイルするだけで動くと言ってもいいくらい簡単になっています。
リポジトリにもxrdpはあります。ですがバージョン0.6ととても古いです。クリップボードのリダイレクトすら動きません。リポジトリからインストールする意味は全く無いでしょう。
ソースからのインストールはとても簡単です。ぜひ試してください。
【公開日の17:45に修正:
androidのアプリ Microsoft Remote Desktopで接続できました。
アプリにユーザIDを登録すればログイン画面は表示されずすぐにデスクトップが表示されます。デスクトップ解像度も任意に設定できて大変便利です。クリップボード、ドライブ、サウンドのリダイレクトもできました。
ただしサウンドは途切れ途切れになってしまいます。YouTube再生時のCPU負荷は45%ほどでした。パソコンとandroidでCPU負荷に違いはありません。android側のデコードが間に合わないのでしょうかね。
パソコンとandoroidで解像度が違うと同じセッションを維持できないようです。
昨日インストールした直後は動きませんでした。アップデートもコンパイルのし直しもしていないのに今試したら動きました。動かなかったのはなんだったんだろう・・・ 理由がわからずに症状が変わる・・・
】
raspbianで未だにわからないのはスタートアップスクリプトを書いておく場所です。
start-pulseaudio-x11は重複起動とか面倒を見てくれているようなのでこれを使いたいのですが、それらしいファイルに追加しても起動してくれません。ウインドウができる前に呼ばれてる感じです。テキストエディタとかなら動くのになぁ。
今回はmateデスクトップを使っていません。気のせいかmateの方が軽い気がします。mate入れようかな・・・
Linuxユーザの方にはxrdpを使う意味はほとんど無いでしょうが、raspberry piで遊ぶwindowsユーザにとっては必須のソフトウエアと言えるでしょう。
ラズパイ専用のモニタやキーボードが無いという方にはなおさらです・・・それ私ですけど。
コメント
コメントを投稿