Habilite el modo de sesión mejorada para los invitados de Arch Linux en Hyper-V

KDPV


Usar máquinas virtuales Linux en Hyper-V es una experiencia un poco menos cómoda que con las máquinas Windows invitadas. La razón de esto es que Hyper-V todavía no estaba originalmente destinado al uso de escritorio; no puede simplemente tomar e instalar un paquete de complementos invitados y obtener una aceleración gráfica viable, portapapeles, directorios compartidos y otros placeres de la vida, como sucede en VirtualBox.


Hyper-V proporciona varios servicios de integración : por ejemplo, los invitados pueden usar el servicio de instantáneas (VSS) del host, los invitados pueden recibir una señal de apagado, los invitados pueden sincronizar la hora del sistema con el host de virtualización, los archivos se pueden intercambiar con la máquina virtual desde el host ( Copy-VMFile en PowerShell). Para algunos sistemas operativos invitados, incluido, por supuesto, Windows, la aplicación Virtual Machine Connection ( vmconnect.exe ) vmconnect.exe modo de sesión mejorada, que funciona a través del protocolo RDP y le permite reenviar dispositivos de disco e impresoras a la máquina virtual, así como usar el común Portapapeles


El modo de sesión mejorado listo para usar se ejecuta en Windows en Hyper-V inmediatamente después de la instalación. Con los invitados en Linux, debe instalar un servidor RDP que admita vsock (un espacio especial de direcciones de red virtual en Linux diseñado para comunicarse con el hipervisor). Si para Ubuntu en la aplicación VMCreate que viene con Hyper-V en las ediciones de escritorio de Windows, hay una plantilla de máquina virtual preparada especial en la que el servidor XRDP RDP que trabaja con vsock ya está preinstalado, entonces, con otras distribuciones, todo es cada vez menos claro, por lo que el autor de esta publicación Resultó incluir ESM en Fedora. Aquí activamos el modo de sesión mejorada para una máquina virtual con Arch Linux.


Instalar servicios de integración


Todo aquí es más o menos simple, solo necesitamos instalar el paquete de hyperv desde el repositorio de la comunidad:


 % sudo pacman -S hyperv 

Active los servicios VSS, metadatos y uso compartido de archivos:


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

Instalar XRDP


El repositorio linux-vm-tools en GitHub proporciona scripts que automatizan la instalación y configuración de XRDP para Arch Linux y Ubuntu. Instale Git, si aún no está instalado, junto con el compilador y otro software para ensamblajes manuales, y luego clone el repositorio:


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

En el momento de escribir este artículo, la última versión de XRDP, que está instalada por el script makepkg.sh propuesto en el repositorio, es 0.9.11, en el que el análisis de vsock:// direcciones está roto, por lo que debe instalar XRDP desde Git y el controlador Xorg desde AUR a mano El parche XRDP ofrecido en AUR también está un poco desactualizado, por lo que tendrá que editar PKGBUILD y el parche manualmente.


Vamos a clonar los repositorios con PKGBUILDs de AUR (generalmente este procedimiento junto con el ensamblaje está automatizado por programas como yay , pero el autor realizó todo este procedimiento en un sistema limpio):


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

Primero instale XRDP. Abra el archivo PKGBUILD con cualquier editor de texto.


Edite los parámetros de ensamblaje. PKGBUILD para construir XRDP desde Git no incluye soporte vsock durante el ensamblaje, así que habilítelo usted mismo:


  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 } 

El parche arch-config.diff , que arch-config.diff unidades y los scripts para ejecutar XRDP bajo la ruta a los archivos utilizados en Arch Linux, contiene un parche para el instfiles/xrdp.sh , que se eliminó del paquete XRDP en el momento de la escritura, por lo que el parche tendrá 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 -0600 

Construiremos e instalaremos el paquete con el comando % makepkg --skipchecksums -si (el --skipchecksums necesario para deshabilitar la comprobación de las sumas de verificación de los archivos de origen, ya que las editamos manualmente).


xorgxrdp-devel-git y luego simplemente recopile el paquete con el % makepkg -si .


Vaya al directorio linux-vm-tools/arch y ejecute el script install-config.sh que configura las configuraciones XRDP, PolicyKit y PAM:


 % sudo ./install-config.sh 

El script establece la configuración obsoleta use_vsock , que se ha ignorado desde la versión 0.9.11, por lo que editaremos el archivo 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_nodelay 

Agregue al ~/.xinitrc lanzamiento de nuestro entorno de escritorio / administrador de ventanas preferido, que se ejecutará cuando se inicie el servidor X:


 % echo "exec i3" > ~/.xinitrc 

Apaga la máquina virtual. Activamos el transporte vsock para la máquina virtual ejecutando el siguiente comando en PowerShell como administrador:


 PS Admin > Set-VM -VMName _ -EnhancedSessionTransportType HvSocket 

Encienda la máquina virtual nuevamente.


Conexión


Tan pronto como el servicio XRDP se inicia después de que se inicia el sistema, la aplicación vmconnect determina esto y el elemento de menú Ver -> Sesión mejorada está disponible. Al elegir este elemento, se nos pedirá que configuremos la resolución de la pantalla, y en la pestaña Recursos locales del cuadro de diálogo que se abre, será posible seleccionar los dispositivos que se reenvían dentro de la sesión RDP.


Diálogo de resolución de pantalla
Diálogo de selección de recursos locales


Conectar Vea la ventana de inicio de sesión XRDP:


Ventana de inicio de sesión XRDP


Ingrese su nombre de usuario y contraseña.


Uso


El beneficio de estas manipulaciones es notable: la sesión RDP es mucho más receptiva que cuando se trabaja con una pantalla virtual sin una sesión mejorada. Las máquinas virtuales lanzadas dentro a través de RDP están disponibles en el directorio ${HOME}/shared-drives :


El contenido de la unidad C arrojada dentro de la VM


El portapapeles está funcionando bien. No puede reenviar impresoras adentro, no solo no es compatible, sino que también interrumpe el reenvío de disco . El sonido tampoco funciona, pero el autor no lo necesitaba. Para capturar métodos abreviados de teclado como Alt + Tab, debe implementar vmconnect en pantalla completa.


Si por alguna razón desea utilizar el cliente RDP integrado en Windows en lugar de la aplicación vmconnect o, por ejemplo, conectarse a esta máquina desde otra máquina, deberá cambiar el archivo de port /etc/xrdp/xrdp.ini a tcp://:3389 . Si la máquina virtual está conectada al Switch predeterminado y recibe la configuración de red a través de DHCP, puede conectarse desde el host en _.mshome.net . Solo puede ingresar TTY desde la aplicación vmconnect desactivando el Modo mejorado.


Fuentes utilizadas :


  1. Hyper-V - Arch Wiki
  2. Bagreport en GitHub: 1 , 2

Source: https://habr.com/ru/post/482372/


All Articles