2018/05/30

Windows 10 ver 1803 Hyper-V and Ubuntu 18.04 LTS with Enhanced Session Mode

以下のブログにあるように、RS4 に向けた Insider Preview ビルド 17063 の Hyper-V と Ubuntu 16.04 LTS で実験的に拡張セッション モードが使えるようになってます。


Sneak Peek: Taking a Spin with Enhanced Linux VMs(Virtualization Blog)
[URL] https://blogs.technet.microsoft.com/virtualization/2018/02/28/sneak-peek-taking-a-spin-with-enhanced-linux-vms/


Ubuntu 18.04 LTS で試してみました。成功した手順をメモ。なお、5/30 現在のツール(Ubuntu 18.04 LTS や xrdp のバージョン、linux-vm-tools のリリース)での成功例なので、将来、うまくいかなくなる可能性もありです。


Windows 仮想マシンの拡張セッションモード接続は、仮想マシンバス(VMBus)経由の RDP 接続ですが、Linux 仮想マシンの拡張セッション モード接続は、hvsocket 経由の xrdp への RDP 接続になっていて、上記ブログ時点では Ubuntu 16.04 LTS 向けの xrdp のソースに hvsocket 対応パッチを書き込んでビルド(make install)するような感じで実現されていたんだと思います。参考:hvsocket(Hyepr-V ソケット)とは https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/user-guide/make-integration-service

このブログにあるように、Ubuntu 18.04 LTS ではもっと簡単に(xrdp が hvsocket 対応済みらしい)なるそうなので、試してみました。このブログの Tutorial は Ubuntu 16.04 LTS ベースですし、既に github で公開されているツールも 18.04 LTS 対応のものになっているので、この Tutorial どおりにやってもうまくいかないと思います。


1. Windows 10 April 2018 Update バージョン 1803(ビルド17134.x)の Hyper-V ホストを準備。ビルド 17063 からの実装なので、Windows 10 Fall Creators Update バージョン 1709 以前や Windows Server 2016 Hyepr-V ではダメです。
2. 第2世代仮想マシンを作成し、UEFI セキュアブートのテンプレートとして Microsoft UEFI 証明機関を選択。
3. Ubuntu 18.04 LTS Desktop の ISO イメージから起動して、ローカル ディスクにインストール(既定のオプションでも、最小インストール オプションでもどちらでもいい)。
4. 端末(terminal)を開いて、Hyper-V 統合サービスの KVP データ交換サービス(hv_kvp_daemon)、VSS サービス(hv_vss_daemon)、ゲスト サービス(hv_fcopy_daemon)用コンポーネントをインストールして再起動します。この手順は Hyper-V 完全対応のための手順であり、今回の目的のとは直接的な関係なし(たぶん)。なので、省略しても大丈夫かも。

$ sudo apt-get update
$ sudo apt install linux-cloud-tools-common linux-cloud-tools-generic linux-cloud-tools-virtual linux-cloud-tools-lowlatency
$ sudo reboot now

5. xrdp をインストール。xrdp をここでインストールしなくても、あとで実行する install.sh でインストールされるので 5. と次の 6. はスキップしてもいいけど、確実に接続できるようにするには事前にインストールして接続性を確認しておくといいと思って。xrdp 未経験で 7 以降に進むと、Xorg のダイアログのワンクッションがあることに戸惑うことと思います。

$ sudo apt install xrdp
$ sudo reboot now

6. Hyper-V ホスト側のリモートデスクトップ接続クライアント(mstsc.exe)を使用して、ネットワーク経由(IPアドレス指定)で RDP 接続を確認してみる。Windows 10 Hyper-V の既定のスイッチ(内部/NAT タイプ)だと接続できないので、外部スイッチを使ってね。また、Ubuntu 側の「設定 > 共有」(vino のデスクトップの共有)はオフのままで OK です。xrdp 接続には無関係なので。

6.1 IP アドレスを確認して、RDP ポートをファイアウォールで許可。

$ ip address show dev eth0
$ sudo ufw allow 3389

