
Menggunakan mesin virtual Linux di Hyper-V di luar kotak adalah pengalaman yang sedikit kurang nyaman dibandingkan dengan mesin Windows tamu. Alasan untuk ini adalah bahwa Hyper-V pada awalnya tidak dimaksudkan untuk penggunaan desktop; Anda tidak bisa hanya mengambil dan menginstal paket add-on tamu dan mendapatkan akselerasi grafik yang bisa diterapkan, clipboard, direktori bersama dan kesenangan hidup lainnya, seperti yang terjadi di VirtualBox.
Hyper-V sendiri menyediakan beberapa layanan integrasi - misalnya, tamu dapat menggunakan layanan shadow shadow (VSS) dari host, tamu dapat dikirim sinyal shutdown, tamu dapat menyinkronkan waktu sistem dengan host virtualisasi, file dapat ditukar dengan mesin virtual dari host ( Copy-VMFile
di PowerShell). Untuk beberapa sistem operasi tamu, termasuk, tentu saja, Windows, aplikasi Koneksi Mesin Virtual ( vmconnect.exe
) vmconnect.exe
Mode Sesi yang Ditingkatkan, yang berfungsi melalui protokol RDP dan memungkinkan Anda untuk meneruskan perangkat disk dan printer ke mesin virtual, serta menggunakan umum papan klip.
Mode Sesi yang Ditingkatkan di luar kotak dijalankan pada Windows di Hyper-V segera setelah instalasi. Dengan tamu di Linux, Anda perlu menginstal server RDP yang mendukung vsock (ruang alamat jaringan virtual khusus di Linux yang dirancang untuk berkomunikasi dengan hypervisor). Jika untuk Ubuntu di aplikasi VMCreate yang datang dengan Hyper-V pada edisi desktop Windows, ada template mesin virtual khusus yang disiapkan di mana server XRDP RDP yang bekerja dengan vsock sudah diinstal sebelumnya, kemudian dengan distribusi lainnya semuanya kurang dan kurang jelas - jadi, penulis posting ini Ternyata termasuk ESM di Fedora. Di sini kami mengaktifkan Mode Sesi yang Ditingkatkan untuk mesin virtual dengan Arch Linux.
Instal Layanan Integrasi
Semuanya di sini kurang lebih sederhana, kita hanya perlu menginstal paket hyperv
dari repositori komunitas:
% sudo pacman -S hyperv
Aktifkan layanan VSS, metadata , dan berbagi file:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
Instal XRDP
Repositori linux-vm-tools di GitHub menyediakan skrip yang mengotomatiskan instalasi dan konfigurasi XRDP untuk Arch Linux dan Ubuntu. Instal Git, jika belum diinstal, bersama-sama dengan kompiler dan perangkat lunak lain untuk rakitan manual, lalu klon repositori:
% sudo pacman -S git base-devel % git clone https://github.com/microsoft/linux-vm-tools.git % cd linux-vm-tools/arch
Pada saat penulisan ini, rilis terbaru XRDP, yang diinstal oleh skrip makepkg.sh
diusulkan dalam repositori, adalah 0.9.11, di mana parsing dari vsock://
address rusak, jadi Anda harus menginstal XRDP dari Git dan driver Xorg dari AUR dengan tangan. Patch XRDP yang ditawarkan di AUR juga sedikit usang, jadi Anda harus mengedit PKGBUILD dan patch secara manual.
Kami akan mengkloning repositori dengan PKGBUILD dari AUR (biasanya prosedur ini bersama dengan perakitan diotomatisasi oleh program-program seperti yay , tetapi penulis melakukan seluruh 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.git
Pertama instal XRDP itu sendiri. Buka file PKGBUILD
dengan editor teks apa pun.
Edit parameter rakitan. PKGBUILD untuk membangun XRDP dari Git tidak termasuk dukungan vsock selama perakitan, jadi aktifkan 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 }
Patch arch-config.diff
, yang arch-config.diff
unit dan skrip untuk menjalankan XRDP di bawah path ke file yang digunakan di Arch Linux, berisi tambalan untuk instfiles/xrdp.sh
, yang telah dihapus dari paket XRDP pada saat penulisan, sehingga tambalan harus 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 -0600
Kami akan membangun dan menginstal paket dengan perintah % makepkg --skipchecksums -si
( --skipchecksums
diperlukan untuk menonaktifkan checksum dari file sumber, karena kami mengeditnya secara manual).
xorgxrdp-devel-git
, dan kemudian hanya mengumpulkan paket dengan perintah % makepkg -si
.
Buka direktori linux-vm-tools/arch
dan jalankan skrip install-config.sh
, yang menginstal pengaturan XRDP, PolicyKit, dan PAM:
% sudo ./install-config.sh
Script menetapkan pengaturan use_vsock
usang, yang telah diabaikan sejak versi 0.9.11, jadi kami akan mengedit file 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_nodelay
Tambahkan ke file ~/.xinitrc
peluncuran lingkungan window manager / desktop pilihan kami, yang akan dieksekusi ketika server X mulai:
% echo "exec i3" > ~/.xinitrc
Matikan mesin virtual. Kami mengaktifkan transport vsock untuk mesin virtual dengan menjalankan perintah berikut di PowerShell sebagai administrator:
PS Admin > Set-VM -VMName _ -EnhancedSessionTransportType HvSocket
Nyalakan mesin virtual lagi.
Koneksi
Segera setelah layanan XRDP dimulai setelah sistem dimulai, aplikasi vmconnect menentukan ini dan item menu Lihat -> Sesi yang Ditingkatkan menjadi tersedia. Saat memilih item ini, kita akan diminta untuk mengatur resolusi layar, dan pada tab Sumber Daya Lokal dialog yang terbuka, dimungkinkan untuk memilih perangkat yang diteruskan dalam sesi RDP.


Terhubung Lihat jendela login XRDP:

Masukkan nama pengguna dan kata sandi Anda.
Gunakan
Keuntungan dari manipulasi ini terlihat: sesi RDP jauh lebih responsif daripada ketika bekerja dengan tampilan virtual tanpa Sesi yang Ditingkatkan. VM yang dilemparkan ke dalam melalui RDP tersedia di direktori ${HOME}/shared-drives
:

Clipboard berfungsi dengan baik. Anda tidak dapat meneruskan printer di dalam, tidak hanya tidak didukung, tetapi juga merusak penerusan disk . Suara juga tidak berfungsi, tetapi penulis tidak membutuhkannya. Untuk mengambil pintasan keyboard seperti Alt + Tab, Anda perlu menggunakan vmconnect di layar penuh.
Jika karena alasan tertentu ada keinginan untuk menggunakan klien RDP yang dibangun ke dalam Windows alih-alih aplikasi vmconnect, atau, misalnya, terhubung ke mesin ini dari komputer lain, Anda perlu mengubah file port
/etc/xrdp/xrdp.ini
ke tcp://:3389
. Jika mesin virtual terhubung ke Default Switch dan menerima pengaturan jaringan melalui DHCP, maka Anda dapat menghubungkannya dari host di _.mshome.net
. Anda hanya dapat memasukkan TTY dari aplikasi vmconnect dengan mematikan Mode Enhanced.
Sumber yang digunakan :
- Hyper-V - Arch Wiki
- Bagreport di GitHub: 1 , 2