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

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

El uso de máquinas virtuales Linux en Hyper-V listas para usar es algo menos cómodo que con máquinas Windows invitadas. La razón de esto es que Hyper-V no estaba diseñado originalmente para uso de escritorio; no puede simplemente seguir adelante e instalar el paquete de adiciones de invitados y obtener aceleración de gráficos viable, portapapeles, directorios compartidos y otras alegrías de la vida, como sucede en VirtualBox.

Hyper-V en sí proporciona múltiples servicios de integración - por lo tanto, los invitados pueden usar el servicio de instantáneas (VSS) del host, los invitados pueden enviar 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, en la aplicación Conexión de máquina virtual (vmconnect.exe) Está disponible el modo de sesión mejorado, 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 portapapeles compartido.

El modo de sesión mejorado funciona de forma inmediata en Windows en Hyper-V inmediatamente después de la instalación. Con invitados en Linux, debe instalar un servidor RDP que admita vsock (un espacio de direcciones de red virtual especial en Linux diseñado para comunicarse con el hipervisor). Si es para Ubuntu, la aplicación VMCreate que viene con Hyper-V en las ediciones de escritorio de Windows tiene una plantilla de máquina virtual especial preparada en la que se ejecuta un servidor RDP con vsock XRDP ya preinstalado, luego con otras distribuciones es cada vez menos claro, por ejemplo, el autor esta publicación resultó habilitar ESM en Fedora. Aquí también habilitamos el modo de sesión mejorado para la máquina virtual Arch Linux.

Instalación de servicios de integración

Aquí todo es más o menos simple, solo necesitamos instalar el paquete hyperv del repositorio de la comunidad:

% sudo pacman -S hyperv

Habilitar servicios VSS, intercambiar metadatos y archivos:

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

Instalación de XRDP

repositorio linux-vm-herramientas en GitHub proporciona scripts que automatizan el proceso de 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 compilaciones 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 versión más reciente de XRDP, que está instalada por el script makepkg.shpropuesto en el repositorio es 0.9.11, en el que se rompe el análisis vsock://-direcciones, por lo que debe instalar XRDP desde Git y el controlador Xorg para ello desde AUR manualmente. El parche para XRDP que se ofrece en AUR también está un poco desactualizado, por lo que tendrá que editar el PKGBUILD y el parche manualmente.

Clonamos los repositorios con PKGBUILDs del AUR (normalmente este procedimiento, junto con el montaje, está automatizado por programas como Hurra, pero el autor hizo 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 instalemos XRDP. Abramos el archivo PKGBUILD cualquier editor de texto.

Editemos los parámetros de compilación. El PKGBUILD para compilar XRDP desde Git no incluye compatibilidad con vsock en la compilación, así que habilitémoslo nosotros mismos:

 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
 }

en un parche arch-config.diff, que edita unidades y secuencias de comandos de inicio XRDP en las rutas de los archivos utilizados en Arch Linux, contiene, entre otras cosas, un parche para la secuencia de comandos instfiles/xrdp.sh, que al momento de escribir fue borrado de la distribución XRDP, por lo que habrá que editar el parche 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

Cree e instale el paquete con el comando % makepkg --skipchecksums -si (llave --skipchecksums es necesario para deshabilitar la verificación de la suma de verificación de los archivos fuente, ya que los editamos manualmente).

vamos al directorio xorgxrdp-devel-git, después de lo cual simplemente construimos el paquete con el comando % makepkg -si.

vamos al directorio linux-vm-tools/arch y ejecutar el script install-config.sh, que establece la configuración de XRDP, PolicyKit y PAM:

% sudo ./install-config.sh

El script instala la configuración heredada use_vsock, que se ignora desde la versión 0.9.11, así que editemos el archivo de configuración /etc/xrdp/xrdp.ini a mano:

 ;   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

Agregar al archivo ~/.xinitrc iniciando su administrador de ventanas/entorno de escritorio preferido, que se ejecutará cuando se inicie el servidor X:

% echo "exec i3" > ~/.xinitrc

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

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

Vamos a encender la máquina virtual de nuevo.

Подключение

Tan pronto como se inicie el servicio XRDP después de que se inicie el sistema, la aplicación vmconnect lo determinará y el elemento del menú estará disponible. Ver -> sesión mejorada. Cuando seleccione este elemento, se le pedirá que configure la resolución de la pantalla y en la pestaña Recursos locales en el cuadro de diálogo que se abre, puede seleccionar los dispositivos reenviados dentro de la sesión RDP.

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

Conectémonos. Veremos la ventana de inicio de sesión de XRDP:

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

Introduzca su nombre de usuario y contraseña.

el uso de

El beneficio de estas manipulaciones es notable: la sesión RDP funciona con mucha más capacidad de respuesta que cuando se trabaja con una pantalla virtual sin sesión mejorada. Los discos reenviados dentro de la VM a través de RDP están disponibles en el directorio ${HOME}/shared-drives:

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

El portapapeles funciona bien. No puede arrojar impresoras adentro, esto no solo no es compatible, sino que también interrumpe el reenvío del disco. El sonido tampoco funciona, pero el autor no lo necesitaba. Para capturar atajos de teclado como Alt + Tabulador, debe expandir vmconnect a 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 /etc/xrdp/xrdp.ini port en tcp://:3389. Si la máquina virtual está conectada al conmutador predeterminado y recibe la configuración de red a través de DHCP, puede conectarse a ella desde el host en название_машины.mshome.net. Solo puede iniciar sesión en TTY desde la aplicación vmconnect desactivando el modo mejorado.

Fuentes utilizadas:

  1. Wiki Hyper-V Arch
  2. Informes de errores en GitHub: 1, 2

Fuente: habr.com

Añadir un comentario