6.2 現在のセッションからログアウト、これ重要。GUI からでも、gnome-session-quit --logout --no-prompt でもお好きな方で。

6.3 mstsc で IP アドレスを指定し、RDP 接続できることを確認。「Login to <ホスト名>」では既定の「Xorg」を選択し、ユーザー名とパスワードを入力。デスクトップに表示される「認証が要求されました カラーマネジメント...」は「キャンセル」で OK。

6.4 RDP 接続のセッションからログアウト。セッション切断では、Hyper-V の仮想マシン接続ウィンドウでログインできないのでちゃんとログアウトしてください。
6.5 Hyper-V の仮想マシン接続ウィンドウでコンソールにログインし、もう不要なら RDP ポートの許可をファイアウォールから削除。

$ sudo ufw deny 3389

※ネットワーク経由の RDP 接続がうまくいかないという場合は、

$ sudo apt-get purge --autoremove xrdp
$ sudo reboot now
$ sudo apt install xrdp
$ sudo reboot now

を試してみて。

7. ここからが本番。Hyper-V の仮想マシン接続ウィンドウでコンソールにログインしたら、端末を開いて、以下のコマンドラインを実行。ブログの手順よりステップが少ない(ubuntu/16.04/config-user.sh の実行は不要とか)ですが、これだけで OK。

$ sudo apt-get update
$ sudo apt install git
$ git clone https://github.com/Microsoft/linux-vm-tools.git ~/linux-vm-tools
$ cd ~/linux-vm-tools/ubuntu/18.04/ 

$ sudo chmod +x install.sh
$ sudo ./install.sh
$ sudo reboot now
(※github でぇあ ubuntu/16.04/install.sh も 18.04 対応版のような説明が付いてますが、ubuntu/18.04/install.sh の方が新しいですし、xrdp のソースからの make install もしない版。また、ブログの手順だと install.sh を 2 回実行しろって書いてるけど 1 回で問題なしでした。5/30 現在の話 https://github.com/Microsoft/linux-vm-tools/tree/master/ubuntu

8. Hyper-V の仮想マシン接続ウィンドウをいったん閉じ、PowerShell ウィンドウを管理者として開いて、以下のコマンドを実行(without <> でね)。これで拡張セッション モードの経路が VMBus から hvsocket に変更されます。

PS C:\> Set-VM -VMName <仮想マシン名> -EnhancedSessionTransportType HvSocket
PS C:\> (Get-VM -VMName <仮想マシン名>).EnhancedSessionTransportType

9.  Hyper-V の仮想マシン接続ウィンドウを開くと、拡張セッション モードで接続しようとするので、解像度を選択して(オプションでドライブのリダイレクトやクリップボード共有などを構成して)接続。
10. 「Login to <ホスト名>」では既定の「Xorg」を選択し、ユーザー名とパスワードを入力。デスクトップが表示されたら成功。ドライブ リダイレクトやクリップボードのやり取りができることを確認。


※ドライブのリダイレクト指定のタイミングによっては、仮想マシンを再起動しないと接続に失敗したりして、不安定なところもあり。
※Ubuntu 16.04 LTS 向けのステップの通りに進めるたり、コンソールにログインした状態だったりすると、こんな(↓)状況になると思います。左側の状態は、xrdp の再インストール(↑ 6.5 の ※ の手順)で解消できるかもしれない。


※ ところで、最新の Windows 10 Hyper-V では自動チェックポイントっていう機能が既定で有効になり、仮想マシンの開始時にチェックポイント作成してから起動、停止すると結合処理って動きになって、稼働中にやっちまったぁというときでも戻せて便利に見えるけど、これまでそれ(何かする前にチェックポイント作成)を手でやってきた人にとっては余計なお世話な感じがして、速攻でオフにしました。ご利用はお好みで。

1 件のコメント:

  1. 2019/05 に HWE 対応スイッチ付の install.sh が出てます。https://github.com/microsoft/linux-vm-tools/tree/master/ubuntu/18.04

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。