Bật Chế độ phiên nâng cao cho khách Arch Linux trong Hyper-V

Bật Chế độ phiên nâng cao cho khách Arch Linux trong Hyper-V

Sử dụng máy ảo Linux trong Hyper-V ngay lập tức mang lại trải nghiệm kém thoải mái hơn một chút so với sử dụng máy khách Windows. Lý do cho điều này là vì Hyper-V ban đầu không được thiết kế để sử dụng trên máy tính để bàn; bạn không thể chỉ cài đặt một gói bổ sung dành cho khách và nhận được khả năng tăng tốc đồ họa chức năng, bảng tạm, thư mục được chia sẻ và những niềm vui khác trong cuộc sống, như xảy ra trong VirtualBox.

Bản thân Hyper-V cung cấp một số dịch vụ tích hợp - như vậy, khách có thể sử dụng dịch vụ Shadow Copy (VSS) của Host, khách có thể gửi tín hiệu tắt máy, khách có thể đồng bộ thời gian hệ thống với Host ảo hóa, file có thể được trao đổi từ Host với máy ảo (Copy-VMFile trong PowerShell). Đối với một số hệ điều hành khách, tất nhiên bao gồm cả Windows, trong ứng dụng Kết nối Máy ảo (vmconnect.exe) Chế độ phiên nâng cao có sẵn, hoạt động thông qua giao thức RDP và cho phép bạn chuyển các thiết bị đĩa và máy in sang máy ảo cũng như sử dụng khay nhớ tạm được chia sẻ.

Chế độ phiên nâng cao hoạt động ngay lập tức trong Windows trong Hyper-V ngay sau khi cài đặt. Với khách trên Linux, bạn cần cài đặt máy chủ RDP hỗ trợ vsock (không gian địa chỉ mạng ảo đặc biệt trong Linux được thiết kế để liên lạc với bộ ảo hóa). Nếu đối với Ubuntu trong ứng dụng VMCreate đi kèm với Hyper-V trên các phiên bản Windows dành cho máy tính để bàn, thì có một mẫu máy ảo được chuẩn bị đặc biệt trong đó máy chủ RDP hoạt động với vsock XRDP đã được cài đặt sẵn, thì với các bản phân phối khác, điều đó ngày càng ít rõ ràng hơn - ví dụ: tác giả bài này Tôi đã kích hoạt được ESM trong Fedora. Ở đây chúng ta sẽ kích hoạt Chế độ phiên nâng cao cho máy ảo Arch Linux.

Cài đặt dịch vụ tích hợp

Mọi thứ ở đây ít nhiều đơn giản, chúng ta chỉ cần cài đặt gói hyperv từ kho lưu trữ cộng đồng:

% sudo pacman -S hyperv

Hãy kích hoạt VSS và dịch vụ trao đổi metadata và tập tin:

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

Cài đặt XRDP

kho công cụ linux-vm trên GitHub cung cấp các tập lệnh tự động hóa quá trình cài đặt và định cấu hình XRDP cho Arch Linux và Ubuntu. Hãy cài đặt Git, nếu nó chưa được cài đặt, cùng với trình biên dịch và phần mềm khác để xây dựng thủ công, sau đó sao chép kho lưu trữ:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

Tại thời điểm viết bài này, bản phát hành XRDP mới nhất, được cài đặt theo tập lệnh makepkg.shcái được đề xuất trong kho là 0.9.11, trong đó phân tích cú pháp bị hỏng vsock://-addresses, vì vậy bạn sẽ phải cài đặt XRDP từ Git và trình điều khiển Xorg cho nó từ AUR theo cách thủ công. Bản vá XRDP được cung cấp trong AUR cũng hơi lỗi thời, vì vậy bạn sẽ phải chỉnh sửa PKGBUILD và vá theo cách thủ công.

Hãy sao chép các kho lưu trữ với PKGBUILD từ AUR (thông thường quy trình này, cùng với quá trình xây dựng, được tự động hóa bởi các chương trình như yay, nhưng tác giả đã thực hiện toàn bộ quy trình này trên một hệ thống sạch):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Trước tiên hãy cài đặt XRDP. Hãy mở tập tin PKGBUILD bất kỳ trình soạn thảo văn bản nào.

Hãy chỉnh sửa các tham số xây dựng. PKGBUILD để xây dựng XRDP từ Git không bao gồm hỗ trợ vsock khi xây dựng, vì vậy hãy tự kích hoạt nó:

 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
 }

trong một bản vá arch-config.diff, quản lý các đơn vị và tập lệnh khởi chạy XRDP theo đường dẫn tệp được sử dụng trong Arch Linux, cũng chứa một bản vá cho tập lệnh instfiles/xrdp.sh, tại thời điểm viết bài đã được gỡ bỏ từ bản phân phối XRDP, do đó bản vá sẽ phải được chỉnh sửa thủ công:

  [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

Hãy biên dịch và cài đặt gói bằng lệnh % makepkg --skipchecksums -si (chìa khóa --skipchecksums cần thiết để tắt xác minh tổng kiểm tra các tệp nguồn vì chúng tôi đã chỉnh sửa chúng theo cách thủ công).

Chúng ta hãy đi đến thư mục xorgxrdp-devel-git, sau đó chúng ta chỉ cần lắp ráp gói bằng lệnh % makepkg -si.

Chúng ta hãy đi đến thư mục linux-vm-tools/arch và chạy tập lệnh install-config.sh, đặt cài đặt XRDP, PolicyKit và PAM:

% sudo ./install-config.sh

Tập lệnh cài đặt cài đặt cũ use_vsock, đã bị bỏ qua kể từ phiên bản 0.9.11, vì vậy hãy chỉnh sửa tệp cấu hình /etc/xrdp/xrdp.ini thủ công:

 ;   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

Thêm vào tập tin ~/.xinitrc khởi chạy môi trường máy tính để bàn/trình quản lý cửa sổ ưa thích của bạn, môi trường này sẽ được thực thi khi máy chủ X khởi động:

% echo "exec i3" > ~/.xinitrc

Hãy tắt máy ảo. Chúng tôi kích hoạt vận chuyển vsock cho máy ảo bằng cách chạy lệnh sau trong PowerShell với tư cách quản trị viên:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Hãy bật lại máy ảo.

Подключение

Ngay khi dịch vụ XRDP khởi động sau khi hệ thống khởi động, ứng dụng vmconnect sẽ phát hiện điều này và mục sẽ có sẵn trong menu Xem -> Phiên nâng cao. Khi chọn mục này, chúng ta sẽ được nhắc đặt độ phân giải màn hình và trên tab Tài nguyên địa phương Trong hộp thoại mở ra, bạn có thể chọn thiết bị để chuyển tiếp vào phiên RDP.

Bật Chế độ phiên nâng cao cho khách Arch Linux trong Hyper-V
Bật Chế độ phiên nâng cao cho khách Arch Linux trong Hyper-V

Hãy kết nối. Chúng ta sẽ thấy cửa sổ đăng nhập XRDP:

Bật Chế độ phiên nâng cao cho khách Arch Linux trong Hyper-V

Nhập tên người dùng và mật khẩu của bạn.

Sử dụng

Lợi ích từ những thao tác này là đáng chú ý: phiên RDP hoạt động phản hồi nhanh hơn nhiều so với khi làm việc với màn hình ảo không có Phiên nâng cao. Các đĩa được thả bên trong VM thông qua RDP có sẵn trong thư mục ${HOME}/shared-drives:

Bật Chế độ phiên nâng cao cho khách Arch Linux trong Hyper-V

Bảng nhớ tạm hoạt động tốt. Bạn không thể chuyển tiếp máy in bên trong; điều này không những không được hỗ trợ mà còn phá vỡ chuyển tiếp đĩa. Âm thanh cũng không hoạt động, nhưng tác giả không cần điều này. Để chụp các phím tắt như Alt+Tab, bạn cần mở rộng vmconnect ra toàn màn hình.

Nếu vì lý do nào đó mà bạn muốn sử dụng ứng dụng khách RDP được tích hợp trong Windows thay vì ứng dụng vmconnect hoặc, ví dụ: kết nối với máy này từ một máy khác, thì bạn sẽ cần phải thay đổi tệp /etc/xrdp/xrdp.ini port trên tcp://:3389. Nếu máy ảo được kết nối với Default Switch và nhận cài đặt mạng qua DHCP thì bạn có thể kết nối với nó từ máy chủ tại название_машины.mshome.net. Bạn chỉ có thể đăng nhập vào TTY từ ứng dụng vmconnect bằng cách tắt Chế độ nâng cao.

Nguồn đã sử dụng:

  1. Hyper-V - Arch Wiki
  2. Báo cáo lỗi trên GitHub: 1, 2

Nguồn: www.habr.com

Thêm một lời nhận xét