と言うのをやってみた結果、一応は出来たのでメモ。
準備 (用意したモノ)
- [[Hyper-V]] が使える Windows 10 の Edition (自分の環境だと [[Windows 10 Pro]] )
- [[Antergos]] ( [[Archlinux]] の派生ディストリ) の VM イメージ
今回の流れ
- Linux VM ( [[Antergos]] ) に [[xrdp]] と [[xorgxrdp]] をインストール
- [[xrdp]] と [[xrdp-sesman]] のサービスを有効化
- [[pulseaudio]] の xrdp モジュールをコンパイルしてシステムに追加
.xinitrc
経由で Desktop Session を起動する様に設定
詳細
1. [Linux [[VM]] に [[xrdp]] と [[xorgxrdp]] を入れる]
これについては、 [[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]] モジュールをコンパイル]
これについては、おおよそ、下記の手順で追加しました:
- pulseaudio と xrdp の
PKGBUILD
+ 付属ファイルを Archlinux のリポジトリから取得 - pulseaudio と xrdp の
PKGBUILD
を元にmakepkg -sLf
でコンパイルのみを実行 - xrdp の
src
ディレクトリ以下のxrdp/sesman/chansrv/pulse
に入る - 次のコマンドでモジュールを build:
make PULSE_DIR=p
- 出来上がった
*.so
モジュールを/usr/lib/pulse-$v
へ追加( /modules/ - 以上
4. [.xinitrc 経由で [[Desktop Session]] が起動する様に設定]
まず、sesman
が Xorg を起動できる様にするために、/etc/X11/Xwrapper.config
に allowed_users=anybody
を追加します。
それで、sesman
が [[Desktop 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 VM]] に [[RDP 接続]] が可能な環境が出来上がる
ハズ……です。
なお、今回の Hyper-V の VM の設定では、
- 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 環境としての快適度で言えば、普通に [[Virtualbox]] や [[VMware]] で Desktop 環境作った方が良かったんじゃね? と言う感じなので、まぁ、Gnome3 などと言った、重めの [[Desktop Environment]] を使うんであれば、 [[Hyper-V]] は止めておいた方が良いんじゃないかなー、というオチになりましたとさ。
という事で今回の話は以上です。はい