Hyper-V-da Arch Linux mehmonlari uchun Kengaytirilgan sessiya rejimini yoqing

Hyper-V-da Arch Linux mehmonlari uchun Kengaytirilgan sessiya rejimini yoqing

Hyper-V-da Linux virtual mashinalarini qutidan tashqarida ishlatish mehmon Windows mashinalariga qaraganda biroz qulayroqdir. Buning sababi shundaki, Hyper-V dastlab ish stolida foydalanish uchun mo'ljallanmagan; Siz shunchaki davom eta olmaysiz va mehmonlarga qo'shimchalar to'plamini o'rnatib, VirtualBox-da bo'lgani kabi ishlaydigan grafik tezlashtirish, almashuv xotirasi, umumiy kataloglar va hayotning boshqa quvonchlarini qo'lga kirita olmaysiz.

Hyper-Vning o'zi ta'minlaydi bir nechta integratsiya xizmatlari - Shunday qilib, mehmonlar xostning soyali nusxa ko'chirish xizmatidan (VSS) foydalanishlari mumkin, mehmonlar o'chirish signalini yuborishlari mumkin, mehmonlar tizim vaqtini virtualizatsiya xosti bilan sinxronlashtirishlari mumkin, fayllarni xostdan virtual mashina bilan almashishlari mumkin (Copy-VMFile PowerShell-da). Ba'zi mehmon operatsion tizimlari uchun, shu jumladan, albatta, Windows, Virtual Machine Connection ilovasida (vmconnect.exe) Kengaytirilgan seans rejimi mavjud bo'lib, u RDP protokoli orqali ishlaydi va disk qurilmalari va printerlarni virtual mashinaga yo'naltirish, shuningdek umumiy almashish buferidan foydalanish imkonini beradi.

Kengaytirilgan seans rejimi Windows-da Hyper-V-da o'rnatilgandan so'ng darhol ishlaydi. Linux-da mehmonlar bilan siz vsock-ni qo'llab-quvvatlaydigan RDP serverini o'rnatishingiz kerak (Linux-da gipervisor bilan bog'lanish uchun mo'ljallangan maxsus virtual tarmoq manzil maydoni). Agar Ubuntu uchun Windows ish stoli versiyalarida Hyper-V bilan birga kelgan VMCreate ilovasi maxsus tayyorlangan virtual mashina shabloniga ega bo'lsa, unda RDP server vsock bilan ishlaydi. XRDP allaqachon oldindan o'rnatilgan, keyin boshqa tarqatish bilan u kamroq va kamroq aniq - masalan, muallif bu post Fedora-da ESM-ni yoqish uchun chiqdi. Bu erda biz Arch Linux virtual mashinasi uchun Kengaytirilgan sessiya rejimini ham yoqamiz.

Integratsiya xizmatlarini o'rnatish

Bu erda hamma narsa ko'proq yoki kamroq oddiy, biz faqat paketni o'rnatishimiz kerak hyperv jamoat omboridan:

% sudo pacman -S hyperv

VSS xizmatlarini yoqish, almashish metadata va fayllar:

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

XRDP o'rnatish

ombori linux-vm-vositalari GitHub-da Arch Linux va Ubuntu uchun XRDP-ni o'rnatish va sozlash jarayonini avtomatlashtiradigan skriptlarni taqdim etadi. Git-ni, agar u hali o'rnatilmagan bo'lsa, kompilyator va qo'lda qurish uchun boshqa dasturlar bilan birga o'rnating va keyin omborni klonlang:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

Ushbu yozish paytida, skript tomonidan o'rnatilgan XRDP-ning eng so'nggi versiyasi makepkg.shomborda taklif qilingan 0.9.11, bunda tahlil qilish buziladi vsock://-manzillar, shuning uchun siz Git'dan XRDP va uning uchun Xorg drayverini AUR'dan qo'lda o'rnatishingiz kerak. AURda taklif qilingan XRDP uchun yamoq ham biroz eskirgan, shuning uchun siz PKGBUILD va yamoqni qo'lda tahrirlashingiz kerak bo'ladi.

Biz omborlarni AUR-dan PKGBUILD-lar bilan klonlaymiz (odatda bu protsedura yig'ish bilan birga, shunga o'xshash dasturlar tomonidan avtomatlashtirilgan. vajjaj, lekin muallif bu protsedurani toza tizimda bajargan):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Avval XRDP ni o'rnatamiz. Keling, faylni ochamiz PKGBUILD har qanday matn muharriri.

Qurilish parametrlarini tahrir qilaylik. Git-dan XRDP-ni yaratish uchun PKGBUILD qurilishda vsock-ni qo'llab-quvvatlamaydi, shuning uchun uni o'zimiz yoqaylik:

 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
 }

