Habilitando o Modo de Sessão Aprimorado para Arch Linux-convidados no Hyper-V

Habilitando o Modo de Sessão Aprimorado para Arch Linux-convidados no Hyper-V

Utilizando máquinas virtuais em Linux Em Hyper-V, a experiência inicial é um pouco menos confortável do que com máquinas virtuais convidadas. Windows-máquinas. O motivo disso é que o Hyper-V não foi originalmente projetado para uso em desktops; você não pode simplesmente instalar o pacote de Adições de Convidado e obter aceleração gráfica, área de transferência, diretórios compartilhados e outras vantagens funcionando, como acontece com o VirtualBox.

O próprio Hyper-V fornece vários serviços de integração - assim, os convidados podem usar o serviço de cópia de sombra (VSS) do host, os convidados podem enviar um sinal de desligamento, os convidados podem sincronizar a hora do sistema com o host de virtualização, os arquivos podem ser trocados com a máquina virtual do host (Copy-VMFile (no PowerShell). Para alguns sistemas operacionais convidados, o que obviamente inclui Windows, no aplicativo Conexão de Máquina Virtual (vmconnect.exe) Está disponível o Modo de sessão aprimorado, que funciona por meio do protocolo RDP e permite encaminhar dispositivos de disco e impressoras para a máquina virtual, além de usar a área de transferência compartilhada.

O Modo de Sessão Aprimorado funciona imediatamente após a instalação. Windows no Hyper-V imediatamente após a instalação. Com convidados em Linux Você precisa instalar um servidor RDP que suporte vsock (um espaço de endereço de rede virtual especial em Linux, projetado para se comunicar com o hipervisor). Se para Ubuntu no aplicativo VMCreate que acompanha o Hyper-V nas edições para desktop. WindowsExiste um modelo de máquina virtual especialmente preparado no qual um servidor RDP funciona com o vsock. XRDP já pré-instalado, então com outras distribuições é cada vez menos claro - por exemplo, o autor esta postagem Conseguimos habilitar o ESM no Fedora. Aqui, também ativamos o Modo de Sessão Aprimorado para a máquina virtual Arch. Linux.

Instalando serviços de integração

Tudo é mais ou menos simples aqui, só precisamos instalar o pacote hyperv do repositório da comunidade:

% sudo pacman -S hyperv

Habilite os serviços VSS, troque metadados e arquivos:

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

Instalação do XRDP

repositório ferramentas linux-vm O GitHub fornece scripts que automatizam o processo de instalação e configuração do XRDP para Arch. Linux и UbuntuVamos instalar o Git, caso ainda não esteja instalado, juntamente com um compilador e outros softwares para compilações manuais, e então clonar o repositório:

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

No momento da redação deste artigo, a versão mais recente do XRDP, que é instalada pelo script makepkg.shproposto no repositório é 0.9.11, em que a análise é quebrada vsock://-addresses, então você tem que instalar o XRDP do Git e o driver Xorg para ele do AUR manualmente. O patch para XRDP oferecido no AUR também está um pouco desatualizado, então você terá que editar o PKGBUILD e o patch manualmente.

Clonamos os repositórios com PKGBUILDs do AUR (geralmente esse procedimento, junto com a montagem, é automatizado por programas como yay, mas o autor fez todo esse procedimento em um sistema limpo):

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

Vamos instalar o próprio XRDP primeiro. Vamos abrir o arquivo PKGBUILD qualquer editor de texto.

Vamos editar os parâmetros de construção. O PKGBUILD para construir XRDP a partir do Git não inclui suporte a vsock na construção, então vamos habilitá-lo 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
 }

Em um patch arch-config.diff, unidades governantes e scripts de inicialização XRDP nos caminhos de arquivo usados ​​no Arch Linux, contém um patch para o script instfiles/xrdp.sh, que na hora de escrever foi deletado da distribuição XRDP, então o patch terá que ser editado 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

Compile e instale o pacote com o comando % makepkg --skipchecksums -si (chave --skipchecksums é necessário para desativar a verificação da soma de verificação dos arquivos de origem, pois os editamos manualmente).

Vamos ao diretório xorgxrdp-devel-git, após o qual simplesmente construímos o pacote com o comando % makepkg -si.

Vamos ao diretório linux-vm-tools/arch e execute o script install-config.sh, que define as configurações de XRDP, PolicyKit e PAM:

% sudo ./install-config.sh

O script instala a configuração herdada use_vsock, que é ignorado desde a versão 0.9.11, então vamos editar o arquivo de configuração /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

Adicionar ao arquivo ~/.xinitrc iniciando seu gerenciador de janelas/ambiente de área de trabalho preferido, que será executado quando o servidor X for iniciado:

% echo "exec i3" > ~/.xinitrc

Vamos desligar a máquina virtual. Habilite o transporte vsock para a VM executando o seguinte comando no PowerShell como administrador:

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

Vamos ligar a máquina virtual novamente.

Подключение

Assim que o serviço XRDP for iniciado após a inicialização do sistema, o aplicativo vmconnect determinará isso e o item de menu ficará disponível. Consultar -> Sessão aprimorada. Ao selecionar este item, seremos solicitados a definir a resolução da tela e, na guia Recursos locais na caixa de diálogo que se abre, você pode selecionar os dispositivos encaminhados dentro da sessão RDP.

Habilitando o Modo de Sessão Aprimorado para Arch Linux-convidados no Hyper-V
Habilitando o Modo de Sessão Aprimorado para Arch Linux-convidados no Hyper-V

Vamos nos conectar. Veremos a janela de login do XRDP:

Habilitando o Modo de Sessão Aprimorado para Arch Linux-convidados no Hyper-V

Digite seu nome de usuário e senha.

Usar

O lucro dessas manipulações é perceptível: a sessão RDP funciona muito mais responsiva do que ao trabalhar com uma tela virtual sem sessão aprimorada. Os discos encaminhados dentro da VM via RDP ficam disponíveis no diretório ${HOME}/shared-drives:

Habilitando o Modo de Sessão Aprimorado para Arch Linux-convidados no Hyper-V

A área de transferência está funcionando bem. Você não pode jogar impressoras dentro, isso não só não é suportado, mas também quebra o encaminhamento de disco. O som também não funciona, mas o autor não precisava. Para capturar atalhos de teclado como Alt + Tab, você precisa expandir vmconnect para tela cheia.

Se por algum motivo você quiser usar o aplicativo vmconnect integrado em vez do Windows Se você precisar de um cliente RDP ou, por exemplo, se conectar a esta máquina a partir de outra, será necessário alterar o arquivo. /etc/xrdp/xrdp.ini port em tcp://:3389. Se a máquina virtual estiver conectada ao switch padrão e receber configurações de rede via DHCP, você poderá se conectar a ela a partir do host em название_машины.mshome.net. Você só pode fazer login no TTY a partir do aplicativo vmconnect desativando o Modo Avançado.

Fontes utilizadas:

  1. Wiki do Hyper-V Arch
  2. Relatórios de bugs no GitHub: 1, 2

Fonte: habr.com

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster