RASPBIAN STRETCHでxrdpをビルドする

Raspbian Stretch xrdp
RASPBIAN STRETCHではレポジトリのxrdpのバージョンが0.9.1になりました。
レポジトリのパッケージを使えばxrdpでクリップボードとドライブのリダイレクトが使えます。
自分でビルドする理由がほぼ無くなりました。ですが最新バージョンを使ってみたいのでビルドしてみます。ビルドスクリプトも作ってみました。


ビルド手順はjessieの時とほとんど変わらないはずです。
しかしメジャーバージョンアップなので気づかない所が変わっているのかも・・・
関連記事:xrdp v0.9.2をRaspberry Pi 3でビルドする

最初からやってみましょう。

レポジトリの更新

まずは今回のバージョンの確認です。
$ uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
レポジトリ/パッケージを更新します。
sudo apt update
sudo apt upgrade
"apt-get"から"apt"へ変更しました。
Debian stretchベースに変わったので一から手順を見直しています。
Debian 管理者ハンドブック
6.2. aptitude、apt-get、apt コマンド
"最も推奨されるインターフェースは apt で、この節では apt を例に使います。apt のコマンドライン構文と apt-get や aptitude のコマンドライン構文はよく似ていることに注意してください。"
と書いてあるので今後はaptを使うようにしてみます。

xrdpのビルド

必要なライブラリパッケージをインストールします。最初から入っているパッケージが異なるようです。以前インストールしていたlibjson0-devが存在しなくなっています。そもそもなぜ入れたのか忘れています。
ライブラリが足りないとパッケージを入れろとメッセージが表示されるので、何も入れない状態からメッセージが表示されたパッケージだけインストールしました。
まとめるとこれです。
sudo apt  install -y autoconf libtool libssl-dev libpam0g-dev libfuse-dev libmp3lame-dev libpixman-1-dev libx11-dev libxfixes-dev libxrandr-dev xserver-xorg-dev
ソースはホームディレクトリ下の"Downloads"ディレクトリに置きます。
cd ~/Downloads
ソースファイルをダウンロードします。
git clone https://github.com/neutrinolabs/xrdp.git
git clone  https://github.com/neutrinolabs/xorgxrdp.git
xrdpのバージョンを確認します。
cd xrdp
git tag -l
この記事作成時ではv0.9.3.1が最新リリースにでした。
git checkout refs/tags/v0.9.3.1
スマートフォンのリモートデスクトップから接続するためにサブモジュールを使います。
サブモジュールを更新します。
git submodule init
git submodule update
ビルド条件を設定します。
./bootstrap
./configure --enable-fuse --enable-mp3lame --enable-pixman
ビルドします。
sudo make -j4
sudo make install
cd ..
xorgxrdpをビルドします。
cd xorgxrdp
sudo ./bootstrap
sudo ./configure
sudo make -j4
sudo make install
cd ..
fontutil.hのエラーは出なくなりました。
環境設定ファイルを変更します。jessieと少し変わります。
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.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 systemctl daemon-reload
sudo systemctl enable xrdp.service
sudo systemctl start xrdp.service
sudo reboot

pulseaudio sinkのビルド

xrdpで音を出す、サウンドをリダイレクトするにはpulseaudioのsinkモジュールをビルドします。
その前にRASPBIAN STRETCHでは、pulseaudioは使われていません。pulseaudioをインストールします。
sudo apt install pulseaudio
pulseaudioのバージョンを確認します。
$ pulseaudio --version
pulseaudio 10.0
バージョンは10.0となっていると思います。
pulseaudioのソースをダウンロードします。バージョンは同じもの、10.0をダウンロードします。
cd ~/Downloads
wget https://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.gz
tar -zxvf pulseaudio-10.0.tar.gz
cd ~/Downloads/pulseaudio-10.0
sinkモジュールをビルドします。
sudo apt install intltool libsndfile1-dev libspeex-dev libspeexdsp-dev libcap-dev
./configure
cd ~/Downloads/xrdp/sesman/chansrv/pulse
sed -i 's/PULSE_DIR = \/tmp\/pulseaudio-10.0/PULSE_DIR = \/home\/pi\/Downloads\/pulseaudio-10.0/g' Makefile
sed -ie '/CFLAGS/s/fPIC$/fPIC -DXRDP_SOCKET_PATH=\"\/tmp\/.xrdp\"/g' Makefile
sudo make
sudo cp *.so /usr/lib/pulse-10.0/modules/
cd ~
再起動します。

動作確認

再起動後、Windows PCのリモートデスクトップから接続します。
login画面が出れば成功です。

Sessionはxorgを選択します。xorg以外では接続できないでしょう。
ログインに成功すればRASPBIANの画面が表示されるでしょう。
クリップボード、PCのドライブがリダイレクトされ使えるでしょう。
しかし、音は出ませんでした。

音が出ない時は

pulseaudioが動いていないのかと思ったのですが動いているようです。jessieの時の、
start-pulseaudio-x11としてもダメです。
pulseaudioのミキサーを入れたりしましたが関係ありませんでした。
結局、pulseaudioを再起動すると音が出ました。
pulseaudio --kill
pulseaudio --start
と実行してください。これで音が出ると思います。
リモートデスクトップを切断し、再度接続しても音は出ました。pulseaudioデーモンが最初おかしいようです。なんでだろう?

xrdpビルドスクリプト

今回の手順をスクリプトにしてみました。
今のところxrdp v0.9.3.1決めうちになっています。体裁を今後整える予定です。
こちらで公開しておきます。
xrdp-builder-on-RASPBIAN-STRETCH / GitHub
【追記:17/08/26:”v0.1”とタグを付けました。】
cd ~/Downloads
git clone https://github.com/SignalFlagZ/xrdp-builder-on-RASPBIAN-STRETCH.git
cd xrdp-builder-on-RASPBIAN-STRETCH/
./xrdp-builder.sh

前回日本語環境を整えたところからビルドした様子をビデオにしてみました。
関連記事:RASPBIAN STRETCH August 2017には日本語フォントが入っていないようです


コメント

最近のコメント

Threaded Recent Comments will be here.