
Menggunakan mesin maya pada Linux dalam Hyper-V di luar kotak adalah pengalaman yang sedikit kurang selesa berbanding dengan tetamu Windows-ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ. ΠΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠΎΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Hyper-V Π²ΡΠ΅ ΠΆΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π»ΡΡ Π΄Π»Ρ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ; Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ, ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π³ΠΎΡΡΠ΅Π²ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅, Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°, ΠΎΠ±ΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π΄ΠΎΡΡΠΈ ΠΆΠΈΠ·Π½ΠΈ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² VirtualBox.
Hyper-V sendiri menyediakan - jadi, tetamu boleh menggunakan perkhidmatan salinan bayangan hos (VSS), tetamu boleh menghantar isyarat penutupan, tetamu boleh menyegerakkan masa sistem dengan hos virtualisasi, fail boleh ditukar dari hos dengan mesin maya (Copy-VMFile Π² PowerShell). ΠΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π³ΠΎΡΡΠ΅Π²ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, Π² ΡΠΈΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ
, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΈ Windows, Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Virtual Machine Connection (vmconnect.exe) Mod Sesi Dipertingkat tersedia, berfungsi melalui protokol RDP dan membolehkan anda memindahkan peranti cakera dan pencetak ke mesin maya, serta menggunakan papan keratan kongsi.
Enhanced Session Mode ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Windows Π² Hyper-V ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. Π‘ Π³ΠΎΡΡΡΠΌΠΈ Π½Π° Linux Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ RDP-ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ vsock (ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π² Linux, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Ρ Π³ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠΎΠΌ). ΠΡΠ»ΠΈ Π΄Π»Ρ Ubuntu Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ VMCreate, ΠΈΠ΄ΡΡΠΈΠΌ Ρ Hyper-V Π½Π° Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡ Windows, Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ vsock RDP-ΡΠ΅ΡΠ²Π΅Ρ sudah diprapasang, maka dengan pengedaran lain ia semakin kurang jelas - sebagai contoh, pengarang ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ESM Π² Fedora. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΌΡ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ Enhanced Session Mode Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Ρ Arch Linux.
Memasang perkhidmatan penyepaduan
Segala-galanya lebih kurang mudah di sini, kita hanya perlu memasang pakej hyperv daripada repositori komuniti:
% sudo pacman -S hypervMari dayakan perkhidmatan VSS dan pertukaran dan fail:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneMemasang XRDP
repositori Π½Π° 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/archPada masa menulis artikel ini, keluaran terbaru XRDP, yang dipasang oleh skrip makepkg.shyang dicadangkan dalam repositori ialah 0.9.11, vsock://-alamat, jadi anda perlu memasang XRDP dari Git dan pemacu Xorg untuknya dari AUR secara manual. Tampalan XRDP yang ditawarkan dalam AUR juga sudah lapuk sedikit, jadi anda perlu mengedit PKGBUILD dan tampalan secara manual.
Mari kita klon repositori dengan PKGBUILD daripada AUR (biasanya prosedur ini, bersama-sama dengan binaan, diautomasikan oleh program seperti , tetapi pengarang melakukan keseluruhan prosedur ini pada sistem yang bersih):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitJom install XRDP sendiri dulu. Mari buka fail PKGBUILD mana-mana penyunting teks.
Mari edit parameter binaan. PKGBUILD untuk membina XRDP daripada Git tidak termasuk sokongan vsock semasa membina, jadi mari kita dayakannya sendiri:
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
}Dalam tampalan arch-config.diff, ΠΏΡΠ°Π²ΡΡΠ΅ΠΌ ΡΠ½ΠΈΡΡ ΠΈ ΡΠΊΡΠΈΠΏΡΡ Π·Π°ΠΏΡΡΠΊΠ° XRDP ΠΏΠΎΠ΄ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π² Arch Linux, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠ°ΡΡ ΠΊ ΡΠΊΡΠΈΠΏΡΡ instfiles/xrdp.sh, yang pada masa penulisan daripada pengedaran XRDP, jadi tampalan perlu diedit secara manual:
[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 -0600Mari kita susun dan pasang pakej dengan arahan % makepkg --skipchecksums -si (kunci --skipchecksums diperlukan untuk melumpuhkan pengesahan checksum bagi fail sumber, kerana kami mengeditnya secara manual).
Mari pergi ke direktori xorgxrdp-devel-git, selepas itu kami hanya memasang pakej dengan arahan % makepkg -si.
Mari pergi ke direktori linux-vm-tools/arch dan jalankan skrip install-config.sh, yang menetapkan tetapan XRDP, PolicyKit dan PAM:
% sudo ./install-config.shSkrip memasang tetapan lama use_vsock, yang telah diabaikan sejak versi 0.9.11, jadi mari edit fail konfigurasi /etc/xrdp/xrdp.ini secara manual:
; 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_nodelayTambahkan pada fail ~/.xinitrc melancarkan pengurus tetingkap/persekitaran desktop pilihan anda, yang akan dilaksanakan apabila pelayan X bermula:
% echo "exec i3" > ~/.xinitrcMari matikan mesin maya. Kami mengaktifkan pengangkutan vsock untuk mesin maya dengan menjalankan arahan berikut dalam PowerShell sebagai pentadbir:
PS Admin > Set-VM -VMName ΠΠΠΠΠΠΠΠ_ΠΠΠ¨ΠΠΠ« -EnhancedSessionTransportType HvSocketMari hidupkan mesin maya sekali lagi.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Sebaik sahaja perkhidmatan XRDP bermula selepas sistem bermula, aplikasi vmconnect akan mengesan ini dan item akan tersedia dalam menu Lihat -> Sesi Dipertingkatkan. Apabila memilih item ini, kami akan digesa untuk menetapkan resolusi skrin dan pada tab Sumber Tempatan Dalam dialog yang terbuka, anda boleh memilih peranti untuk dimajukan ke dalam sesi RDP.


Jom sambung. Kami akan melihat tetingkap log masuk XRDP:

Masukkan nama pengguna dan kata laluan anda.
Gunakan
Faedah daripada manipulasi ini ketara: sesi RDP berfungsi dengan lebih responsif berbanding semasa bekerja dengan paparan maya tanpa Sesi Dipertingkat. Cakera yang dijatuhkan di dalam VM melalui RDP tersedia dalam direktori ${HOME}/shared-drives:

Papan keratan berfungsi dengan baik. Anda tidak boleh memajukan pencetak di dalam; ini bukan sahaja tidak disokong, tetapi juga . Bunyi juga tidak berfungsi, tetapi pengarang tidak memerlukan ini. Untuk menangkap pintasan papan kekunci seperti Alt+Tab, anda perlu mengembangkan vmconnect ke skrin penuh.
ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ vmconnect Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² Windows RDP-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΡΡΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ /etc/xrdp/xrdp.ini port pada tcp://:3389. Jika mesin maya disambungkan ke Suis Lalai dan menerima tetapan rangkaian melalui DHCP, maka anda boleh menyambung kepadanya daripada hos di Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠ°ΡΠΈΠ½Ρ.mshome.net. Anda hanya boleh log masuk ke TTY daripada aplikasi vmconnect dengan mematikan Mod Dipertingkat.
Sumber terpakai:
- Laporan pepijat pada GitHub: ,
Sumber: www.habr.com
