
AnvÀndning av virtuella maskiner pÄ Linux i Hyper-V Àr i allmÀnhet nÄgot mindre bekvÀmt Àn med Windows-gÀstmaskiner. Anledningen till detta Àr att Hyper-V ursprungligen inte var avsett för desktop-anvÀndning; man kan helt enkelt inte installera gÀsttillÀggspaket och fÄ fungerande grafisk acceleration, gemensamma utrymmen eller andra bekvÀmligheter som i VirtualBox.
Hyper-V tillhandahĂ„ller â sĂ„ gĂ€ster kan anvĂ€nda vĂ€rdens skuggbaserade kopieringstjĂ€nst (VSS), signaler för avstĂ€ngning kan sĂ€ndas till gĂ€ster, gĂ€ster kan synkronisera systemtid med virtualiseringsvĂ€rden och filutbyte Ă€r möjligt mellan vĂ€rden och den virtuella maskinen (Copy-VMFile i PowerShell). För vissa gĂ€stoperativsystem, dĂ€ribland Windows, Ă€r förbĂ€ttrat sessionslĂ€ge tillgĂ€ngligt i applikationen Virtual Machine Connection (vmconnect.exe) som anvĂ€nder RDP-protokollet och möjliggör vidarebefordran av enheter och skrivare till den virtuella maskinen, samt anvĂ€ndning av delad urklipp.
FörbĂ€ttrat sessionslĂ€ge fungerar omedelbart i Windows i Hyper-V direkt efter installationen. Med Linux-gĂ€ster behöver man installera en RDP-server som stöder vsock (ett speciellt virtuellt nĂ€tverksadressutrymme i Linux, avsett för kommunikation med hypervisorn). Om Ubuntu har en speciellt förberedd mall för virtuella maskiner i VMCreate-applikationen, som följer med Hyper-V pĂ„ desktoputgĂ„vor av Windows, dĂ€r den RDP-server som arbetar med vsock, redan Ă€r förinstallerad, sĂ„ Ă€r det mer otydligt med andra distributioner â författaren av kunde aktivera ESM i Fedora. HĂ€r aktiverar vi förbĂ€ttrat sessionslĂ€ge för den virtuella maskinen med Arch Linux.
Installation av integrationsservrar
HÀr Àr det mer eller mindre enkelt, vi behöver bara installera paketet hyperv frÄn community-repositoriet:
% sudo pacman -S hypervVi aktiverar VSS-servrar, metadata % for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
Installation av XRDPlinux-vm-tools
FörrÄd % sudo pacman -S git base-devel % git clone https://github.com/microsoft/linux-vm-tools.git % cd linux-vm-tools/arch
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archVid tidpunkten för denna artikels skrivande Àr den senaste versionen av XRDP, som installeras via skriptet makepkg.sh, som föreslÄs i repositoryt, 0.9.11, vsock://-adresser Àr bruten, sÄ du mÄste installera XRDP frÄn Git och Xorg-drivrutinen frÄn AUR manuellt. Patchen till XRDP, som erbjuds i AUR, Àr ocksÄ nÄgot förÄldrad, sÄ du mÄste redigera PKGBUILD och patchen manuellt.
Vi klonar repositories med PKGBUILD:er frÄn AUR (denna procedur automatiseras vanligtvis tillsammans med byggandet av program som , men författaren har genomfört hela denna procedur pÄ ett rent system):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitVi installerar först XRDP. Ăppna filen PKGBUILD med valfri textredigerare.
Vi redigerar byggparametrarna. PKGBUILD för att bygga XRDP frÄn Git inkluderar inte stöd för vsock vid byggandet, sÄ vi aktiverar det sjÀlva:
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
}I patchen arch-config.diff, som justerar enheterna och startskripten för XRDP till vÀgarna för filerna som anvÀnds i Arch Linux, finns ocksÄ en patch till skriptet instfiles/xrdp.sh, som, vid tidpunkten för denna artikels skrivande, frÄn XRDP-distributionen, sÄ patchen mÄste redigeras manuellt:
[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 @@
- # Beskrivning: startar xrdp
- ### SLUT 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 -0600Vi bygger och installerar paketet med kommandot % makepkg --skipchecksums -si (nyckeln --skipchecksums behövs för att stÀnga av kontrollsummekontrollen av kÀllfilerna, eftersom vi har redigerat dem manuellt).
Vi gÄr till katalogen xorgxrdp-devel-git, varefter vi helt enkelt bygger paketet med kommandot % makepkg -si.
Vi gÄr till katalogen linux-vm-tools/arch och kör skriptet install-config.sh, som installerar instÀllningar för XRDP, PolicyKit och PAM:
% sudo ./install-config.shSkriptet installerar den förÄldrade instÀllningen use_vsock, som ignoreras frÄn version 0.9.11, sÄ vi redigerar konfigurationsfilen /etc/xrdp/xrdp.ini manuellt:
; port=vsock://:
-port=3389
+port=vsock://-1:3389
; 'port' ovan bör anslutas med vsock istÀllet för tcp
; anvÀnd detta endast med nummer ensam i port ovan
; föredra att anvÀnda vsock://: ovan
-use_vsock=true
+;use_vsock=true
; reglera om den lyssnande socketen anvÀnder socket alternativ tcp_nodelayLÀgg till i filen ~/. starta din föredragna fönsterhanterare / skrivbordsmiljö som kommer att köras vid starten av X-servern:
% echo "exec i3" > ~/.StÀng av den virtuella maskinen. Aktivera transport vsock för den virtuella maskinen genom att köra följande kommando i PowerShell som administratör:
PS Admin > Set-VM -VMName MASKINNAMN -EnhancedSessionTransportType HvSocketSÀtt pÄ den virtuella maskinen igen.
Anslutning
NÀr XRDP-tjÀnsten startas efter systemstart kommer applikationen vmconnect att kÀnna av detta och menyn kommer att fÄ ett alternativ View -> Enhanced Session. Vid val av detta alternativ kommer vi att bli erbjudna att stÀlla in skÀrmupplösning och pÄ fliken Local Resources i den öppnade dialogrutan kan vi vÀlja enheter som ska vidarebefordras till RDP-sessionen.


Vi ansluter. Vi ser XRDP-inloggningsfönstret:

Ange ditt anvÀndarnamn och lösenord.
AnvÀndning
Vinsten av dessa manipulationer Àr mÀrkbar: RDP-sessionen fungerar mycket mer responsivt Àn nÀr du arbetar med en virtuell skÀrm utan Enhanced Session. Dela diskar inne i VM via RDP Àr tillgÀngliga i katalogen ${HOME}/shared-drives:

Urklipp fungerar bra. Att vidarebefordra skrivare inÄt Àr inte bara inte stöd, utan . Ljud fungerar inte heller, men det behovdes inte. För att fÄnga tangentkombinationer som Alt+Tab, mÄste vmconnect köras i helskÀrm.
Om det av nÄgon anledning finns önskan att anvÀnda den inbyggda Windows RDP-klienten istÀllet för applikationen vmconnect eller att ansluta till denna maskin frÄn en annan maskin, mÄste du Àndra i filen /etc/xrdp/xrdp.ini port till tcp://:3389. Om den virtuella maskinen Àr ansluten till Default Switch och fÄr nÀtverksinstÀllningar via DHCP, kan du ansluta till den frÄn vÀrden via adressen maskinnamn.mshome.net. Du kan bara logga in i TTY frÄn applikationen vmconnect, genom att stÀnga av Enhanced Mode.
AnvÀnda kÀllor:
- Buggrapporter pÄ GitHub: ,
KĂ€lla: habr.com
