xrdp on Raspberry Pi
- 2021-11-17 初版
- 2023-09-15 第2版 checkout
はじめに
- bullseyeにしたところ、xrdpが動かなくなりました。
- 正確にいうと、Zeroでは動くのですが、4Bで動きません。
- ログインしようとすると5分でタイムアウトします。
- 両方とも同じようにOSからインストールしたのですが、一方では動き一方では動きません。
- 違いを探したのですが見つかりません。原因がわかりません。
- ネット上の対策もやってみたのですが、ことごとく動きません。明確な原因もわかりません。
- そこで、最新のxrdpをコンパイルしてインストールすることにしました。
- 将来にわたって解決策になるわけではありませんが、xrdpをソースからコンパイルする方法を知っておいても損はないでしょう。
- いろいろ悩むより、最新版を試すほうが早かったりします。
- 時間を無駄にしないようにしましょう。
著作権と免責事項
- 個人利用に限定され、著作権者の許可なく商用利用できません。
- 直接間接に関わらず、使用によって生じたいかなる損害も筆者は責任を負いません。
環境
- 動かない環境
- $ uname -a
- Linux raspberrypi 5.10.63-v7l+ #1459 SMP Wed Oct 6 16:41:57 BST 2021 armv7l GNU/Linux
- $ sudo apt install xrdp
- $ apt list | grep xrdp
- xorgxrdp/stable,now 1:0.2.12-1 armhf [インストール済み、自動]
- xrdp/stable,now 0.9.12-1.1 armhf [インストール済み]
- 動く環境
- $ uname -a
- Linux raspberrypi 5.10.63+ #1459 Wed Oct 6 16:40:27 BST 2021 armv6l GNU/Linux
- $ sudo apt install xrdp
- $ apt list | grep xrdp
- xorgxrdp/stable,now 1:0.2.12-1 armhf [インストール済み、自動]
- xrdp/stable,now 0.9.12-1.1 armhf [インストール済み]
X11の設定注意
- なお、追加でX11の設定を行っていると、xrdp が動きません。
- 例えば、/etc/X11/xorg.conf.d/ にファイルを設定している場合です。
- 回避方法として設定ファイルを参照しないようにします。
- $ sudo mv /etc/X11/xorg.conf.d /etc/X11/xorg.conf.d_
- 筆者はfbtftでX11の設定を行い、xrdp が動かなくなり、しばらく悩まされました。
- 関連事項としてX11が起動しないエラーがあります。
- pi ユーザで startx を起動できないことと関連しています。
- $ grep EE ~/.xorgxrdp.10.log
- (EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
- コンソールをオープンできないために停止します。
- 回避方法は/etc/xrdp/sesman.ini の[Xorg]にパラメータ追加します。
- param=-configdir
- param=/
xrdpのダウンロード
- xrdp と xorgxrdp をソースからコンパイルします。
- ソースは https://www.xrdp.org/ にあります。
- xrdpとxorgxrdpをダウンロードします。
- $ git clone --recursive https://github.com/neutrinolabs/xrdp
- $ git clone https://github.com/neutrinolabs/xorgxrdp
- バージョンを確定します。これをしないと正しく動作しません。はまりました。
- $ cd xrdp
- $ git checkout refs/tags/v0.9.23
- $ cd xorgxrdp
- $ git checkout refs/tags/v0.9.19
コンパイルに必要なパッケージをインストール
- $ sudo apt install -y autoconf
- $ sudo apt install -y libtool
- $ sudo apt install -y libssl-dev
- $ sudo apt install -y libpam0g-dev
- $ sudo apt install -y libx11-dev
- $ sudo apt install -y libxfixes-dev
- $ sudo apt install -y libxrandr-dev
- $ sudo apt install -y xserver-xorg-dev
- コンパイル後には不要なので削除しても構いません。
コンパイルとインストール
- 古いパッケージを削除します。
- $ sudo apt purge -y xrdp
- $ sudo apt purge -y xorgxrdp
- remove ではなく purge を使います。設定ファイルも削除します。
- コンパイルはxrdp、xorgxrdp の順で行います。xrdp をインストールしておかないと xorgxrdpをコンパイルできません。
- $ cd xrdp
- $ ./bootstrap
- $ ./configure
- $ make
- $ sudo make install
- /usr/local/sbin にインストールします。
- $ cd xorgxrdp
- $ ./bootstrap
- $ ./configure
- $ make
- $ sudo make install
- ちなみに、削除はuninstallです。
- $ sudo make uninstall
不要ファイルの削除
- $ cd
- $ rm -f -r xrdp
- $ rm -f -r xorgxrdp
サービスの操作
- 念のためリブートします。
- 2つのサービスの状態を確認します。active (running) が正常です。
- $ systemctl status xrdp
- $ systemctl status xrdp-sesman
- 動作していなければ操作します。
- $ sudo systemctl enable xrdp
- $ sudo systemctl enable xrdp-sesman
- $ sudo systemctl start xrdp
- $ sudo systemctl start xrdp-sesman
- 設定ファイル
- $ sudo vi /lib/systemd/system/xrdp.service
- $ sudo vi /lib/systemd/system/xrdp-sesman.service
- 変更した場合
- $ sudo systemctl daemon-reload
ログの確認
- ログを確認します。
- ホームディレクトリにあります。隠しファイルです。
- .xorgxrdp.10.log
- .xsession-errors
- /var/log にあります。
- xrdp-sesman.log
- xrdp.log
- 設定ファイルは /etc/xrdp にあります。
- $ sudo vi /etc/xrdp/xrdp.ini
- $ sudo vi /etc/xrdp/sesman.ini
ユーザxrdpをssl-certグループに追加
- /var/log/xrdp.log
- Cannot read private key file /etc/xrdp/key.pem: Permission denied
- 回避策
- $ sudo adduser xrdp ssl-cert
- $ sudo systemctl restart xrdp
オーディオのxrdp
- pulseaudio-module-xrdp
- ダウンロード
- $ git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
- コンパイル
- $ cd pulseaudio-module-xrdp
- $ cd scripts
- $ ./install_pulseaudio_sources_apt_wrapper.sh --mirror=http://raspbian.raspberrypi.org/raspbian --keyring=/etc/apt/trusted.gpg
- 1時間以上かかる。途中 wget でエラーになる。Removeのexit 1をコメントアウトする。何度か実行すると wget を成功する。
- $ cd ..
- $ sudo apt -y install autoconf libtool libpulse-dev
- $ ./bootstrap
- $ ./configure PULSE_DIR=$HOME/pulseaudio.src
- $ make
- $ sudo make install
- $ sudo reboot
- オーディオ出力のリスト
- $ pacmd list-sinks
- オーディオの再生
- $ paplay -d xrdp-sink One.wav
©2021-2023 All rights reserved by Y.Onodera.