と言うのをやってみた結果、一応は出来たのでメモ。
準備 (用意したモノ)
- 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={pulseaudioのsrc directory}
- 出来上がった
*.so
モジュールを/usr/lib/pulse-${version}/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 で接続してやれば、
ハズ……です。
- 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 は止めておいた方が良いんじゃないかなー、というオチになりましたとさ。
という事で今回の話は以上です。はい