
Virtual mashinalardan foydalanish Linux Hyper-V da, qutidan tashqarida, mehmon bilan bo'lgani kabi biroz kamroq qulay tajriba. Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.
Hyper-Vning o'zi ta'minlaydi - Shunday qilib, mehmonlar xostning soyali nusxa ko'chirish xizmatidan (VSS) foydalanishlari mumkin, mehmonlar o'chirish signalini yuborishlari mumkin, mehmonlar tizim vaqtini virtualizatsiya xosti bilan sinxronlashtirishlari mumkin, fayllarni xostdan virtual mashina bilan almashishlari mumkin (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) Kengaytirilgan seans rejimi mavjud bo'lib, u RDP protokoli orqali ishlaydi va disk qurilmalari va printerlarni virtual mashinaga yo'naltirish, shuningdek umumiy almashish buferidan foydalanish imkonini beradi.
Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер allaqachon oldindan o'rnatilgan, keyin boshqa tarqatish bilan u kamroq va kamroq aniq - masalan, muallif получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с Arch Linux.
Integratsiya xizmatlarini o'rnatish
Bu erda hamma narsa ko'proq yoki kamroq oddiy, biz faqat paketni o'rnatishimiz kerak hyperv jamoat omboridan:
% sudo pacman -S hypervVSS xizmatlarini yoqish, almashish va fayllar:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneXRDP o'rnatish
ombori на 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/archUshbu yozish paytida, skript tomonidan o'rnatilgan XRDP-ning eng so'nggi versiyasi makepkg.shomborda taklif qilingan 0.9.11, vsock://-manzillar, shuning uchun siz Git'dan XRDP va uning uchun Xorg drayverini AUR'dan qo'lda o'rnatishingiz kerak. AURda taklif qilingan XRDP uchun yamoq ham biroz eskirgan, shuning uchun siz PKGBUILD va yamoqni qo'lda tahrirlashingiz kerak bo'ladi.
Biz omborlarni AUR-dan PKGBUILD-lar bilan klonlaymiz (odatda bu protsedura yig'ish bilan birga, shunga o'xshash dasturlar tomonidan avtomatlashtirilgan. , lekin muallif bu protsedurani toza tizimda bajargan):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitAvval XRDP ni o'rnatamiz. Keling, faylni ochamiz PKGBUILD har qanday matn muharriri.
Qurilish parametrlarini tahrir qilaylik. Git-dan XRDP-ni yaratish uchun PKGBUILD qurilishda vsock-ni qo'llab-quvvatlamaydi, shuning uchun uni o'zimiz yoqaylik:
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
}Yamoq ichida arch-config.diff, правящем юниты и скрипты запуска XRDP под пути к файлам, используемым в Arch Linux, содержится в том числе патч к скрипту instfiles/xrdp.sh, bu yozish paytida XRDP tarqatilishidan, shuning uchun yamoqni qo'lda tahrirlash kerak bo'ladi:
[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 -0600Buyruq bilan paketni tuzing va o'rnating % makepkg --skipchecksums -si (kalit --skipchecksums manba fayllarni tekshirish summasini tekshirishni o'chirish uchun kerak, chunki biz ularni qo'lda tahrir qildik).
Keling, katalogga o'tamiz xorgxrdp-devel-git, shundan so'ng biz shunchaki buyruq bilan paketni quramiz % makepkg -si.
Keling, katalogga o'tamiz linux-vm-tools/arch va skriptni ishga tushiring install-config.sh, bu XRDP, PolicyKit va PAM sozlamalarini o'rnatadi:
% sudo ./install-config.shSkript eski sozlamalarni o'rnatadi use_vsock, bu 0.9.11 versiyasidan beri e'tiborga olinmaydi, shuning uchun konfiguratsiya faylini tahrir qilaylik /etc/xrdp/xrdp.ini qo'lda:
; 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_nodelayFaylga qo'shish ~/.xinitrc X server ishga tushirilganda amalga oshiriladigan afzal oyna boshqaruvchisi/ish stoli muhitini ishga tushirish:
% echo "exec i3" > ~/.xinitrcKeling, virtual mashinani o'chiraylik. PowerShell-da administrator sifatida quyidagi buyruqni ishga tushirish orqali VM uchun vsock transportini yoqing:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketKeling, virtual mashinani yana yoqaylik.
Ulanish
Tizim ishga tushgandan so'ng XRDP xizmati ishga tushishi bilan vmconnect ilovasi buni aniqlaydi va menyu bandi mavjud bo'ladi. ko'rinish -> Kengaytirilgan seans. Ushbu elementni tanlaganingizda, bizdan ekran o'lchamlarini o'rnatish so'raladi va yorliqda Mahalliy manbalar ochilgan dialog oynasida siz RDP seansi ichida uzatiladigan qurilmalarni tanlashingiz mumkin.


Ulanamiz. Biz XRDP kirish oynasini ko'ramiz:

Foydalanuvchi nomingiz va parolingizni kiriting.
foydalanish
Ushbu manipulyatsiyalardan olingan foyda sezilarli: RDP seansi Enhanced Sessionsiz virtual displey bilan ishlashga qaraganda ancha sezgir ishlaydi. RDP orqali VM ichida yuborilgan disklar katalogda mavjud ${HOME}/shared-drives:

Bufer yaxshi ishlayapti. Siz printerlarni ichkariga tashlay olmaysiz, bu nafaqat qo'llab-quvvatlanmaydi, balki . Ovoz ham ishlamaydi, lekin muallifga kerak emas edi. Alt + Tab kabi klaviatura yorliqlarini suratga olish uchun vmconnect-ni to'liq ekranga kengaytirishingiz kerak.
Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port haqida tcp://:3389. Agar virtual mashina standart kalitga ulangan bo'lsa va DHCP orqali tarmoq sozlamalarini qabul qilsa, siz unga xostdan ulanishingiz mumkin. название_машины.mshome.net. Siz faqat Kengaytirilgan rejimni o'chirib, vmconnect ilovasidan TTYga kirishingiz mumkin.
Ishlatilgan manbalar:
- GitHub-dagi xatolar haqida hisobot: ,
Manba: www.habr.com
