Mendayakan Mod Sesi Dipertingkatkan untuk Arch Linux-tetamu dalam Hyper-V

Mendayakan Mod Sesi Dipertingkatkan untuk Arch Linux-tetamu dalam Hyper-V

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 beberapa perkhidmatan integrasi - 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-сСрвСр XRDP sudah diprapasang, maka dengan pengedaran lain ia semakin kurang jelas - sebagai contoh, pengarang jawatan ini ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ 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 hyperv

Mari dayakan perkhidmatan VSS dan pertukaran metadata dan fail:

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

Memasang XRDP

repositori linux-vm-tools Π½Π° 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/arch

Pada masa menulis artikel ini, keluaran terbaru XRDP, yang dipasang oleh skrip makepkg.shyang dicadangkan dalam repositori ialah 0.9.11, di mana penghuraian rosak 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 Yay, 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.git

Jom 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 telah dikeluarkan 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 -0600

Mari 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.sh

Skrip 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_nodelay

Tambahkan pada fail ~/.xinitrc melancarkan pengurus tetingkap/persekitaran desktop pilihan anda, yang akan dilaksanakan apabila pelayan X bermula:

% echo "exec i3" > ~/.xinitrc

Mari matikan mesin maya. Kami mengaktifkan pengangkutan vsock untuk mesin maya dengan menjalankan arahan berikut dalam PowerShell sebagai pentadbir:

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

Mari 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.

Mendayakan Mod Sesi Dipertingkatkan untuk Arch Linux-tetamu dalam Hyper-V
Mendayakan Mod Sesi Dipertingkatkan untuk Arch Linux-tetamu dalam Hyper-V

Jom sambung. Kami akan melihat tetingkap log masuk XRDP:

Mendayakan Mod Sesi Dipertingkatkan untuk Arch Linux-tetamu dalam Hyper-V

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:

Mendayakan Mod Sesi Dipertingkatkan untuk Arch Linux-tetamu dalam Hyper-V

Papan keratan berfungsi dengan baik. Anda tidak boleh memajukan pencetak di dalam; ini bukan sahaja tidak disokong, tetapi juga memecahkan pemajukan cakera. 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:

  1. Hyper-V - Wiki Arch
  2. Laporan pepijat pada GitHub: 1, 2

Sumber: www.habr.com

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS πŸ”₯ Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster