Aktifkan Mode Sesi yang Disempurnakan untuk tamu Arch Linux di Hyper-V

Aktifkan Mode Sesi yang Disempurnakan untuk tamu Arch Linux di Hyper-V

Menggunakan mesin virtual Linux di Hyper-V out of the box agak kurang nyaman dibandingkan dengan mesin tamu Windows. Alasannya adalah karena Hyper-V pada awalnya tidak ditujukan untuk penggunaan desktop; Anda tidak bisa begitu saja menginstal paket tambahan tamu dan mendapatkan akselerasi grafis, papan klip, direktori bersama, dan kesenangan hidup lainnya yang bisa diterapkan, seperti yang terjadi di VirtualBox.

Hyper-V sendiri menyediakan beberapa layanan integrasi - jadi, tamu dapat menggunakan layanan penyalinan bayangan (VSS) dari host, tamu dapat mengirim sinyal mati, 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, dalam aplikasi Virtual Machine Connection (vmconnect.exe) Tersedia Mode Sesi yang Disempurnakan, yang berfungsi melalui protokol RDP dan memungkinkan Anda meneruskan perangkat disk dan printer ke mesin virtual, serta menggunakan clipboard bersama.

Mode Sesi yang Disempurnakan bekerja di luar kotak pada Windows di Hyper-V tepat setelah penginstalan. 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, aplikasi VMCreate yang hadir dengan Hyper-V pada Windows edisi desktop memiliki template mesin virtual yang disiapkan khusus di mana server RDP berjalan dengan vsock XRDP sudah pra-instal, lalu dengan distro lain semakin tidak jelas - misalnya, pembuatnya posting ini ternyata mengaktifkan ESM di Fedora. Di sini kami juga mengaktifkan Enhanced Session Mode untuk mesin virtual Arch Linux.

Menginstal layanan integrasi

Semuanya kurang lebih sederhana di sini, kita hanya perlu menginstal paketnya hyperv dari repositori komunitas:

% sudo pacman -S hyperv

Aktifkan layanan VSS, tukar metadata dan file:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Instalasi XRDP

gudang linux-vm-alat di GitHub menyediakan skrip yang mengotomatiskan proses pemasangan dan konfigurasi XRDP untuk Arch Linux dan Ubuntu. Instal Git, jika belum diinstal, bersama dengan kompiler dan perangkat lunak lain untuk pembuatan manual, lalu tiru 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 dengan skrip makepkg.shdiusulkan dalam repositori adalah 0.9.11, di mana parsing rusak vsock://-alamat, jadi Anda harus menginstal XRDP dari Git dan driver Xorg untuk itu dari AUR secara manual. Tambalan untuk XRDP yang ditawarkan di AUR juga agak ketinggalan jaman, jadi Anda harus mengedit PKGBUILD dan tambalan secara manual.

Kami mengkloning repositori dengan PKGBUILD dari AUR (biasanya prosedur ini, bersama dengan perakitan, diotomatiskan oleh 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

Mari kita instal XRDP sendiri terlebih dahulu. Mari kita buka filenya PKGBUILD editor teks apapun.

Mari kita edit parameter build. PKGBUILD untuk membangun XRDP dari Git tidak menyertakan dukungan vsock di dalam build, jadi mari kita 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
 }

Di tambalan arch-config.diff, yang mengedit unit dan skrip startup XRDP di bawah jalur ke file yang digunakan di Arch Linux, berisi, antara lain, tambalan ke skrip instfiles/xrdp.sh, yang pada saat penulisan telah dihapus dari distribusi XRDP, jadi 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

Bangun dan instal paket dengan perintah % makepkg --skipchecksums -si (kunci --skipchecksums diperlukan untuk menonaktifkan verifikasi checksum dari file sumber, karena kami mengeditnya secara manual).

Mari kita pergi ke direktori xorgxrdp-devel-git, setelah itu kita cukup membuat paket dengan perintah % makepkg -si.

Mari kita pergi ke direktori linux-vm-tools/arch dan jalankan skrip install-config.sh, yang menetapkan pengaturan XRDP, PolicyKit, dan PAM:

% sudo ./install-config.sh

Skrip menginstal setelan lawas use_vsock, yang diabaikan sejak versi 0.9.11, jadi mari kita edit file konfigurasinya /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 meluncurkan pengelola jendela/lingkungan desktop pilihan Anda, yang akan dijalankan saat server X dimulai:

% echo "exec i3" > ~/.xinitrc

Mari kita matikan mesin virtual. Aktifkan transportasi vsock untuk VM dengan menjalankan perintah berikut di PowerShell sebagai administrator:

PS Admin > Set-VM -VMName ΠΠΠ—Π’ΠΠΠ˜Π•_МАШИНЫ -EnhancedSessionTransportType HvSocket

Mari hidupkan mesin virtual lagi.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Segera setelah layanan XRDP dimulai setelah sistem dimulai, aplikasi vmconnect akan menentukan ini dan item menu akan tersedia. View -> Sesi yang ditingkatkan. Saat Anda memilih item ini, kami akan diminta untuk mengatur resolusi layar, dan di tab Sumber Daya Lokal pada dialog yang terbuka, Anda dapat memilih perangkat yang diteruskan di dalam sesi RDP.

Aktifkan Mode Sesi yang Disempurnakan untuk tamu Arch Linux di Hyper-V
Aktifkan Mode Sesi yang Disempurnakan untuk tamu Arch Linux di Hyper-V

Mari terhubung. Kami akan melihat jendela masuk XRDP:

Aktifkan Mode Sesi yang Disempurnakan untuk tamu Arch Linux di Hyper-V

Masukkan nama pengguna dan kata sandi Anda.

Menggunakan

Keuntungan dari manipulasi ini terlihat: sesi RDP bekerja jauh lebih responsif daripada saat bekerja dengan tampilan virtual tanpa Sesi yang Ditingkatkan. Disk yang diteruskan di dalam VM melalui RDP tersedia di direktori ${HOME}/shared-drives:

Aktifkan Mode Sesi yang Disempurnakan untuk tamu Arch Linux di Hyper-V

Papan klip berfungsi dengan baik. Anda tidak dapat membuang printer ke dalam, ini tidak hanya tidak didukung, tetapi juga merusak penerusan disk. Suaranya juga tidak berfungsi, tetapi penulis tidak membutuhkannya. Untuk menangkap pintasan keyboard seperti Alt + Tab, Anda perlu memperluas vmconnect ke layar penuh.

Jika karena alasan tertentu ada keinginan untuk menggunakan klien RDP bawaan Windows alih-alih aplikasi vmconnect atau, misalnya, menyambungkan ke mesin ini dari mesin lain, maka Anda perlu mengubah file /etc/xrdp/xrdp.ini port pada 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 masuk ke TTY dari aplikasi vmconnect dengan mematikan Enhanced Mode.

Sumber yang digunakan:

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

Sumber: www.habr.com

Tambah komentar