テクニカルプア

備忘録と若干の補足

DS61 V1.1 を買った + xrdp で RDP と仲良くなるまでのメモ

通して読んでみると別に RDP と仲良くなれてないな。まあいいか。そんなかんじの内容です。

前フリ

掲題のパソコンを友人から購入した。以下で紹介されているものを手頃な金額で譲ってもらえた。 hanjuku-am2.hatenablog.com

とくに目的のない買い物ではあった。悩む理由が金なら買え、という古からの金言に従ったかたちとなる。

手にいれてからしばらく放置していたのだが、宅内サーバ的な用途で動かしたり動かさなかったりしている ThinkPad X61 & X201s をこいつで置き換えてしまおうと思い立ち、いつもどおり Arch をいれて動かせるようにしてみた。

ちなみに後者はこれで入手したものである。もう3年もまえになるのだな……。

で、作業している間にこいつを Blu-ray 再生専用機に仕立て上げ、手元の PC(これも今だにこの X201s。もう6年も前か……)に負荷をかけることなく映画を観ようと思い至った。 xrdp あたりをいれて手元 PC へ RDP で映像と音を飛ばしてもらうおうという魂胆である。

で、やってみたのだが割と苦戦した。DS61 V1.1 の中の SSD が吹き飛んで再びセットアップしなくてはならなくなった時に泣かないよう、今回泣いた内容を記録しておこうと思う。ということで私的な備忘録であり体系立ってはいないメモをかく。

初期設定

Installation guide - ArchWiki に従い素直にやる。

とりあえずちゃんと動くようになったら yay とかをいれて AUR も使えるようにしておく。

sudo の設定をした上で必要そうなグループにもユーザをいれておく:

$ sudo gpasswd -a $USER users

X をうごかす

まずはお約束のやつをいれる:

# pacman -S xorg-server
# pacman -S xf86-video-intel xf86-video-fbdev xf86-video-vesa

/etc/mkinitcpio.confMODULESi915 をいれてカーネルイメージを作りなおすやつもやる:

# grep 'MODULES=' /etc/mkinitcpio.conf | grep -v '#'
MODULES=(i915)
# mkinitcpio -P

おわったら再起動をする。

こんかい当初はデスクトップ環境という大物をいれるのはやめて i3 + ly でシンプルにやろうとした。が、挫折した。諦めて馴れ親しんだ KDE をうごかすことにした:

# pacman -S plasma

当初は SDDM もいれたが、xrdp でリモートデスクトップをやる場合はディスプレイマネージャが不要なので SDDM は不要であった。ゆえに消してある。これに気付くまでかなり時間がかかった。 要するに startx みたいな感じで X が起動されるため .xinitrc$HOME 下に置かねばならぬということで以下のようにする:

(注:ここの '#' はプロンプトではなくコメントの意)
# cat ~/.xinitrc
export DESKTOP_SESSION=plasma
exec dbus-run-session startplasma-x11

ディスプレイマネージャは不要ということがわかったので、次回おなじ作業をやるときは i3 でリベンジできるかもしれない。

PulseAudio でいいので以下のようにする:

# pacman -S pulseaudio pulseaudio-alsa

一応この時点で必要そうなグループにユーザをいれておく:

$ sudo gpasswd -a $USER audio

xrdp をうごかす

素直に以下のようにする:

$ yay -S xrdp xordxrdp pulseaudio-module-xrdp

今回バックエンドを xorgxrdp にしたので Xrdp - ArchWiki に従い /etc/X11/XWrapper.config をつくる:

(注:ここの '#' はプロンプトではなくコメントの意)
# cat /etc/X11/Xwrapper.config
allowed_users=anybody

わたしの環境だと xrdp.service が吊るしのままだとうまく起動しなかった。 どうもネットワーク系サービスの起動中にこいつが起きてしまうせいでコケるようだったので、こいつが依存している xrdp-sesman.servicenetwork-online.target の後で起動させるようにしてみた:

(注:ここの '#' はプロンプトではなくコメントの意)
# cat /etc/systemd/system/xrdp-sesman.service.d/override.conf
[Unit]
After=network-online.target

ここまでやったら以下のようにして xrdp が起動してくるようにしてやる:

# systemctl enable xrdp.service
# systemctl enable xrdp-sesman.service

必要そうなグループにユーザをいれるやつもやる:

$ sudo gpasswd -a $USER video

Blu-ray を再生できるようにする

いつも mpv を使用しているのでそんな感じにやる:

$ sudo pacman -S mpv libbluray
$ yay -S makemkv-cli
$ yay -S makemkv-libaacs

makemkv-cli の作業中に教えてもらえる以下もやる:

# echo sg > /etc/modules-load.d/sg.conf

必要なグループにユーザをいれる。これをしないと RDP セッション内で Blu-ray ドライブにアクセスできなかった:

$ sudo gpasswd -a $USER lp
$ sudo gpasswd -a $USER optical

あとはよしなに mpv の設定をする。個人の好みがあると思われるので内容は省略。 カーネルモジュールを読み込む設定をやっているので作業のキリがよいところでマシンを再起動してやる。

RDP でつなぐ

KDE ユーザなので KRDC で繋ぐようにしてみた。適当に設定をして繋ぐ。ただしSoundOn This ComputerPulseAudio を選択してやる必要がある。

xrdp.service がうごいていれば問題なく接続できるはず。 ただしこれだと pulseaudio-module-xrdp をいれているにもかかわらず RDP セッション内からサウンドバイスがみえない。どうしたものか。

RDP セッション内で音を出せるようにする

2日くらい難儀した結果、以下の情報をみつけた:

github.com

これに従い設定をしてみる。まずは以下をやる:

$ systemctl --user mask pulseaudio.service
$ systemctl --user mask pulseaudio.socket

このとき RDP セッション内のターミナルから作業すると Failed to get properties: Process org.freedesktop.systemd1 exited with status といわれて詰むので SSH などの別セッションから作業するとよい。

次にデスクトップ環境側から PulseAudio を起動させるようにする。KDE の場合は以下のようにする:

  1. System Settings を開く
  2. Startup and Shutdown -> Autostart
  3. Add から Add Application を選択
  4. /usr/bin/pulseaudio を実行するよう色々設定する
    • 画面内でコマンドを指定する箇所があるので絶対パスを入れてやればよい
    • Teminal options はとくにいじらなくてよい

ここまでやって RDP セッションを一度落として(単にログアウトすればよい)再度立ち上げると無事に KMix あたりから xrdp sinkxrdp source が見えるようになる。これで RDP を経由して手元の PC から音が出るようになる。

やってみて

X201s に WQHD な解像度に設定したモニタを接続し、全画面で RDP して Blu-ray を再生してみた。

X201s で Blu-ray を再生した場合はほとんど全てのコマが落ちて観れたものではないのだが、RDP 経由だとガクつきがするがまあ我慢すれば観れるかな程度までなんとかなることがわかった。

モニタ解像度を Full HD 程度まで落とせば現実的な快適さで観れるようになるだろう。LAN 的な影響は考慮していない。

リモートデスクトップというものをやってみたい気持ちがずっとあったが、その気持ちをようやく消化できて有意義だった、というところでオチとしておく。

参考