
Истифодаи мошинҳои виртуалӣ дар Linux Дар Hyper-V, берун аз қуттӣ, нисбат ба меҳмон каме камтар бароҳат аст. Windows-мошинҳо. Сабаби ин дар он аст, ки Hyper-V дар аввал барои истифодаи компютер тарҳрезӣ нашуда буд; шумо наметавонед танҳо бастаи иловаҳои меҳмонро насб кунед ва суръатбахшии графикаи корӣ, буфер, директорияҳои муштарак ва дигар бартариҳоро ба даст оред, ба монанди он ки шумо бо 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 кор мекунад. аллакай пешакӣ насб карда шудааст, пас бо тақсимоти дигар он камтар ва камтар равшан аст - масалан, муаллиф Мо тавонистем ESM-ро дар Fedora фаъол созем. Дар ин ҷо мо инчунин режими сессияи такмилёфтаро барои мошини виртуалии Arch фаъол мекунем. Linux.
Насб кардани хидматҳои ҳамгироӣ
Дар ин ҷо ҳама чиз камтар ё камтар содда аст, мо танҳо бояд бастаро насб кунем hyperv аз анбори ҷомеа:
% sudo pacman -S hypervХидматҳои VSS, мубодиларо фаъол созед ва файлҳо:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneНасби XRDP
анбор дар 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://-суроғаҳо, бинобар ин шумо бояд XRDP-ро аз Git ва драйвери Xorg-ро барои он аз AUR дастӣ насб кунед. Ямоқи XRDP, ки дар AUR пешниҳод шудааст, низ каме кӯҳна шудааст, аз ин рӯ ба шумо лозим меояд, ки 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 ҳама гуна муҳаррири матн.
Биёед параметрҳои сохтмонро таҳрир кунем. PKGBUILD барои сохтани XRDP аз Git дар сохтан дастгирии 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-ро барои VM тавассути иҷро кардани фармони зерин дар PowerShell ҳамчун администратор фаъол созед:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketБиёед боз мошини виртуалиро ба кор дарорем.
Пайвастшавӣ
Ҳамин ки хидмати XRDP пас аз оғози система оғоз мешавад, барномаи vmconnect инро муайян мекунад ва ҷузъи меню дастрас мешавад. View -> Сеанси мукаммал. Вақте ки шумо ин ашёро интихоб мекунед, аз мо хоҳиш карда мешавад, ки ҳалли экран ва дар ҷадвалро таъин кунем Манбаъҳои маҳаллӣ дар муколамае, ки кушода мешавад, шумо метавонед дастгоҳҳоеро, ки дар дохили сессияи RDP ирсол шудаанд, интихоб кунед.


Биёед пайваст шавем. Мо равзанаи воридшавии XRDP-ро мебинем:

Номи корбар ва пароли худро ворид кунед.
Истифода кунед
Фоида аз ин манипулятсияҳо назаррас аст: сессияи RDP нисбат ба кор бо дисплейи виртуалӣ бе Сессияи мукаммалшуда хеле ҷавобгартар кор мекунад. Дискҳое, ки дар дохили VM тавассути RDP фиристода мешаванд, дар феҳрист дастрасанд ${HOME}/shared-drives:

Буфер хуб кор мекунад. Шумо чопгарҳоро дар дохили он партофта наметавонед, ин на танҳо дастгирӣ намешавад, балки инчунин . Садо низ кор намекунад, аммо ба муаллиф лозим набуд. Барои сабт кардани миёнабурҳои клавиатура ба монанди Alt + Tab, шумо бояд vmconnect -ро ба экрани пурра васеъ кунед.
Агар бо ягон сабаб шумо хоҳед, ки барномаи дарунсохти vmconnect-ро ба ҷои он истифода баред Windows муштарии RDP ё, масалан, ба ин мошин аз мошини дигар пайваст шавед, пас ба шумо лозим меояд, ки файлро тағир диҳед /etc/xrdp/xrdp.ini port ба tcp://:3389. Агар мошини маҷозӣ ба Гузариши пешфарз пайваст бошад ва танзимоти шабакаро тавассути DHCP қабул кунад, шумо метавонед ба он аз мизбон дар название_машины.mshome.net. Шумо метавонед танҳо аз барномаи vmconnect ба TTY бо хомӯш кардани Ҳолати мукаммал ворид шавед.
Сарчашмаҳои истифодашуда:
- Ҳисобот оид ба хатогиҳо дар GitHub: ,
Манбаъ: will.com
