
Виртуалды машиналарды пайдалану Linux Hyper-V жүйесінде қонақтарға қарағанда, бастапқы нұсқадан сәл онша ыңғайлы емес. Windows-машиналары. Мұның себебі, Hyper-V бастапқыда жұмыс үстелінде пайдалануға арналмаған; сіз жай ғана Guest Additions бумасын орнатып, VirtualBox-тағыдай жұмыс істейтін графикалық жеделдетуді, алмасу буферін, ортақ каталогтарды және басқа да артықшылықтарды ала алмайсыз.
Hyper-V өзі қамтамасыз етеді - осылайша, қонақтар хосттың көлеңкелі көшірме қызметін (VSS) пайдалана алады, қонақтар өшіру сигналын жібере алады, қонақтар жүйе уақытын виртуалдандыру хостымен синхрондауы мүмкін, файлдарды хосттан виртуалды машинамен алмасуға болады (Copy-VMFile PowerShell бағдарламасында). Кейбір қонақ операциялық жүйелер үшін, әрине, мыналарды қамтиды Windows, Виртуалды машина қосылымы қолданбасында (vmconnect.exe) RDP протоколы арқылы жұмыс істейтін және дискі құрылғылары мен принтерлерді виртуалды машинаға жіберуге, сондай-ақ ортақ алмасу буферін пайдалануға мүмкіндік беретін жетілдірілген сеанс режимі қолжетімді.
Жақсартылған сеанс режимі дайын күйінде жұмыс істейді Windows Hyper-V жүйесінде орнатқаннан кейін бірден. Қонақтармен бірге Linux сізге vsock қолдайтын RDP серверін орнату қажет (арнайы виртуалды желі мекенжай кеңістігі) Linux, гипервизормен байланысу үшін жасалған). Егер болса Ubuntu жұмыс үстелі нұсқаларында Hyper-V бағдарламасымен бірге келетін VMCreate қолданбасында Windows, RDP сервері vsock-пен жұмыс істейтін арнайы дайындалған виртуалды машина үлгісі бар қазірдің өзінде алдын ала орнатылған, содан кейін басқа дистрибутивтермен ол азырақ және анық емес - мысалы, автор Біз Fedora-да ESM функциясын қоса алдық. Мұнда біз Arch виртуалды машинасы үшін Enhanced Session Mode режимін де іске қосамыз. Linux.
Интеграциялық қызметтерді орнату
Мұнда бәрі азды-көпті қарапайым, бізге тек пакетті орнату керек hyperv қауымдастық репозиторийінен:
% sudo pacman -S hypervVSS қызметтерін қосу, алмасу және файлдар:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP орнату
репозиторий GitHub сайтында Arch үшін XRDP орнату және конфигурациялау процесін автоматтандыратын сценарийлерді ұсынады 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://-мекенжайлар, сондықтан 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 бағдарламасында пайдаланылған файл жолдарының астындағы басқарушы бірліктер және XRDP іске қосу скрипттері 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Виртуалды машинаны өшірейік. PowerShell бағдарламасында әкімші ретінде келесі пәрменді іске қосу арқылы VM үшін vsock тасымалдауын қосыңыз:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketВиртуалды машинаны қайтадан қосайық.
Подключение
Жүйе іске қосылғаннан кейін XRDP қызметі іске қосылғанда, vmconnect қолданбасы мұны анықтайды және мәзір элементі қолжетімді болады. көрініс -> Жетілдірілген сеанс. Бұл элементті таңдаған кезде, бізден экран ажыратымдылығын және қойындысында орнату сұралады Жергілікті ресурстар ашылатын диалогтық терезеде RDP сеансында қайта жіберілген құрылғыларды таңдауға болады.


Қосылайық. Біз XRDP кіру терезесін көреміз:

Пайдаланушы аты мен құпия сөзді енгізіңіз.
Пайдаланыңыз
Бұл манипуляциялардан түсетін пайда байқалады: RDP сеансы Жетілдірілген сеанссыз виртуалды дисплеймен жұмыс істегенге қарағанда әлдеқайда жауапты жұмыс істейді. RDP арқылы VM ішінде қайта жіберілген дискілер каталогта қол жетімді ${HOME}/shared-drives:

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