xrdp v0.9.2をRaspberry Pi 3でビルドする
以前の記事でxrdpのv0.9.1のインストール手順を書きました。
xrdp v0.9.1をRaspberry Pi 3にインストールする
v0.9.2がリリースされたので改めてビルドとインストールを行ってみます。
新たにエラーが生じる箇所が増えたので修正箇所も増えました。
Raspberry Piでxrdpをビルドして使えるようにします。
xrdpとはWindowsのリモートデスクトップ接続でRaspberry Piの画面を表示させるためのプログラムです。
クリップボードやパソコンのドライブの共有もできます。パソコンと簡単にファイルのやり取りができます。
Raspberry Pi上での音をパソコンから鳴らせます。
Raspbianのリポジトリ上にあるxrdpはバージョンンが古いため上記の機能は使えず実用的ではありません。
自分で最新版をビルドしてインストールします。そんなに難しい事はないので手順を紹介しておきます。
https://github.com/neutrinolabs/xrdp/wiki#building-from-sources
RASPBIAN JESSIEの場合はDebian 8とほぼ同じになります。
OSのパッケージを最新の状態にします。
今回のOSのバージョンは次になります。
必要なライブラリをインストールします。
ソースコードを取得します。Downloadsディレクトリに展開します。
xrdpのバージョンを確認します。
タグでバージョンを変更できます。最新バージョンをお薦めします。バージョンの指定は次のようにします。
サブモジュールを更新します。
ビルド条件を設定します。
xorgxrdpをビルドします。
fontutil.hを手動で作成します。
/usr/include/X11/fontsフォルダにfontutil.hファイルを作ってください。
ファイルができたらsudo make -j4からやり直します。
pulseaudioのバージョンを確認します。
必要なライブラリをインストールします。
ビルドします。
~/Downloads/xrdp/sesman/chansrv/pulseディレクトリのMakefileファイルを修正します。テキストエディタでMakefileを開きます。
次のCFLAGSの行を探します。
引用ページコメントにあるようにこれはxrdpのデフォルトの値を使っている場合の変更です。独自のディレクトリ指定をしている方はもう少し修正が必要です。
これで先ほどのsudo makeからやり直します。
正しくつながればログイン画面が出るでしょう。
Sessionでは"Xorg"を選択します。xrdpのv0.9.2からは"Xorg"がデフォルトのセッションになりました。
ユーザー名とパスワードを入れればデスクトップが表示されるでしょう。
パソコンとファイルの交換が簡単にできます。
ただし、改行コードが異なる事に注意が必要です。Raspberry Piの改行はLF、パソコンはCR+LFです。Raspberry Piに最初から入っているテキストエディタではこの両者の区別がつきません。
スクリプトをコピペして動作がおかしい時は改行コードを疑いましょう。
xrdpのバグなのか、私の設定が悪いのかわかりません。
xrdp v0.9.1をRaspberry Pi 3にインストールする
v0.9.2がリリースされたので改めてビルドとインストールを行ってみます。
新たにエラーが生じる箇所が増えたので修正箇所も増えました。
Raspberry Piでxrdpをビルドして使えるようにします。
xrdpとはWindowsのリモートデスクトップ接続でRaspberry Piの画面を表示させるためのプログラムです。
xrdp - an open source RDP serverRaspberry Piがネットにつながっていれば、ネットワーク上のWindowsパソコン、アンドロイドやiPhoneから操作する事ができます。
”xrdp provides a graphical login to remote machines using Microsoft Remote Desktop Protocol (RDP). xrdp accepts connections from a variety of RDP clients: FreeRDP, rdesktop, NeutrinoRDP and Microsoft Remote Desktop Client (for Windows, Mac OS, iOS and Android).”
https://github.com/neutrinolabs/xrdp より
クリップボードやパソコンのドライブの共有もできます。パソコンと簡単にファイルのやり取りができます。
Raspberry Pi上での音をパソコンから鳴らせます。
Raspbianのリポジトリ上にあるxrdpはバージョンンが古いため上記の機能は使えず実用的ではありません。
自分で最新版をビルドしてインストールします。そんなに難しい事はないので手順を紹介しておきます。
xrdpのビルド
ビルド手順はこちらにあります。https://github.com/neutrinolabs/xrdp/wiki#building-from-sources
RASPBIAN JESSIEの場合はDebian 8とほぼ同じになります。
OSのパッケージを最新の状態にします。
sudo apt-get -y update sudo apt-get -y upgrade sudo reboot
今回のOSのバージョンは次になります。
pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.9.24-v7+ #993 SMP Wed Apr 26 18:01:23 BST 2017 armv7l GNU/Linux
必要なライブラリをインストールします。
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
ソースコードを取得します。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タグの一覧が表示されます。
タグでバージョンを変更できます。最新バージョンをお薦めします。バージョンの指定は次のようにします。
git checkout refs/tags/v0.9.2このコマンドを実行しなければ最新のコードになりますが、開発中コードになるため不具合がある場合が多くなります。
サブモジュールを更新します。
git submodule init git submodule update
ビルド条件を設定します。
./bootstrap ./configure --enable-fuse --enable-mp3lame --enable-pixman --enable-painter --disable-ipv6 sudo make -j4 sudo make install cd ..
xorgxrdpをビルドします。
cd xorgxrdp sudo ./bootstrap sudo ./configure sudo make -j4 sudo make install cd ..この記事公開時ではmakeがエラーで終了します。
/usr/include/xorg/dixfont.h:32:32: fatal error: X11/fonts/fontutil.h: No such file or directoryfontutil.hが無いためです。なぜこのエラーが出るのか原因はまだわかってません。
fontutil.hを手動で作成します。
/usr/include/X11/fontsフォルダにfontutil.hファイルを作ってください。
sudo touch /usr/include/X11/fonts/fontutil.hファイルの中身は検索して入れてください。"fontutil.h" でググって最初に出てきたページで良いでしょう。/usr/include/X11/fonts/fontutil.hをテキストエディタで編集します。
ファイルができたらsudo make -j4からやり直します。
pulseaudioのsinkモジュールを作る
リモートデスクトップで音を出すためのモジュールを作ります。pulseaudioのバージョンを確認します。
pulseaudio --version5.0と表示されると思います。pulseaudioのソース取得時に同じバージョンのソースを取得します。
必要なライブラリをインストールします。
sudo apt-get install -y intltool libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev libcap-devpulseaudioをビルドします。バージョン5.0のソースを取得します。
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ここではpiユーザのホームディレクトリの例を書いています。異なるディレクトリで作業している場合はPULSE_DIRを確認し変更してください。
ビルドします。
sudo make sudo cp *.so /usr/lib/pulse-5.0/modules/ cd ~この記事公開時ではmakeがエラーで終了するでしょう。同様な症状はこちらのようです。
Pulse audio modules does not compile #723解決方法としては同引用ページのコメントに従います。
gkyildirim commented on 3 Apr
”I've cloned the latest code (7a7445f) and followed to build guide of xrdp audio support . make outputs error such as below.”
metalefty commented on 4 Aprxrdpのv0.9.2からはMakefileの変更がさらに必要なようです。
"You need to modify Makefile. Add -DXRDP_SOCKET_PATH=\"/path/to/xrdp_socket_dir\" to CFLAGS. The XRDP_SOCKET_PATH is set to /tmp/.xrdp if you don't override default value."
~/Downloads/xrdp/sesman/chansrv/pulseディレクトリのMakefileファイルを修正します。テキストエディタでMakefileを開きます。
次のCFLAGSの行を探します。
CFLAGS = -Wall -O2 -I$(PULSE_DIR) -I$(PULSE_DIR)/src -DHAVE_CONFIG_H -fPICこの行の最後に以下の赤文字のようにフラグを追加します。
CFLAGS = -Wall -O2 -I$(PULSE_DIR) -I$(PULSE_DIR)/src -DHAVE_CONFIG_H -fPIC -DXRDP_SOCKET_PATH=\"/tmp/.xrdp\"
保存してエディタを終了します。引用ページコメントにあるようにこれはxrdpのデフォルトの値を使っている場合の変更です。独自のディレクトリ指定をしている方はもう少し修正が必要です。
これで先ほどのsudo makeからやり直します。
xrdpの環境設定ファイルの修正
xrdpの設定をRASPBIANに合わせた値に修正します。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この後、再起動すればxrdpのビルドとインストールは完了です。
動作確認
Windowsパソコンのリモートデスクトップ接続からRaspberry Piのアドレスを指定して接続します。正しくつながればログイン画面が出るでしょう。
Sessionでは"Xorg"を選択します。xrdpのv0.9.2からは"Xorg"がデフォルトのセッションになりました。
ユーザー名とパスワードを入れればデスクトップが表示されるでしょう。
音を出す
このままでは音が出ません。ターミナルを開いて次のコマンドを入れます。start-pulseaudio-x11セッションを開く毎に実行する必要があります。どこかの設定に書いておけばいいと思うのですが、どこに書けばいいのかいまだにわかってません。
パソコンのドライブ
"thinclient_drives"というディレクトリがホームフォルダの下にできています。ここの下にパソコンのドライブがリダイレクトされて表示されます。パソコンとファイルの交換が簡単にできます。
クリップボード
パソコンとクリップボードが共有されています。ウェブサイトでの調べものが捗りますね。ただし、改行コードが異なる事に注意が必要です。Raspberry Piの改行はLF、パソコンはCR+LFです。Raspberry Piに最初から入っているテキストエディタではこの両者の区別がつきません。
スクリプトをコピペして動作がおかしい時は改行コードを疑いましょう。
sudoでのGUI
sudoでGUIウインドウを開くさいエラーが表示されるかもしれません。$ sudo leafpad No protocol specified leafpad: ディスプレイをオープンできません:こんな時は
xhost +を実行します。
不具合
クリップボード/サウンド/ドライブのリダイレクトは時間が経つと機能しなくなるようです。xrdpのバグなのか、私の設定が悪いのかわかりません。
コメント
コメントを投稿