Истифодаи мошинҳои виртуалии Linux дар Hyper-V берун аз қуттӣ нисбат ба мошинҳои меҳмонони Windows каме бароҳаттар аст. Сабаби ин дар он аст, ки Hyper-V аслан барои истифодаи мизи корӣ пешбинӣ нашуда буд; шумо наметавонед танҳо пеш равед ва бастаи иловаҳои меҳмононро насб кунед ва суръатбахшии графикӣ, буфер, директорияҳои муштарак ва дигар лаззатҳои ҳаётро ба даст оред, чунон ки дар VirtualBox рӯй медиҳад.
Худи Hyper-V таъмин менамояд Copy-VMFile
дар PowerShell). Барои баъзе системаҳои оператсионии меҳмонон, аз ҷумла, албатта, Windows, дар замимаи Пайвасти мошини виртуалӣ (vmconnect.exe
) Ҳолати мукаммали ҷаласа мавҷуд аст, ки тавассути протоколи RDP кор мекунад ва ба шумо имкон медиҳад, ки дастгоҳҳои диск ва чопгарҳоро ба мошини виртуалӣ интиқол диҳед ва инчунин буфери муштаракро истифода баред.
Ҳолати мукаммали сессия дар Windows дар Hyper-V фавран пас аз насб кор мекунад. Бо меҳмонон дар Linux, шумо бояд сервери RDP-ро насб кунед, ки vsock-ро дастгирӣ мекунад (фазои суроғаи махсуси шабакаи виртуалӣ дар Linux барои муошират бо гипервизор пешбинӣ шудааст). Агар барои Ubuntu, барномаи VMCreate, ки бо Hyper-V дар нашрияҳои мизи кории Windows меояд, дорои қолаби махсуси омодашудаи мошини виртуалӣ мебошад, ки дар он сервери RDP бо vsock кор мекунад.
Насб кардани хидматҳои ҳамгироӣ
Дар ин ҷо ҳама чиз камтар ё камтар содда аст, мо танҳо бояд бастаро насб кунем hyperv
аз анбори ҷомеа:
% sudo pacman -S hyperv
Хидматҳои VSS, мубодиларо фаъол созед
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
Насби XRDP
анбор
% 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
, ки дар замони навиштан
[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
:
Буфер хуб кор мекунад. Шумо чопгарҳоро дар дохили он партофта наметавонед, ин на танҳо дастгирӣ намешавад, балки инчунин
Агар бо ягон сабаб хоҳиши истифодаи муштарии RDP-и дар Windows сохташуда ба ҷои барномаи vmconnect вуҷуд дошта бошад ё масалан, ба ин мошин аз мошини дигар пайваст шавед, пас шумо бояд файлро тағир диҳед /etc/xrdp/xrdp.ini
port
ба tcp://:3389
. Агар мошини маҷозӣ ба Гузариши пешфарз пайваст бошад ва танзимоти шабакаро тавассути DHCP қабул кунад, шумо метавонед ба он аз мизбон дар название_машины.mshome.net
. Шумо метавонед танҳо аз барномаи vmconnect ба TTY бо хомӯш кардани Ҳолати мукаммал ворид шавед.
Сарчашмаҳои истифодашуда:
Hyper-V Arch Wiki - Ҳисобот оид ба хатогиҳо дар GitHub:
1 ,2
Манбаъ: will.com