Blog

WinBoat ou Wine: correr aplicações Windows num servidor Linux com GPU

Instalámos o WinBoat (Windows 11 num contentor Docker) num servidor Linux sem ecrã com uma Intel UHD 770: 16 minutos de instalação, 4 GB de RAM reservados, sem GPU dentro do Windows. Comparação com Wine, Proton e um servidor Windows 11 completo.

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.

O Windows 11 instalado pelo WinBoat no servidor Linux, aberto como ambiente de trabalho completo por RDP: o Windows lista os seus adaptadores gráficos, e nenhum é a GPU Intel (5 segundos).

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

ElementoValor
ServidorLinux (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)
WinBoat0.9.2 (.deb do GitHub), Docker 29.9, FreeRDP 3.15
WindowsWindows 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:

EtapaDuração
Descarga do Windows 11 (ISO de 8,5 GB)1 min 30 s
Instalação automática do Windows14 min 08 s
Total, de “Install” a “Windows has been installed successfully”15 min 52 s
Interface do WinBoat com a lista de aplicações do Windows 11, no ecrã virtual de um servidor Linux
A lista de aplicações do WinBoat no ecrã virtual do servidor: encontrou 94 aplicações e atalhos do Windows.

2. O que custa

RecursoMedido
RAM reservada pelo contentor4,15 GiB, durante todo o tempo em que o Windows corre
CPU durante a instalação1 a 2 núcleos
CPU nos 15 minutos após a instalaçãocerca de 2 núcleos (o Windows termina a configuração)
CPU com o Windows em repousocerca de 0,4 vCPU, picos breves de 1,3
Disco no servidor19 GB: 8,5 GB de ISO guardada na pasta + 11 GB do disco do Windows
Gráfico de barras: RAM em uso, 4,2 GB para o contentor WinBoat com o Windows em repouso, 3,2 GB para todo o servidor Linux a correr o SuperTuxKart com o Proton
Em repouso, o Windows do WinBoat ocupa mais RAM do que todo o nosso servidor Linux a correr um jogo Windows com o Proton.

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
PowerShell no Windows 11 do WinBoat a listar os adaptadores gráficos: Red Hat VirtIO GPU DOD controller e Microsoft Remote Display Adapter
Dentro do Windows do WinBoat, nenhuma GPU Intel: um adaptador virtual só de ecrã e o adaptador do Ambiente de Trabalho Remoto.

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:

Gráfico de barras: SuperTuxKart em 1080p, 95 fps com o Wine, 91 fps com o Proton, 111 fps numa VM Windows 11 com o controlador Intel, e sem GPU no WinBoat
O mesmo jogo Windows na mesma GPU: o Wine, o Proton e um servidor Windows 11 com o controlador Intel usam a GPU; o Windows do WinBoat não tem nenhuma.

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ã:

  1. 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).
  2. No ecrã virtual do sway (Xwayland), o FreeRDP parou depois com um erro X11 BadMatch assim que a janela abriu.
  3. 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.
  4. O ambiente de trabalho completo do Windows por RDP funcionou à primeira (vídeo no início do artigo).
WinBoat num ecrã X virtual com uma janela RemoteApp do Bloco de Notas congelada na imagem de início de sessão do Windows
A janela RemoteApp do Bloco de Notas, aberta pelo WinBoat no Xvfb, congelada na imagem de início de sessão.

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 / ProtonWinBoatOpção Windows 11
O que correo programa Windows, em Linuxum Windows completo num contentorWindows 11 Pro em todo o servidor
GPU para o programasim (OpenGL, Vulkan, DXVK)nãosim (controlador Intel)
SuperTuxKart 1080pcerca de 95 fps (Wine), 85 a 96 fps (Proton)não corrido, sem GPU111 fps
RAM reservadasó a do programa4 GB para o Windowstodo o servidor
Instalaçãominutos16 min, automáticafeita por nós
Ideal parajogos e programas que se sabe que funcionamaplicações de escritório e de negócio que recusam o Winetudo 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 €.