Овозможување на подобрен режим на сесија за Arch Linux-гости во Hyper-V

Овозможување на подобрен режим на сесија за Arch Linux-гости во Hyper-V

Користење на виртуелни машини на Linux во Hyper-V веднаш по употреба е малку помалку удобно искуство отколку со гостински Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Самиот Hyper-V обезбедува неколку услуги за интеграција - така, гостите можат да ја користат услугата за копирање во сенка на домаќинот (VSS), гостите можат да испратат сигнал за исклучување, гостите можат да го синхронизираат времето на системот со домаќинот за виртуелизација, датотеките може да се разменуваат од домаќинот со виртуелната машина (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Достапен е подобрен режим на сесија, кој работи преку протоколот RDP и ви овозможува да пренесувате уреди со диск и печатачи на виртуелната машина, како и да користите споделена таблата со исечоци.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP веќе претходно инсталирано, тогаш со други дистрибуции е сè помалку јасно - на пример, авторот овој пост получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с 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-tools на GitHub предоставляет скрипты, автоматизирующие процесс установки и настройки XRDP, для Arch Linux и Ubuntu. Установим 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://-адреси, па ќе мора рачно да инсталирате XRDP од Git и Xorg драјверот за него од AUR. Закрпата XRDP понудена во AUR е исто така малку застарена, така што ќе мора рачно да ја уредите PKGBUILD и да ја закрпите.

Ајде да клонираме складишта со PKGBUILD од AUR (обично оваа процедура, заедно со изградбата, е автоматизирана од програми како лак, но авторот ја направи целата оваа постапка на чист систем):

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

Ајде прво да го инсталираме самиот XRDP. Ајде да ја отвориме датотеката PKGBUILD кој било уредувач на текст.

Ајде да ги уредиме параметрите за изградба. PKGBUILD за градење XRDP од Git не вклучува поддршка за 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, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту 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

Ајде да ја исклучиме виртуелната машина. Ние го активираме транспортот vsock за виртуелната машина со извршување на следнава команда во PowerShell како администратор:

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

Ајде повторно да ја вклучиме виртуелната машина.

Поврзување

Штом услугата XRDP ќе започне по стартувањето на системот, апликацијата vmconnect ќе го открие ова и ставката ќе стане достапна во менито Види -> Засилена сесија. При изборот на оваа ставка, ќе ни биде побарано да ја поставиме резолуцијата на екранот и на јазичето Локални ресурси Во дијалогот што се отвора, можете да изберете уреди што ќе се препратат во сесијата RDP.

Овозможување на подобрен режим на сесија за Arch Linux-гости во Hyper-V
Овозможување на подобрен режим на сесија за Arch Linux-гости во Hyper-V

Ајде да се поврземе. Ќе го видиме прозорецот за најава на XRDP:

Овозможување на подобрен режим на сесија за Arch Linux-гости во Hyper-V

Внесете го вашето корисничко име и лозинка.

Користете

Придобивката од овие манипулации е забележлива: RDP сесијата работи многу поодговорно отколку кога работите со виртуелен екран без Подобрена сесија. Во директориумот се достапни дискови испуштени во VM преку RDP ${HOME}/shared-drives:

Овозможување на подобрен режим на сесија за Arch Linux-гости во Hyper-V

Таблата со исечоци работи добро. Не можете да препраќате печатачи внатре, ова не само што не е поддржано, туку и го прекинува препраќањето на дискот. Звукот исто така не работи, но на авторот ова не му требаше. За да снимате кратенки на тастатурата како Alt+Tab, треба да го проширите vmconnect на цел екран.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port на tcp://:3389. Ако виртуелната машина е поврзана со Default Switch и прима мрежни поставки преку DHCP, тогаш можете да се поврзете со неа од домаќинот на название_машины.mshome.net. Можете да се најавите на TTY само од апликацијата vmconnect со исклучување на Подобрениот режим.

Користени извори:

  1. Hyper-V - Арх Вики
  2. Извештаи за грешки на GitHub: 1, 2

Извор: www.habr.com

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster