Activación do modo de sesión mellorado para Arch Linux-convidados en Hyper-V

Activación do modo de sesión mellorado para Arch Linux-convidados en Hyper-V

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 múltiples servizos de integración - 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 XRDP xa preinstalado, despois con outras distribucións é cada vez menos claro, por exemplo, o autor esta publicación 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 hyperv

Activar os servizos VSS, intercambiar metadatos e ficheiros:

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

Instalación XRDP

repositorio linux-vm-tools 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/arch

No 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, no que se rompe a análise 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 xa, 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.git

Imos 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 foi eliminado 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 -0600

Construí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.sh

O 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_nodelay

Engadir 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" > ~/.xinitrc

Imos 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 HvSocket

Acendemos 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.

Activación do modo de sesión mellorado para Arch Linux-convidados en Hyper-V
Activación do modo de sesión mellorado para Arch Linux-convidados en Hyper-V

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

Activación do modo de sesión mellorado para Arch Linux-convidados en Hyper-V

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:

Activación do modo de sesión mellorado para Arch Linux-convidados en Hyper-V

O portapapeis funciona ben. Non podes tirar impresoras dentro, isto non só non é compatible, senón tamén rompe o reenvío do disco. 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:

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

Fonte: www.habr.com

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster