カラクリスタ

「輝かしい青春」なんて失かった人のブログ

Hyper-V 上の Linux VM に音付きで RDP 接続する

と言うのをやってみた結果、一応は出来たのでメモ。

準備 (用意したモノ)

今回の流れ

  1. Linux VM ( Antergos ) に xrdpxorgxrdp をインストール
  2. xrdpxrdp-sesman のサービスを有効化
  3. pulseaudio の xrdp モジュールをコンパイルしてシステムに追加
  4. .xinitrc 経由で Desktop Session を起動する様に設定

詳細

1. [Linux VMxrdpxorgxrdp を入れる]

これについては、 Antergos ( Archlinux の場合)、

  • xrdp
  • xrdpxorg-git

を、 AUR 経由でインストールします。

2. xrdp と xrdp-sesman のサービスを有効化

次に、これについては、 Terminal

# xrdp を起動し有効化
$ sudo systemctl start xrdp
$ sudo systemctl enable rdp

# xorgxrdp を起動し有効化
$ sudo systemctl start xrdp-sesman
$ sudo systemctl enable xrdp-sesman

と言う感じで起動してサービスを有効化しました。

3. [pulseaudio の xrdp モジュールをコンパイル]

これについては、おおよそ、下記の手順で追加しました:

  1. pulseaudio と xrdp の PKGBUILD + 付属ファイルを Archlinux のリポジトリから取得
  2. pulseaudio と xrdp の PKGBUILD を元に makepkg -sLfコンパイルのみを実行
  3. xrdp の src ディレクトリ以下の xrdp/sesman/chansrv/pulse に入る
  4. 次のコマンドでモジュールを build: make PULSE_DIR={pulseaudioのsrc directory}
  5. 出来上がった *.so モジュールを /usr/lib/pulse-${version}/modules/ へ追加
  6. 以上

4. [.xinitrc 経由で Desktop Session が起動する様に設定]

まず、sesmanXorg を起動できる様にするために、/etc/X11/Xwrapper.configallowed_users=anybody を追加します。 それで、sesmanDesktop Session を起動する際の起動の流れとしては、恐らく、

startx を実行し、 .xinirc 経由で Desktop Session を起動する

という時とほぼ同じっぽいので、今回の環境の場合だと、

#!/usr/bin/env bash

# lcoale 等の設定
export LANG=ja_JP.UTF-8
export LC_ALL=ja.JP.UTF-8

# 既存の pulseaudio を kill してから、新しく pulseaudio を起動し直す
pulseaudio -k
pulseaudio -D

# DBus 経由で gnome-session (gnome3) の binary を起動
# ちなみに gnome-session という shell script だと上手く動かないらしい
exec dbus-run-session -- /usr/lib/gnome-session-binary

という感じのファイルを用意して、 chmod +x ~/.xinitrc すれば良いです。

以上

で、あとは Windows 付属の RDP Client で接続してやれば、

音付きで Hyper-V 上の Linux VMRDP 接続 が可能な環境が出来上がる

ハズ……です。

なお、今回の Hyper-VVM の設定では、

  • Antergos は Hyper-V 2nd Gen をベースに UEFI + GPT な環境で systemd-boot を bootloader として使用
  • RemoteFX の Graphics Device を追加し、 3840x2160 な Display Resolution を許可
  • それと Hyper-V の Network は手動で NAT を構成し、 IP も手動で割り振り

と言う感じになっています。

また、どういう条件でこれが起きるのかイマイチ分かってませんが、

なんか RDP で接続は出来るけど 、Desktop Session が起動しない……

って時が時々あり、そういう時は、

$ sudo rm -rf /tmp/.xrdp

してやると、その後普通に Desktop Session が起動したりします。なので、恐らくは何かしらの加減で、xrdp の ロックファイルが消えてなくて デッドロック している、とか、そういう問題だと思うんですが、何でそうなるかは良く分かってません。はい。

あと、今回は Gnome3 の VM を用意するのに普通に NixOS だと面倒なんで Archlinux 派生の Antergos を使いましたが、他の Linux Distribution でも、おおよその作業の流れは同じだと思われます。そのため、 Software の Compile は必須です。


とりあえず、モノは出来たので、それはそれで満足なんですが、Desktop 環境としての快適度で言えば、普通に VirtualboxVMware で Desktop 環境作った方が良かったんじゃね? と言う感じなので、まぁ、Gnome3 などと言った、重めの Desktop Environment を使うんであれば、 Hyper-V は止めておいた方が良いんじゃないかなー、というオチになりましたとさ。

という事で今回の話は以上です。はい