
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 - 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. já pré-instalado, então com outras distribuições é cada vez menos claro - por exemplo, o autor 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 hypervHabilite os serviços VSS, troque e arquivos:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneInstalação do XRDP
repositório 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/archNo 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, 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 , 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.gitVamos 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 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 -0600Compile 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.shO 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_nodelayAdicionar 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" > ~/.xinitrcVamos 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 HvSocketVamos 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.


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

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:

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 . 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:
- Relatórios de bugs no GitHub: ,
Fonte: habr.com
