
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 vsock já está 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.


Conectar Veja a 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
:

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 :
- Hyper-V - Arch Wiki
- Bagreport no GitHub: 1 , 2