
Виртуалдык машиналарды колдонуу 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-сервер мурунтан эле орнотулган, андан кийин башка бөлүштүрүү менен ал азыраак жана азыраак түшүнүктүү - мисалы, автор получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.
Интеграция кызматтарын орнотуу
Бул жерде бардыгы аздыр-көптүр жөнөкөй, жөн гана пакетти орнотуу керек hyperv коомчулуктун репозиторийинен:
% sudo pacman -S hypervVSS жана алмашуу кызматтарын иштетели жана файлдар:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP орнотулууда
репозиторий на 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://-даректер, андыктан 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, правящем юниты и скрипты запуска 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.shXRDP, 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де администратор катары төмөнкү буйрукту иштетүү менен виртуалдык машина үчүн 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 боюнча мүчүлүштүктөр жөнүндө отчеттор: ,
Source: www.habr.com
