Hyper-V で Linux 仮想マシンをそのまま使用すると、Windows ゲスト マシンを使用するよりも快適さが若干劣ります。 その理由は、Hyper-V はもともとデスクトップでの使用を目的としていないためです。 VirtualBox のように、ゲスト追加機能のパッケージをインストールするだけで、機能的なグラフィック アクセラレーション、クリップボード、共有ディレクトリ、その他の生活の楽しみを手に入れることはできません。
Hyper-V 自体が提供する Copy-VMFile
PowerShell の場合)。 もちろん Windows を含む一部のゲスト オペレーティング システムでは、仮想マシン接続アプリケーション (vmconnect.exe
) 拡張セッション モードが利用可能で、RDP プロトコル経由で動作し、ディスク デバイスやプリンターを仮想マシンに転送したり、共有クリップボードを使用したりできます。
拡張セッション モードは、Hyper-V の Windows では、インストール直後からすぐに使用できます。 Linux 上のゲストでは、vsock (ハイパーバイザーとの通信用に設計された Linux の特別な仮想ネットワーク アドレス空間) をサポートする RDP サーバーをインストールする必要があります。 Windows のデスクトップ エディションの Hyper-V に付属する VMCreate アプリケーションの Ubuntu の場合、RDP サーバーが vsock と連携する特別に用意された仮想マシン テンプレートがあります。
統合サービスのインストール
ここではすべてが多かれ少なかれ簡単です。パッケージをインストールするだけです。 hyperv
コミュニティリポジトリから:
% sudo pacman -S hyperv
VSS と Exchange サービスを有効にしましょう
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
XRDPのインストール
リポジトリ
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch
この記事の執筆時点では、スクリプトによってインストールされる XRDP の最新リリース makepkg.sh
リポジトリで推奨されているのは 0.9.11 です。 vsock://
-addresses なので、Git から XRDP をインストールし、AUR からその Xorg ドライバーを手動でインストールする必要があります。 AUR で提供されている XRDP パッチも少し古いため、PKGBUILD とパッチを手動で編集する必要があります。
AUR の PKGBUILD を使用してリポジトリのクローンを作成しましょう (通常、この手順はビルドとともに次のようなプログラムによって自動化されます)
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git
まずはXRDP自体をインストールしましょう。 ファイルを開いてみましょう PKGBUILD
任意のテキストエディタ。
ビルドパラメータを編集しましょう。 Git から XRDP をビルドするための PKGBUILD には、ビルド時の vsock サポートが含まれていないため、自分で有効にしましょう。
build() {
cd $pkgname
./configure --prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--sbindir=/usr/bin
--with-systemdsystemdunitdir=/usr/lib/systemd/system
--enable-jpeg
--enable-tjpeg
--enable-fuse
--enable-opus
--enable-rfxcodec
--enable-mp3lame
- --enable-pixman
+ --enable-pixman
+ --enable-vsock
make V=0
}
パッチで arch-config.diff
Arch Linux で使用されるファイル パスでユニットと XRDP 起動スクリプトを管理します。このスクリプトへのパッチも含まれています instfiles/xrdp.sh
、これを書いている時点では
[Install]
WantedBy=multi-user.target
-diff -up src/xrdp-devel-git/instfiles/xrdp.sh.orig src/xrdp-devel-git/instfiles/xrdp.sh
---- src/xrdp-devel-git/instfiles/xrdp.sh.orig 2017-08-30 00:27:28.000000000 -0600
-+++ src/xrdp-devel-git/instfiles/xrdp.sh 2017-08-30 00:28:00.000000000 -0600
-@@ -17,7 +17,7 @@
- # Description: starts xrdp
- ### END INIT INFO
-
--SBINDIR=/usr/local/sbin
-+SBINDIR=/usr/bin
- LOG=/dev/null
- CFGDIR=/etc/xrdp
-
diff -up src/xrdp-devel-git/sesman/startwm.sh.orig src/xrdp-devel-git/sesman/startwm.sh
--- src/xrdp-devel-git/sesman/startwm.sh.orig 2017-08-30 00:27:30.000000000 -0600
コマンドでパッケージをコンパイルしてインストールしましょう % makepkg --skipchecksums -si
(鍵 --skipchecksums
ソース ファイルを手動で編集したため、ソース ファイルのチェックサム検証を無効にする必要がありました)。
ディレクトリに行きましょう xorgxrdp-devel-git
その後、次のコマンドを使用してパッケージをアセンブルします。 % makepkg -si
.
ディレクトリに行きましょう linux-vm-tools/arch
そしてスクリプトを実行します install-config.sh
、XRDP、PolicyKit、および PAM 設定を設定します。
% sudo ./install-config.sh
スクリプトはレガシー設定をインストールします use_vsock
、バージョン 0.9.11 以降無視されているため、設定ファイルを編集しましょう /etc/xrdp/xrdp.ini
手動で:
; port=vsock://<cid>:<port>
-port=3389
+port=vsock://-1:3389
; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
; prefer use vsock://<cid>:<port> above
-use_vsock=true
+;use_vsock=true
; regulate if the listening socket use socket option tcp_nodelay
ファイルに追加 ~/.xinitrc
好みのウィンドウ マネージャー/デスクトップ環境を起動します。これは、X サーバーの起動時に実行されます。
% echo "exec i3" > ~/.xinitrc
仮想マシンをオフにしてみましょう。 PowerShell で管理者として次のコマンドを実行して、仮想マシンの vsock トランスポートをアクティブにします。
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket
仮想マシンを再度オンにしてみましょう。
Подключение
システムの起動後に XRDP サービスが開始されるとすぐに、vmconnect アプリケーションがこれを検出し、その項目がメニューで使用可能になります。 詳しく見る -> 拡張セッション。 この項目を選択すると、画面解像度を設定するように求められ、タブ上で 地域リソース 開いたダイアログで、RDP セッションに転送するデバイスを選択できます。
繋ぎましょう。 XRDP ログイン ウィンドウが表示されます。
ユーザー名とパスワードを入力します。
使用
これらの操作による利点は顕著です。RDP セッションは、拡張セッションを使用せずに仮想ディスプレイを操作する場合よりもはるかに応答性が高くなります。 RDP 経由で VM 内にドロップされたディスクはディレクトリで利用可能です ${HOME}/shared-drives
:
クリップボードは正常に動作します。 内部のプリンターを転送することはできません。これはサポートされていないだけでなく、
何らかの理由で、vmconnect アプリケーションの代わりに Windows に組み込まれている RDP クライアントを使用する場合、またはたとえば別のマシンからこのマシンに接続する場合は、ファイルを変更する必要があります。 /etc/xrdp/xrdp.ini
port
на tcp://:3389
。 仮想マシンがデフォルト スイッチに接続されており、DHCP 経由でネットワーク設定を受信している場合は、次のホストから仮想マシンに接続できます。 название_машины.mshome.net
。 vmconnect アプリケーションから TTY にログインするには、拡張モードをオフにする必要があります。
使用ソース:
Hyper-V - Arch Wiki - GitHub でのバグ報告:
1 ,2
出所: habr.com