Aktifkan Mode Sesi yang Ditingkatkan untuk Tamu Arch Linux di Hyper-V

KDPV


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.


Dialog Resolusi Layar
Dialog Seleksi Sumber Daya Lokal


Terhubung Lihat jendela login XRDP:


Jendela Masuk 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 :


Isi drive C yang dilemparkan ke dalam VM


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 :


  1. Hyper-V - Arch Wiki
  2. Bagreport di GitHub: 1 , 2

Source: https://habr.com/ru/post/id482372/


All Articles