Habilitar o Modo de Sessão Aprimorado para Convidados do Arch Linux no Hyper-V

KDPV


O uso imediato de máquinas virtuais Linux no Hyper-V é uma experiência um pouco menos confortável do que com máquinas Windows convidadas. A razão para isso é que o Hyper-V ainda não era originalmente destinado ao uso em desktop; você não pode simplesmente instalar e instalar um pacote de complementos para convidados e obter uma aceleração gráfica viável, área de transferência, diretórios compartilhados e outros prazeres da vida, como acontece no VirtualBox.


O próprio Hyper-V fornece vários serviços de integração - por exemplo, os convidados podem usar o serviço de cópia de sombra (VSS) do host, os hóspedes podem receber 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 in PowerShell). Para alguns sistemas operacionais convidados, incluindo, é claro, o Windows, o aplicativo Virtual Machine Connection ( vmconnect.exe ) vmconnect.exe 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 os recursos comuns. área de transferência.


O Modo de Sessão Avançado pronto para uso é executado no Windows no Hyper-V imediatamente após a instalação. Com os convidados no Linux, você precisa instalar um servidor RDP que suporte vsock (um espaço de endereço de rede virtual especial no Linux projetado para se comunicar com o hipervisor). Se para o Ubuntu no aplicativo VMCreate que vem com o Hyper-V nas edições de desktop do Windows, existe um modelo de máquina virtual preparado especial no qual o servidor XRDP RDP que trabalha com vsockestá pré-instalado e, em outras distribuições, tudo fica cada vez menos claro - então, o autor desta postagem Acabou por incluir o ESM no Fedora. Aqui, ativamos o Modo de sessão aprimorada para uma máquina virtual com o Arch Linux.


Instalar o Integration Services


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


 % sudo pacman -S hyperv 

Ative os serviços VSS, metadados e compartilhamento de arquivos:


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

Instale o XRDP


O repositório linux-vm-tools no GitHub fornece scripts que automatizam a instalação e configuração do XRDP para Arch Linux e Ubuntu. Instale o Git, se ainda não estiver instalado, junto com o compilador e outro software para montagens manuais e, em seguida, clone 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, instalada pelo script makepkg.sh proposto no repositório, é 0.9.11, na qual a análise dos endereços vsock:// está interrompida, portanto, você deve instalar o XRDP do Git e o driver do Xorg do AUR do AUR à mão. O patch XRDP oferecido no AUR também está um pouco desatualizado, portanto você terá que editar o PKGBUILD e o patch manualmente.


Clonamos os repositórios com PKGBUILDs do AUR (normalmente esse procedimento, juntamente com o assembly, é 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 

Primeiro instale o próprio XRDP. Abra o arquivo PKGBUILD com qualquer editor de texto.


Edite os parâmetros de montagem. O PKGBUILD para a construção do XRDP a partir do Git não inclui o suporte ao vsock durante a montagem, portanto, habilite-o:


  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 } 

O patch arch-config.diff , que arch-config.diff unidades e scripts para executar o XRDP no caminho para os arquivos usados ​​no Arch Linux, contém um patch para o instfiles/xrdp.sh , que foi removido do pacote XRDP no momento da gravação, portanto 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 

Vamos construir e instalar o pacote com o comando % makepkg --skipchecksums -si (a --skipchecksums necessária para desativar a verificação das somas de verificação dos arquivos de origem, desde que as --skipchecksums manualmente).


xorgxrdp-devel-git e colete o pacote com o % makepkg -si .


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


 % sudo ./install-config.sh 

O script define a configuração obsoleta use_vsock , que foi ignorada desde a versão 0.9.11, portanto, editaremos 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 

Adicione ao ~/.xinitrc lançamento do nosso ambiente de desktop / gerenciador de janelas preferido, que será executado quando o servidor X iniciar:


 % echo "exec i3" > ~/.xinitrc 

Desligue a máquina virtual. Ativamos o transporte vsock para a máquina virtual executando o seguinte comando no PowerShell como administrador:


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

Ligue a máquina virtual novamente.


Ligação


Assim que o serviço XRDP é iniciado após o sistema ser iniciado, o aplicativo vmconnect determina isso e o item de menu Exibir -> Sessão aprimorada fica disponível. Ao escolher este item, será solicitado que você defina a resolução da tela e, na guia Recursos locais da caixa de diálogo exibida, será possível selecionar os dispositivos que serão encaminhados dentro da sessão RDP.


Diálogo de resolução de tela
Caixa de diálogo Seleção de Recursos Locais


Conectar Veja a janela de login do XRDP:


Janela de Login do XRDP


Digite seu nome de usuário e senha.


Use


O lucro dessas manipulações é notável: a sessão RDP é muito mais responsiva do que quando se trabalha com um monitor virtual sem uma Sessão Aprimorada. As VMs lançadas dentro do RDP estão disponíveis no diretório ${HOME}/shared-drives :


O conteúdo da unidade C lançada dentro da VM


A área de transferência está funcionando bem. Você não pode encaminhar impressoras para dentro, além de não ser suportado, mas também interrompe o encaminhamento de disco . O som também não funciona, mas o autor não precisava dele. Para capturar atalhos de teclado como Alt + Tab, é necessário implantar o vmconnect em tela cheia.


Se, por algum motivo, houver um desejo de usar o cliente RDP embutido no Windows em vez do aplicativo vmconnect ou, por exemplo, conectar-se a esta máquina a partir de outra máquina, será necessário alterar o arquivo de port /etc/xrdp/xrdp.ini para tcp://:3389 . Se a máquina virtual estiver conectada ao switch padrão e receber configurações de rede via DHCP, você poderá conectar-se a ela pelo host em _.mshome.net . Você só pode inserir TTY no aplicativo vmconnect desativando o Modo avançado.


Fontes utilizadas :


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

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


All Articles