在開箱即用的 Hyper-V 中使用 Linux 虛擬機不如使用來賓 Windows 機器舒適。 原因是 Hyper-V 最初不是為桌面使用而設計的; 您不能像在 VirtualBox 中那樣繼續安裝來賓附加程序包並獲得可用的圖形加速、剪貼板、共享目錄和其他生活樂趣。
Hyper-V 本身提供 Copy-VMFile
在 PowerShell 中)。 對於某些來賓操作系統,當然包括 Windows,在虛擬機連接應用程序 (vmconnect.exe
) 增強會話模式可用,它通過 RDP 協議工作,允許您將磁盤設備和打印機轉發到虛擬機,以及使用共享剪貼板。
增強型會話模式在安裝後立即在 Hyper-V 中的 Windows 上運行。 對於 Linux 上的來賓,您需要安裝支持 vsock(Linux 中用於與管理程序通信的特殊虛擬網絡地址空間)的 RDP 服務器。 如果對於 Ubuntu,Windows 桌面版的 Hyper-V 附帶的 VMCreate 應用程序有一個專門準備的虛擬機模板,其中運行 vsock 的 RDP 服務器
安裝集成服務
這裡的一切都或多或少簡單,我們只需要安裝包 hyperv
來自社區存儲庫:
% sudo pacman -S hyperv
啟用 VSS 服務,交換
% 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 中運行以下命令,為 VM 啟用 vsock 傳輸:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket
讓我們再次打開虛擬機。
Подключение
系統啟動後,只要 XRDP 服務啟動,vmconnect 應用程序就會確定這一點,並且菜單項將變為可用。 瀏覽 -> 增強會話. 當您選擇此項時,我們會提示您設置屏幕分辨率,並在選項卡上 當地資源 在打開的對話框中,您可以選擇在 RDP 會話中轉發的設備。
讓我們連接。 我們將看到 XRDP 登錄窗口:
輸入你的用戶名與密碼。
使用
這些操作的好處是顯而易見的:RDP 會話的響應速度比使用沒有增強會話的虛擬顯示器時要快得多。 通過 RDP 在 VM 內部轉發的磁盤在目錄中可用 ${HOME}/shared-drives
:
剪貼板工作正常。 不能把打印機扔進去,這不僅不支持,而且
如果出於某種原因希望使用 Windows 內置的 RDP 客戶端而不是 vmconnect 應用程序,或者,例如,從另一台機器連接到這台機器,那麼您將需要更改文件 /etc/xrdp/xrdp.ini
port
上 tcp://:3389
. 如果虛擬機連接到默認交換機並通過 DHCP 接收網絡設置,則您可以從主機連接到它 название_машины.mshome.net
. 您只能通過關閉增強模式從 vmconnect 應用程序登錄到 TTY。
使用的來源:
Hyper-V 架構維基 - GitHub 上的錯誤報告:
1 ,2
來源: www.habr.com