
Usando máquinas virtuais en Linux en Hyper-V, a experiencia lista para usar é lixeiramente menos cómoda que con os programas de invitado Windows-máquinas. A razón disto é que Hyper-V non foi deseñado orixinalmente para uso de escritorio; non podes simplemente instalar o paquete Guest Additions e obter aceleración gráfica, portapapeis, directorios compartidos e outras vantaxes que funcionen, como podes facer con VirtualBox.
Hyper-V proporciona - polo tanto, os hóspedes poden usar o servizo de copia instantánea (VSS) do anfitrión, os hóspedes poden enviar un sinal de apagado, os hóspedes poden sincronizar a hora do sistema co host de virtualización, os ficheiros pódense intercambiar coa máquina virtual desde o host (Copy-VMFile en PowerShell). Para algúns sistemas operativos invitados, que inclúen, por suposto, Windows, na aplicación Conexión á máquina virtual (vmconnect.exe) Está dispoñible o modo de sesión mellorado, que funciona mediante o protocolo RDP e permite reenviar dispositivos de disco e impresoras á máquina virtual, así como utilizar o portapapeis compartido.
O modo de sesión mellorado funciona de inmediato Windows en Hyper-V inmediatamente despois da instalación. Con invitados activados Linux precisa instalar un servidor RDP que admita vsock (un espazo de enderezos de rede virtual especial en Linux, deseñado para comunicarse co hipervisor). Se para Ubuntu na aplicación VMCreate que vén con Hyper-V nas edicións de escritorio Windows, hai un modelo de máquina virtual preparado especial no que un servidor RDP traballa con vsock xa preinstalado, despois con outras distribucións é cada vez menos claro, por exemplo, o autor Conseguimos activar ESM en Fedora. Aquí tamén activamos o Modo de sesión mellorado para a máquina virtual Arch. Linux.
Instalación de servizos de integración
Aquí todo é máis ou menos sinxelo, só necesitamos instalar o paquete hyperv do repositorio da comunidade:
% sudo pacman -S hypervActivar os servizos VSS, intercambiar e ficheiros:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneInstalación XRDP
repositorio proporciona scripts en GitHub que automatizan o proceso de instalación e configuración de XRDP para Arch Linux и UbuntuInstalemos Git, se aínda non está instalado, xunto cun compilador e outro software para compilacións manuais, e despois clonemos o repositorio:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archNo momento de escribir este artigo, a versión máis recente de XRDP, que está instalada polo script makepkg.shproposto no repositorio é 0.9.11, vsock://-enderezos, polo que tes que instalar XRDP desde Git e o controlador Xorg para iso desde AUR manualmente. O parche para XRDP ofrecido no AUR tamén está lixeiramente desactualizado, polo que terás que editar o PKGBUILD e o parche manualmente.
Clonamos os repositorios con PKGBUILD do AUR (normalmente este procedemento, xunto coa montaxe, está automatizado por programas como , pero o autor fixo todo este procedemento nun sistema limpo):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitImos instalar o propio XRDP primeiro. Imos abrir o ficheiro PKGBUILD calquera editor de texto.
Imos editar os parámetros de compilación. O PKGBUILD para construír XRDP desde Git non inclúe compatibilidade con vsock na compilación, así que habilitémolo nós mesmos:
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
}Nun parche arch-config.diff, unidades gobernantes e scripts de inicio de XRDP nas rutas de ficheiros empregadas en Arch Linux, contén un parche para o script instfiles/xrdp.sh, que no momento de escribir este artigo da distribución XRDP, polo que o parche terá que editarse manualmente:
[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 -0600Construír e instalar o paquete co comando % makepkg --skipchecksums -si (clave --skipchecksums é necesario para desactivar a verificación da suma de verificación dos ficheiros fonte, xa que os editamos manualmente).
Imos ao directorio xorgxrdp-devel-git, despois de que simplemente construímos o paquete co comando % makepkg -si.
Imos ao directorio linux-vm-tools/arch e executa o script install-config.sh, que establece a configuración de XRDP, PolicyKit e PAM:
% sudo ./install-config.shO script instala a configuración obsoleta use_vsock, que se ignora desde a versión 0.9.11, así que imos editar o ficheiro de configuración /etc/xrdp/xrdp.ini manualmente:
; 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_nodelayEngadir ao ficheiro ~/.xinitrc iniciando o teu xestor de ventás/entorno de escritorio preferido, que se executará cando se inicie o servidor X:
% echo "exec i3" > ~/.xinitrcImos apagar a máquina virtual. Habilite o transporte vsock para a máquina virtual executando o seguinte comando en PowerShell como administrador:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketAcendemos de novo a máquina virtual.
Reprodución
En canto se inicie o servizo XRDP despois de que se inicie o sistema, a aplicación vmconnect determinará isto e o elemento do menú estará dispoñible. vista -> Sesión mellorada. Cando seleccione este elemento, solicitarase que configuremos a resolución da pantalla e na pestana Recursos locais no diálogo que se abre, pode seleccionar os dispositivos reenviados dentro da sesión RDP.


Imos conectar. Veremos a xanela de inicio de sesión XRDP:

Introduza o seu nome de usuario e contrasinal.
Usar
O beneficio destas manipulacións é perceptible: a sesión RDP funciona moito máis sensible que cando se traballa cunha pantalla virtual sen Sesión mellorada. Os discos reenviados dentro da máquina virtual a través de RDP están dispoñibles no directorio ${HOME}/shared-drives:

O portapapeis funciona ben. Non podes tirar impresoras dentro, isto non só non é compatible, senón tamén . O son tampouco funciona, pero o autor non o necesitaba. Para capturar atallos de teclado como Alt + Tab, cómpre expandir vmconnect a pantalla completa.
Se por calquera razón quere usar a aplicación vmconnect integrada en lugar da Windows cliente RDP ou, por exemplo, conectarse a esta máquina desde outra máquina, terá que cambiar o ficheiro /etc/xrdp/xrdp.ini port en tcp://:3389. Se a máquina virtual está conectada ao interruptor predeterminado e recibe a configuración de rede a través de DHCP, pode conectarse a ela desde o host en название_машины.mshome.net. Só podes iniciar sesión en TTY desde a aplicación vmconnect desactivando o modo mellorado.
Fontes utilizadas:
- Informes de erros en GitHub: ,
Fonte: www.habr.com
