Hyper-V жүйесінде Arch Linux қонақтары үшін кеңейтілген сеанс режимін қосыңыз

Hyper-V жүйесінде Arch Linux қонақтары үшін кеңейтілген сеанс режимін қосыңыз

Linux виртуалды машиналарын Hyper-V жүйесінде қораптан тыс пайдалану қонақ Windows машиналарына қарағанда біршама ыңғайлы. Мұның себебі Hyper-V бастапқыда жұмыс үстелінде пайдалануға арналмаған; Сіз жай ғана алға басып, қонақтарға арналған қосымшалар пакетін орната алмайсыз және VirtualBox-та болатындай графикалық жеделдетуді, алмасу буферін, ортақ каталогтарды және өмірдің басқа қуаныштарын ала алмайсыз.

Hyper-V өзі қамтамасыз етеді бірнеше интеграциялық қызметтер - осылайша, қонақтар хосттың көлеңкелі көшірме қызметін (VSS) пайдалана алады, қонақтар өшіру сигналын жібере алады, қонақтар жүйе уақытын виртуалдандыру хостымен синхрондауы мүмкін, файлдарды хосттан виртуалды машинамен алмасуға болады (Copy-VMFile PowerShell ішінде). Кейбір қонақ операциялық жүйелері үшін, соның ішінде, әрине, Windows, Virtual Machine Connection қолданбасында (vmconnect.exe) RDP протоколы арқылы жұмыс істейтін және дискі құрылғылары мен принтерлерді виртуалды машинаға жіберуге, сондай-ақ ортақ алмасу буферін пайдалануға мүмкіндік беретін жетілдірілген сеанс режимі қолжетімді.

Жетілдірілген сеанс режимі Windows жүйесінде Hyper-V жүйесінде орнатудан кейін бірден жұмыс істейді. Linux жүйесінде қонақтармен vsock-ті қолдайтын RDP серверін орнату керек (Linux жүйесінде гипервизормен байланысуға арналған арнайы виртуалды желі мекенжай кеңістігі). Егер Ubuntu үшін болса, Windows жүйесінің жұмыс үстелі шығарылымдарында Hyper-V-мен бірге келетін VMCreate қолданбасында арнайы дайындалған виртуалды машина үлгісі бар, онда RDP сервері vsock көмегімен жұмыс істейді. 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://-мекенжайлар, сондықтан 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 толық экранға дейін кеңейту керек.

Егер қандай да бір себептермен vmconnect қолданбасының орнына Windows жүйесіне орнатылған RDP клиентін пайдаланғыңыз келсе немесе, мысалы, басқа құрылғыдан осы құрылғыға қосылғыңыз келсе, файлды өзгерту қажет болады. /etc/xrdp/xrdp.ini port туралы tcp://:3389. Егер виртуалды машина әдепкі қосқышқа қосылған болса және желі параметрлерін DHCP арқылы қабылдаса, оған хосттан қосылуға болады: название_машины.mshome.net. TTY жүйесіне тек Жетілдірілген режимді өшіру арқылы vmconnect қолданбасынан кіруге болады.

Пайдаланылған көздер:

  1. Hyper-V Arch Wiki
  2. GitHub сайтындағы қателер туралы есептер: 1, 2

Ақпарат көзі: www.habr.com

пікір қалдыру