WinBoat ou Wine: correr aplicações Windows num servidor Linux com GPU
Há duas formas de correr um programa Windows em Linux. O Wine (e o Proton, a versão da Valve) traduz as chamadas do Windows para Linux: não há Windows lá dentro, e o programa usa os controladores de GPU do Linux. O WinBoat faz o contrário: corre um Windows 11 real num contentor Docker (o projeto dockur/windows, com QEMU/KVM) e mostra cada aplicação Windows como uma janela Linux através do modo RemoteApp do FreeRDP. Testámos o WinBoat num servidor Linux com GPU sem ecrã e comparámo-lo com o Wine.
Resultados em resumo
- O WinBoat funciona num servidor sem ecrã: a interface é uma aplicação Electron que controlámos num ecrã virtual. Encontrou o Docker, o KVM e o FreeRDP e instalou o Windows 11 Pro sozinho.
- 16 minutos de instalação: 1,5 minutos para descarregar o Windows 11 da Microsoft (8,5 GB), 14 minutos de instalação automática. Depois, 19 GB ocupados no disco do servidor.
- 4,2 GB de RAM reservados enquanto o Windows corre, cerca de 0,4 vCPU com o Windows em repouso.
- Sem GPU no Windows: o Windows só vê um “Red Hat VirtIO GPU DOD controller” e o “Microsoft Remote Display Adapter”, sem aceleração 3D. O WinBoat 0.9.2 não passa a GPU.
- As janelas de aplicação integradas não funcionaram sem ecrã: a ligação RDP precisa de um servidor de som, e depois as janelas RemoteApp falharam (sway) ou ficaram congeladas (Xvfb). O ambiente de trabalho completo do Windows por RDP funcionou.
- O Wine e o Proton mantêm a GPU: o mesmo jogo Windows atingiu cerca de 95 fps com o Wine e 85 a 96 fps com o Proton, na mesma Intel UHD 770.
Configuração do teste
| Elemento | Valor |
|---|---|
| Servidor | Linux (Debian 13), 4 vCPU, 10 GB de RAM, Intel UHD 770 (GPU partilhada), kernel 7.3, KVM disponível dentro do servidor (virtualização aninhada) |
| WinBoat | 0.9.2 (.deb do GitHub), Docker 29.9, FreeRDP 3.15 |
| Windows | Windows 11 Pro, inglês, valores por omissão do WinBoat: 2 núcleos, 4 GB de RAM, disco de 32 GB, imagem dockur/windows:6.05 (800 MB) |
| Ecrã | sway headless (Wayland + Xwayland), depois Xvfb para o teste RemoteApp |
1. Instalar o WinBoat num servidor
O WinBoat verifica os requisitos num assistente: pelo menos 4 GB de RAM, KVM, Docker com Compose v2 e FreeRDP 3. O nosso servidor tinha tudo, incluindo o KVM: o servidor é ele próprio uma máquina virtual, e o WinBoat lança uma segunda dentro dele.
apt install ./winboat-0.9.2-amd64.deb freerdp3-x11
usermod -aG docker,kvm oseuutilizador
O assistente pede uma versão do Windows, uma língua, um nome de utilizador e uma palavra-passe do
Windows, e os recursos a dar ao Windows. Depois de clicar em Install, o WinBoat escreve um
docker-compose.yml, descarrega o Windows 11 da Microsoft e instala-o sem mais perguntas:
| Etapa | Duração |
|---|---|
| Descarga do Windows 11 (ISO de 8,5 GB) | 1 min 30 s |
| Instalação automática do Windows | 14 min 08 s |
| Total, de “Install” a “Windows has been installed successfully” | 15 min 52 s |
2. O que custa
| Recurso | Medido |
|---|---|
| RAM reservada pelo contentor | 4,15 GiB, durante todo o tempo em que o Windows corre |
| CPU durante a instalação | 1 a 2 núcleos |
| CPU nos 15 minutos após a instalação | cerca de 2 núcleos (o Windows termina a configuração) |
| CPU com o Windows em repouso | cerca de 0,4 vCPU, picos breves de 1,3 |
| Disco no servidor | 19 GB: 8,5 GB de ISO guardada na pasta + 11 GB do disco do Windows |
Num servidor com 8 GB de RAM, o Windows do WinBoat fica com metade antes de abrir uma única aplicação. Com o Wine não há nada a reservar: só o programa que corre usa memória.
3. A GPU dentro do Windows
Abrimos o PowerShell no Windows e listámos os adaptadores gráficos:
Name : Red Hat VirtIO GPU DOD controller
Name : Microsoft Remote Display Adapter
O contentor recebe /dev/kvm mas não a GPU, e o controlador “DOD” (só ecrã) não tem 3D. Por isso o
Windows desenha tudo no CPU: bom para uma aplicação de escritório, não para um jogo. Os
programadores do WinBoat anunciam aceleração por GPU para a versão 1.0. Foi por isso que não corremos
o benchmark do SuperTuxKart no WinBoat:
4. Janelas de aplicação num servidor sem ecrã
A principal função do WinBoat é mostrar cada aplicação Windows na sua própria janela Linux (FreeRDP RemoteApp). No nosso servidor sem ecrã:
- O primeiro arranque falhou (
FreeRDP process returned error code '138'): o WinBoat pede som ao FreeRDP através do PulseAudio, e um servidor não tem servidor de som. Arrancar o serviço PulseAudio do PipeWire na sessão resolveu (apt install pipewire-pulse wireplumber). - No ecrã virtual do sway (Xwayland), o FreeRDP parou depois com um erro X11
BadMatchassim que a janela abriu. - No Xvfb com um gestor de janelas simples, as janelas do Bloco de Notas abriram (a lista de janelas mostrava “Untitled - Notepad”), mas o conteúdo ficou congelado na imagem de início de sessão do Windows.
- O ambiente de trabalho completo do Windows por RDP funcionou à primeira (vídeo no início do artigo).
O WinBoat foi feito para um PC de secretária Linux com um ecrã real. Num servidor, use o ambiente de
trabalho completo do Windows (Ambiente de Trabalho Remoto a partir do seu computador, por um túnel SSH
para a porta 47300) ou corra diretamente o dockur/windows com Docker Compose: é o que o WinBoat usa
por baixo.
WinBoat, Wine/Proton ou Windows 11?
| Wine / Proton | WinBoat | Opção Windows 11 | |
|---|---|---|---|
| O que corre | o programa Windows, em Linux | um Windows completo num contentor | Windows 11 Pro em todo o servidor |
| GPU para o programa | sim (OpenGL, Vulkan, DXVK) | não | sim (controlador Intel) |
| SuperTuxKart 1080p | cerca de 95 fps (Wine), 85 a 96 fps (Proton) | não corrido, sem GPU | 111 fps |
| RAM reservada | só a do programa | 4 GB para o Windows | todo o servidor |
| Instalação | minutos | 16 min, automática | feita por nós |
| Ideal para | jogos e programas que se sabe que funcionam | aplicações de escritório e de negócio que recusam o Wine | tudo o resto |
O nosso conselho:
- Jogos: Wine ou Proton, na GPU. Veja Steam e Proton num servidor cloud com GPU e jogos Windows com Wine.
- Uma aplicação Windows de escritório ou de negócio que não funciona com o Wine: o WinBoat (ou o dockur/windows) serve, desde que lhe dê 4 GB de RAM e use o ambiente de trabalho completo do Windows num servidor.
- Tudo o resto, ou um programa Windows que precisa da GPU: a opção Windows 11 (10 €, pagos uma única vez), com o controlador gráfico da Intel.
O WinBoat precisa de KVM dentro do seu servidor (virtualização aninhada). Funcionou no nosso servidor de teste; peça-nos por e-mail para verificar se está ativa no seu. Com 4 GB ocupados pelo Windows, escolha o iGPU Power (4 vCPU, 14 GB de RAM) em vez do iGPU Start (2 vCPU, 8 GB).
Quer o servidor pronto a usar? Peça-o por e-mail ao encomendar (contact@linuxgpu.eu): podemos entregar-lhe o servidor com Wine, WinBoat ou Steam já instalados e configurados do lado do servidor.
Sistemas prontos para jogar desde a entrega. Os sistemas que instalamos por omissão já estão preparados para isto: Debian 13 com um kernel recente (7.3), os controladores de GPU da Intel e o Mesa (OpenGL, Vulkan, codificação de vídeo VA-API), e o Windows 11 (opção) com o controlador gráfico da Intel e o Ambiente de Trabalho Remoto renderizado pela GPU. Nenhum controlador para procurar: instale o seu jogo e o Sunshine, e jogue.
Experimente
Ver os planos: o iGPU Power custa 29,99 € s/ IVA por mês, o iGPU Start 14,99 €.