在 Hyper-V 中為 Arch Linux 來賓啟用增強會話模式

在 Hyper-V 中為 Arch Linux 來賓啟用增強會話模式

在開箱即用的 Hyper-V 中使用 Linux 虛擬機不如使用來賓 Windows 機器舒適。 原因是 Hyper-V 最初不是為桌面使用而設計的; 您不能像在 VirtualBox 中那樣繼續安裝來賓附加程序包並獲得可用的圖形加速、剪貼板、共享目錄和其他生活樂趣。

Hyper-V 本身提供 多種集成服務 - 所以,來賓可以使用主機的捲影複製服務(VSS),來賓可以發送關機信號,來賓可以與虛擬化主機同步系統時間,可以從主機與虛擬機交換文件(Copy-VMFile 在 PowerShell 中)。 對於某些來賓操作系統,當然包括 Windows,在虛擬機連接應用程序 (vmconnect.exe) 增強會話模式可用,它通過 RDP 協議工作,允許您將磁盤設備和打印機轉發到虛擬機,以及使用共享剪貼板。

增強型會話模式在安裝後立即在 Hyper-V 中的 Windows 上運行。 對於 Linux 上的來賓,您需要安裝支持 vsock(Linux 中用於與管理程序通信的特殊虛擬網絡地址空間)的 RDP 服務器。 如果對於 Ubuntu,Windows 桌面版的 Hyper-V 附帶的 VMCreate 應用程序有一個專門準備的虛擬機模板,其中運行 vsock 的 RDP 服務器 XRDP 已經預裝,然後與其他發行版一起越來越不清楚 - 例如,作者 這個帖子 結果是在 Fedora 中啟用了 ESM。 在這裡,我們還為 Arch Linux 虛擬機啟用增強會話模式。

安裝集成服務

這裡的一切都或多或少簡單,我們只需要安裝包 hyperv 來自社區存儲庫:

% sudo pacman -S hyperv

啟用 VSS 服務,交換 元數據 和文件:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

XRDP 安裝

存儲庫 linux-vm-工具 GitHub 上提供的腳本可以自動為 Arch Linux 和 Ubuntu 安裝和配置 XRDP。 安裝 Git(如果尚未安裝)以及用於手動構建的編譯器和其他軟件,然後克隆存儲庫:

% 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, 在撰寫本文時 去掉了 來自 XRDP 發行版,因此必須手動編輯補丁:

  [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 會話中轉發的設備。

在 Hyper-V 中為 Arch Linux 來賓啟用增強會話模式
在 Hyper-V 中為 Arch Linux 來賓啟用增強會話模式

讓我們連接。 我們將看到 XRDP 登錄窗口:

在 Hyper-V 中為 Arch Linux 來賓啟用增強會話模式

輸入你的用戶名與密碼。

使用

這些操作的好處是顯而易見的:RDP 會話的響應速度比使用沒有增強會話的虛擬顯示器時要快得多。 通過 RDP 在 VM 內部轉發的磁盤在目錄中可用 ${HOME}/shared-drives:

在 Hyper-V 中為 Arch Linux 來賓啟用增強會話模式

剪貼板工作正常。 不能把打印機扔進去,這不僅不支持,而且 中斷磁盤轉發. 聲音也不起作用,但作者不需要它。 為了捕獲 Alt + Tab 等鍵盤快捷鍵,您需要將 vmconnect 擴展到全屏。

如果出於某種原因希望使用 Windows 內置的 RDP 客戶端而不是 vmconnect 應用程序,或者,例如,從另一台機器連接到這台機器,那麼您將需要更改文件 /etc/xrdp/xrdp.ini porttcp://:3389. 如果虛擬機連接到默認交換機並通過 DHCP 接收網絡設置,則您可以從主機連接到它 название_машины.mshome.net. 您只能通過關閉增強模式從 vmconnect 應用程序登錄到 TTY。

使用的來源:

  1. Hyper-V 架構維基
  2. GitHub 上的錯誤報告: 1, 2

來源: www.habr.com

添加評論