12 pontos por GN⁺ 2023-12-31 | 2 comentários | Compartilhar no WhatsApp

Por que as VMs no Apple Silicon são tão diferentes?

  • Rodar máquinas virtuais (VMs) do macOS em Macs com Apple Silicon pode não parecer popular, mas isso é, há muito tempo, um dos objetivos importantes da Apple.
  • Ao usar software de virtualização em Macs da série M, dá para perceber o quanto isso é diferente de virtualizar o macOS e outros sistemas operacionais em Macs com Intel.
  • O texto explica por que a virtualização é importante e como ela mudou tanto.

Os três pilares do Apple Silicon

  • Na WWDC de junho de 2020, Craig Federighi apresentou os três pilares do Apple Silicon: apps universais executados em ambas as arquiteturas, Rosetta 2 traduzindo código Intel para instruções Arm, e virtualização.
  • Antes mesmo de a Apple lançar o Developer Transition Kit, Andreas Wendker demonstrou uma versão de pré-lançamento do Parallels Desktop executando Linux como guest, mas sem mencionar o Windows.

O início da virtualização

  • No começo, a virtualização era dividida entre hipervisores do tipo 1, executados diretamente no hardware, e do tipo 2 (hosted), em que o sistema operacional principal roda sobre o hardware e o hipervisor é executado sobre ele.
  • Em computadores desktop, produtos de virtualização do tipo 2 como VMware Fusion, Parallels Desktop e Oracle VirtualBox são mais comuns.

Suporte de hardware e virtualização

  • Quando há suporte de hardware para hipervisores, fica mais fácil executar sistemas operacionais guest sem modificações.
  • É possível usar o conjunto de recursos VT-x da Intel ou a virtualização AArch64 das CPUs Arm.
  • Problemas de suporte a dispositivos podem ser resolvidos pelo framework de virtualização ou tratados pelo software de virtualização.

O que torna os chips Apple Silicon únicos

  • Todos os dispositivos de hardware dos chips Apple Silicon são diferentes dos equivalentes nos Macs com Intel.
  • Mesmo que a Apple quisesse documentar tudo completamente para uso externo, o esforço de engenharia necessário para o suporte aos dispositivos dos Macs com Intel teria sido caro demais para terceiros.
  • Por isso, não era viável esperar que se começasse por um hipervisor para então construir um software completo de virtualização, e também seria difícil atingir o alto desempenho esperado pela Apple e pelos usuários.

Drivers Virtio e virtualização

  • Em vez disso, a Apple desenvolveu drivers Virtio de forma integrada ao macOS para oferecer suporte a dispositivos.
  • Virtio é um padrão que fornece uma camada de abstração para dispositivos de I/O: quando o sistema operacional guest tenta abrir um arquivo, ele o encaminha para um paradriver frontend de armazenamento Virtio, que então interage com o dispositivo de armazenamento por meio de um driver backend Virtio.
  • Criar um app de virtualização consiste em configurar e abrir os dispositivos Virtio necessários, deixando guest, Virtio e host processarem o trabalho.

A escolha da Apple pelo Virtio

  • A escolha da Apple pelo Virtio foi influenciada pelo fato de o Linux já ter bom suporte a Virtio, embora o macOS não tivesse esse suporte na época.
  • Engenheiros da Apple construíram o suporte a Virtio no macOS ao longo de alguns anos antes do lançamento do Monterey.
  • A implementação de Virtio no macOS inclui extensões que suportam teclado e dispositivos apontadores, área de transferência compartilhada ('Spice'), gráficos de alto desempenho por meio de suporte a Metal e GPU.

As vantagens do modelo Virtio

  • No modelo Virtio, é o sistema operacional que fornece o suporte, o que reduz os custos de desenvolvimento para fornecedores como VMware e Parallels, ao mesmo tempo em que diminui o valor comercial de seus produtos.
  • A Apple decide quais hardwares e recursos a virtualização oferece suporte no Apple Silicon.