Yamoq ichida arch-config.diff, Arch Linux-da ishlatiladigan fayllar yo'llari ostidagi birliklarni va XRDP ishga tushirish skriptlarini tahrir qiladi, boshqa narsalar qatori, skriptga yamoqni ham o'z ichiga oladi. instfiles/xrdp.sh, bu yozish paytida olib tashlandi XRDP tarqatilishidan, shuning uchun yamoqni qo'lda tahrirlash kerak bo'ladi:

  [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

Buyruq bilan paketni tuzing va o'rnating % makepkg --skipchecksums -si (kalit --skipchecksums manba fayllarni tekshirish summasini tekshirishni o'chirish uchun kerak, chunki biz ularni qo'lda tahrir qildik).

Keling, katalogga o'tamiz xorgxrdp-devel-git, shundan so'ng biz shunchaki buyruq bilan paketni quramiz % makepkg -si.

Keling, katalogga o'tamiz linux-vm-tools/arch va skriptni ishga tushiring install-config.sh, bu XRDP, PolicyKit va PAM sozlamalarini o'rnatadi:

% sudo ./install-config.sh

Skript eski sozlamalarni o'rnatadi use_vsock, bu 0.9.11 versiyasidan beri e'tiborga olinmaydi, shuning uchun konfiguratsiya faylini tahrir qilaylik /etc/xrdp/xrdp.ini qo'lda:

 ;   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

Faylga qo'shish ~/.xinitrc X server ishga tushirilganda amalga oshiriladigan afzal oyna boshqaruvchisi/ish stoli muhitini ishga tushirish:

% echo "exec i3" > ~/.xinitrc

Keling, virtual mashinani o'chiraylik. PowerShell-da administrator sifatida quyidagi buyruqni ishga tushirish orqali VM uchun vsock transportini yoqing:

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

Keling, virtual mashinani yana yoqaylik.

Podklyuchenie

Tizim ishga tushgandan so'ng XRDP xizmati ishga tushishi bilan vmconnect ilovasi buni aniqlaydi va menyu bandi mavjud bo'ladi. ko'rinish -> Kengaytirilgan seans. Ushbu elementni tanlaganingizda, bizdan ekran o'lchamlarini o'rnatish so'raladi va yorliqda Mahalliy manbalar ochilgan dialog oynasida siz RDP seansi ichida uzatiladigan qurilmalarni tanlashingiz mumkin.

Hyper-V-da Arch Linux mehmonlari uchun Kengaytirilgan sessiya rejimini yoqing
Hyper-V-da Arch Linux mehmonlari uchun Kengaytirilgan sessiya rejimini yoqing

Ulanamiz. Biz XRDP kirish oynasini ko'ramiz:

Hyper-V-da Arch Linux mehmonlari uchun Kengaytirilgan sessiya rejimini yoqing

Foydalanuvchi nomingiz va parolingizni kiriting.

foydalanish

Ushbu manipulyatsiyalardan olingan foyda sezilarli: RDP seansi Enhanced Sessionsiz virtual displey bilan ishlashga qaraganda ancha sezgir ishlaydi. RDP orqali VM ichida yuborilgan disklar katalogda mavjud ${HOME}/shared-drives:

Hyper-V-da Arch Linux mehmonlari uchun Kengaytirilgan sessiya rejimini yoqing

Bufer yaxshi ishlayapti. Siz printerlarni ichkariga tashlay olmaysiz, bu nafaqat qo'llab-quvvatlanmaydi, balki diskni yo'naltirishni buzadi. Ovoz ham ishlamaydi, lekin muallifga kerak emas edi. Alt + Tab kabi klaviatura yorliqlarini suratga olish uchun vmconnect-ni to'liq ekranga kengaytirishingiz kerak.

Agar biron sababga ko'ra vmconnect ilovasi o'rniga Windows-ga o'rnatilgan RDP mijozidan foydalanish yoki, masalan, boshqa mashinadan ushbu mashinaga ulanish istagi paydo bo'lsa, faylni o'zgartirishingiz kerak bo'ladi. /etc/xrdp/xrdp.ini port haqida tcp://:3389. Agar virtual mashina standart kalitga ulangan bo'lsa va DHCP orqali tarmoq sozlamalarini qabul qilsa, siz unga xostdan ulanishingiz mumkin. Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠ°ΡˆΠΈΠ½Ρ‹.mshome.net. Siz faqat Kengaytirilgan rejimni o'chirib, vmconnect ilovasidan TTYga kirishingiz mumkin.

Ishlatilgan manbalar:

  1. Hyper-V Arch Wiki
  2. GitHub-dagi xatolar haqida hisobot: 1, 2

Manba: www.habr.com

a Izoh qo'shish