
Վիրտուալ մեքենաների օգտագործումը Linux Hyper-V-ում ակնթարթային ռեժիմով աշխատելը մի փոքր ավելի քիչ հարմարավետ է, քան հյուրի ռեժիմով աշխատելիս։ Windows-մեքենաներ։ Դրա պատճառն այն է, որ Hyper-V-ն սկզբնապես նախատեսված չէր աշխատասեղանի համար. դուք չեք կարող պարզապես տեղադրել Guest Additions փաթեթը և ստանալ աշխատող գրաֆիկայի արագացում, սեղմատախտակ, համօգտագործվող գրացուցակներ և այլ առավելություններ, ինչպես դա կարող եք անել VirtualBox-ի դեպքում։
Hyper-V-ն ինքն է ապահովում — Այսպիսով, հյուրերը կարող են օգտագործել հյուրընկալողի ստվերային պատճենման ծառայությունը (VSS), հյուրերին կարող են ուղարկել անջատման ազդանշան, հյուրերը կարող են համաժամեցնել համակարգի ժամանակը վիրտուալացման հոսթի հետ, իսկ հոսթինգը կարող է ֆայլեր փոխանակել վիրտուալ մեքենայի հետ (Copy-VMFile PowerShell-ում): Որոշ հյուր օպերացիոն համակարգերի համար, որոնք, իհարկե, ներառում են Windows, վիրտուալ մեքենայի միացման ծրագրում (vmconnect.exe) Հասանելի է ընդլայնված նստաշրջանի ռեժիմը, որը գործում է RDP արձանագրության միջոցով և թույլ է տալիս սկավառակի սարքերն ու տպիչները փոխանցել վիրտուալ մեքենային, ինչպես նաև օգտագործել համօգտագործվող սեղմատախտակ:
Բարելավված սեսիայի ռեժիմը գործում է անմիջապես Windows Hyper-V-ում տեղադրումից անմիջապես հետո։ Հյուրերի հետ միասին Linux Դուք պետք է տեղադրեք RDP սերվեր, որը աջակցում է vsock-ին (հատուկ վիրտուալ ցանցային հասցեների տարածք) Linux, նախատեսված է հիպերվիզորի հետ հաղորդակցվելու համար): Եթե Ubuntu VMCreate ծրագրում, որը գալիս է Hyper-V-ի հետ աշխատասեղանի տարբերակներում Windows, կա հատուկ պատրաստված վիրտուալ մեքենայի ձևանմուշ, որում RDP սերվերը աշխատում է vsock-ի հետ արդեն նախապես տեղադրված է, ապա այլ բաշխումների դեպքում ամեն ինչ ավելի քիչ պարզ է, այնպես որ, հեղինակի համար Մեզ հաջողվեց Fedora-ում միացնել ESM-ը։ Այստեղ մենք նաև ակտիվացնում ենք Arch վիրտուալ մեքենայի համար Enhanced Session Mode-ը։ Linux.
Ինտեգրման ծառայությունների տեղադրում
Այստեղ ամեն ինչ քիչ թե շատ պարզ է, մենք պարզապես պետք է տեղադրենք փաթեթը hyperv համայնքի շտեմարանից.
% sudo pacman -S hypervԵկեք միացնենք VSS և փոխանակման ծառայությունները և ֆայլեր՝
% 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://-հասցեներ, այնպես որ դուք պետք է տեղադրեք XRDP Git-ից, իսկ դրա համար Xorg դրայվերը AUR-ից ձեռքով: AUR-ում տրամադրված XRDP պատչը նույնպես փոքր-ինչ հնացած է, այնպես որ դուք պետք է խմբագրեք 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 ցանկացած տեքստային խմբագրիչ:
Եկեք խմբագրենք կառուցման պարամետրերը: 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.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 transport-ը վիրտուալ մեքենայի համար՝ գործարկելով հետևյալ հրամանը PowerShell-ում՝ որպես ադմինիստրատոր.
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. Եթե վիրտուալ մեքենան միացված է Default Switch-ին և ստանում է ցանցի կարգավորումներ DHCP-ի միջոցով, կարող եք միանալ դրան հոսթից՝ հասցեով: название_машины.mshome.net. Դուք կարող եք մուտք գործել TTY միայն vmconnect հավելվածից՝ անջատելով Ընդլայնված ռեժիմը:
Օգտագործված աղբյուրներ:
- Սխալների մասին հաղորդումներ GitHub-ում. ,
Source: www.habr.com