O futuro da virtualização e sua flexibilidade

  • Executar versões anteriores do macOS em VMs permite que usuários continuem rodando apps exclusivos para Intel mesmo depois que o suporte ao Rosetta 2 for descontinuado no macOS atual.
  • Também é possível executar software incompatível com a versão mínima do macOS em Macs com Apple Silicon.
  • Usando Linux ou macOS, desenvolvedores podem distribuir pacotes leves de VM como o Docker.

Opinião do GN⁺

  • A virtualização em Macs com Apple Silicon adota uma abordagem diferente da virtualização tradicional baseada em Intel, e isso parece fazer parte da estratégia da Apple de reforçar a integração entre hardware e software.
  • A virtualização via Virtio oferece aos desenvolvedores uma solução econômica e permite otimização de desempenho sob o controle da Apple.
  • A evolução da tecnologia de virtualização pode, no longo prazo, abrir possibilidades para oferecer ambientes de software variados aos usuários de Macs com Apple Silicon, sendo especialmente útil para dar suporte a aplicações e sistemas mais antigos.

2 comentários

 
molla 2024-01-02

A parte sobre o futuro da virtualização parece meio estranha.
Só porque a virtualização é possível não significa automaticamente que seja possível manter compatibilidade com os sistemas existentes. No fim, em algum ponto, é preciso converter instruções x86 em instruções arm.
Se isso não for suportado por HW ou pelo OS (Rosetta?), no fim não resta alternativa além de fazer emulação no nível da VM, e nesse caso a perda de desempenho é muito grande.
Mesmo agora, dá para instalar Linux para x86 em Macs com Apple Silicon, mas o desempenho é absurdamente lento. (Acho que foi no ano passado que precisei de um binário para x86, tentei instalar para usar em build e desisti quase imediatamente.)

 
GN⁺ 2023-12-31
Comentários do Hacker News
  • O Windows depende de muitos recursos baseados no Hyper-V e, quando ele é ativado, o Windows não inicializa diretamente; em vez disso, o Hyper-V é iniciado e o sistema Windows principal roda em uma VM privilegiada.
  • Há quem esteja procurando informações sobre o estado atual da virtualização de Windows/Linux x86-64 em Apple Silicon e lamenta que o artigo não mencione aplicações importantes relacionadas a isso.
  • Há quem gostaria que todos os usuários de sistemas operacionais fizessem login em VMs isoladas do próprio sistema, para que os usuários possam manter a posse de seus computadores Apple.
  • O macOS só pode executar duas VMs ao mesmo tempo, então, se você pretende usar um Mac mini como servidor de build, é melhor comprar o modelo mais barato.
  • Houve a intenção de usar um MacOS VM com Parallels para desenvolvimento, mas há limitações de uso porque não é possível fazer login com o Apple ID.
  • Há confusão sobre por que o Docker roda rapidamente com desempenho quase nativo na plataforma Linux/amd64, enquanto uma VM x86 no UTM é muito mais lenta.
  • Há uma pergunta sobre o andamento da camada virtio para Windows, quem está desenvolvendo isso e se há chance de funcionar em um futuro próximo.
  • Há uma menção aos drivers escritos por Rusty Russell; como ele compartilha insights profundos sobre desenvolvimento de software, recomenda-se segui-lo no Twitter.
  • Há dúvidas sobre se todos os VMs comerciais de desktop (VMWare Fusion/Parallels/UTM/Vimy) agora usam o modelo virtio e se, em teoria, o Windows ARM64 deveria se comportar de forma parecida em todos eles.
  • Houve uma tentativa por cerca de um ano de encontrar uma forma de criar uma VM no Qemu com um único comando em um chip Apple Silicon M2, mas, embora executar Alpine Linux + Sway WM no Qemu em macOS ou AsahiLinux seja relativamente simples em x86-64, isso tem sido difícil.