3 pontos por GN⁺ 2023-09-02 | 1 comentários | Compartilhar no WhatsApp
  • O UTM é um emulador de sistemas e host de máquinas virtuais que funciona no iOS e no macOS; baseado no QEMU, permite executar Windows, Linux e outros sistemas em Mac, iPhone e iPad
  • Com emulação de sistema completo usando QEMU, lida com MMU, dispositivos etc., e oferece suporte a mais de 30 processadores, incluindo x86_64, ARM64 e RISC-V
  • O modo gráfico VGA usa SPICE e QXL, e há suporte a modo de terminal de texto, dispositivos USB e aceleração JIT baseada no QEMU TCG
  • Como front-end para macOS 11 e iOS 11+, permite criar, gerenciar e executar VMs no dispositivo
  • No macOS, oferece suporte à virtualização acelerada por hardware usando Hypervisor.framework e QEMU; no macOS 12+, é possível inicializar convidados macOS com Virtualization.framework
  • O UTM SE é a “slow edition”, que pode ser carregada lateralmente no iOS como um app comum, sem jailbreak nem bypass de JIT; usa um threaded interpreter, uma abordagem mais rápida que interpretadores tradicionais, mas mais lenta que JIT
    • O UTM/QEMU precisa de geração dinâmica de código (JIT) para desempenho máximo, e JIT em dispositivos iOS requer jailbreak ou métodos de bypass específicos para certas versões do iOS
    • Para otimizar tamanho e tempo de build, o UTM SE inclui apenas as arquiteturas ARM, PPC, RISC-V e x86, cada uma com variantes de 32 e 64 bits
  • As instruções de instalação do UTM e do UTM SE para iOS estão disponíveis em https://getutm.app/install/ , e o UTM para macOS está disponível em https://mac.getutm.app/
  • É distribuído sob a licença Apache 2.0, mas usa vários componentes (L)GPL; ao redistribuir, é preciso considerar que plugins do gstreamer são vinculados estaticamente e que parte do código foi trazida do qemu

1 comentários

 
GN⁺ 2023-09-02
Opiniões no Hacker News
  • Há algumas semanas, tentei instalar o Windows 11 ARM no UTM em um M2 novo com macOS Ventura para substituir o Fusion, mas foi decepcionante
    As ferramentas de integração, como copiar/colar ou compartilhamento de arquivos entre a máquina virtual e o host, não funcionavam, e os gráficos ficavam corrompidos o tempo todo, frequentemente passando para uma tela cinza
    Parecia não haver forma de recuperar, então eu precisava forçar a reinicialização da máquina virtual, e as datas dos drivers/ferramentas auxiliares também eram de 2012
    Como é um produto gratuito, não tenho direito de criar expectativas, e na prática voltei para o Fusion, mas, do ponto de vista de quem esperava substituir uma solução comercial de máquinas virtuais por uma open source, acho que ainda está difícil

    • Copiar/colar definitivamente funciona. Uso o dia inteiro indo e voltando. Vale verificar se você instalou as ferramentas SPICE
      https://docs.getutm.app/guest-support/windows/#windows-xp-an...
      Também nunca vi erros gráficos, mas não estou tentando jogar; uso apenas apps básicos de desktop
    • Uso o UTM como um wrapper do QEMU muito bom, e, tratado assim, ele é excelente
    • Fico curioso se copiar/colar e pastas compartilhadas funcionam no Fusion com uma máquina virtual Windows ARM. Na última vez que verifiquei, o VMware Tools ainda não dava suporte a esses recursos
      Correção: o Fusion 2023 Tech Preview [1] instala o VMware Tools completo e dá suporte a copiar/colar
      1. https://customerconnect.vmware.com/downloads/get-download?do...
    • Não surpreende. É porque OpenGL não funciona. Considerando que muitos apps hoje em dia usam OpenGL, isso o torna bem menos útil
    • Conectar com as ferramentas de RDP da MS pode proporcionar uma experiência melhor
  • O UTM é excelente, e se adicionarem snapshots [1], acho que ele vai virar minha recomendação padrão. Até lá, vou continuar usando o Parallels
    Para referência, existe um gerenciador de snapshots não oficial [2]
    1: https://github.com/utmapp/UTM/issues/5484
    2: https://github.com/Metamogul/UTM-Snapshot-Manager

    • Mantive o hábito de desenvolver dentro de máquinas virtuais, não no sistema real, e usei o UTM por bastante tempo para rodar uma máquina virtual Linux ARM64 em um MacBook Pro M1, mas problemas de compartilhamento de arquivos continuaram me incomodando
      O problema mais comum era a pasta compartilhada simplesmente desaparecer da máquina virtual convidada, e eu precisava recorrer com frequência a gambiarras para fazê-la voltar
      Depois, o VMWare Fusion teve o mesmo problema, e o Parallels parecia caro demais, então migrei para o Lima
      Ainda bem que conheci o Lima. Ele também é baseado em QEMU, facilita subir máquinas virtuais Linux e oferece compartilhamento de rede por padrão
      Agora faço todo o desenvolvimento dentro de uma VM do Lima e não tive problemas. Se necessário, daria para encaminhar a tela, mas por enquanto uma instância headless é suficiente graças ao VSCode
    • APFS já dá suporte a snapshots copy-on-write para todos os tipos de arquivo. O recurso de snapshots do UTM provavelmente seria uma camada em volta disso
      Poderia ser tão simples quanto cp -c
      Mas, se fosse mesmo assim, acho que já teriam implementado
    • Eu ia dizer que tinha conseguido simular snapshots de forma limitada com clonefile, mas a implementação em andamento já estava usando exatamente esse método
    • Fico curioso se ele dá suporte a emulação de TPM e a ansible/vagrabt
  • O maior problema do UTM é que, para algumas pessoas, ele funciona muito bem, e para outras funciona de forma terrível
    Se você percorrer os comentários desta página, verá muitas mensagens dizendo “quero usar o UTM, mas ele não funciona ou é lento demais para ser usável” e, ao mesmo tempo, muitas respostas do tipo “estranho, para mim funciona bem”
    No meu caso, o UTM literalmente nunca funcionou corretamente. Tentei uma instalação padrão do Ubuntu ARM em um Mac M1 2021 seguindo o guia https://docs.getutm.app/guides/ubuntu/, e falhou; agora estou olhando apenas para uma tela preta com um cursor piscando
    Infelizmente, quem consegue fazer funcionar quase nunca consegue oferecer suporte técnico prático a quem não consegue
    Cheguei a pagar 10 dólares pelo UTM na Mac App Store, mas o único canal de suporte técnico é o Discord, e lá havia muitas reações do tipo “kkk, para mim funciona, é falta de habilidade”
    Como recomendação, vale experimentar o UTM. Se você gostar, pode economizar bastante dinheiro; se, como eu, ele não funcionar de jeito nenhum, no fim terá que pagar 100 dólares por ano pelo Parallels. O Parallels provavelmente simplesmente vai funcionar
    Se o Parallels não funcionar, você pode falar diretamente com uma empresa que tem incentivo para fazer você renovar a licença e motivação para ajudar você a ter sucesso

    • Baixei e testei o Debian mais recente do site e, fora um problema estranho, não tive dificuldades
      Se você definir o disco da máquina virtual de boot acima de um certo tamanho — e nem era um tamanho enorme, acho que algo entre 30 GB e 100 GB —, o boot da VM fica muito lento
      Se definir grande o suficiente, ela nem inicializa. Adicionar um segundo drive de qualquer tamanho não aciona esse bug
    • Também existe o VirtualBox
  • Recebi da empresa um MacBook Pro M1, mas faço todo o desenvolvimento no Linux. Desde o fim dos anos 90, o Linux é meu ambiente preferido
    O hardware do MacBook Pro é bom, mas o macOS é lento e frustrante, então minha produtividade cai bastante
    Por isso rodo o Fedora aarch64 em tela cheia no UTM. Funciona muito bem, e muitas vezes esqueço que estou em cima de um Mac
    Só queria que o macOS não atrapalhasse e não me expulsasse de vez em quando do modo de tela cheia

    • Com certeza vou ficar de olho no Fedora Asahi Linux
    • A experiência de migrar do Linux para o macOS acaba sendo uma questão de aguentar e se adaptar aos problemas do macOS, ou consertá-los com soluções de terceiros até ficar tolerável. Às vezes você acaba fazendo um pouco dos dois
      Acabei me adaptando porque seria uma pena abrir mão da duração de bateria confiável
      Talvez exista em algum lugar uma solução que faça o modo de tela cheia permanecer ativo
    • Fico curioso para saber especificamente o que reduz sua produtividade. Quando abro e uso um terminal bash no Mac, sinto que é quase igual ao Linux
      Às vezes um utilitário não aceita argumentos de linha de comando com os quais estou acostumado, mas isso parece mais diferença de versão do que um problema Mac/Linux, e já passei por isso várias vezes ao mudar para outras máquinas dentro da empresa
      O maior incômodo, embora não seja enorme, é a diferença entre ARM e x86. De vez em quando encontro um pacote sem suporte a ARM, mas isso está ficando cada vez mais raro
    • Fico curioso para saber qual você acha que é a perda de desempenho usando assim. Se não for grande, parece uma boa solução
    • Dizem que o Asahi Fedora sai em poucos dias. Há esperança
  • O UTM foi um hipervisor estável para mim nos últimos 2 anos e, nesse período, também recebeu várias melhorias excelentes de recursos
    Ainda assim, o que mais gosto no UTM é que ele é a sigla de Universal Turing Machine. Para o nome de um produto de virtualização, acho quase imbatível

  • O que não gosto no Parallels e no VMWare é que eles forçam demais a integração entre sistemas operacionais. Por exemplo, abrir janelas do Windows no macOS, ou abrir documentos do macOS diretamente no Windows
    Prefiro que a máquina virtual fique isolada do macOS principal. Por isso sempre tenho que fuçar nas configurações para descobrir o que preciso desativar

    • No Parallels há uma única opção na aba de segurança chamada “Isolate VM from macOS”. Ela desativa todas as integrações mútuas
    • Lembro de quando instalei o Parallels. Toda vez que eu dava dois cliques em um arquivo, ele insistia em tentar abri-lo no Notepad do Windows
  • Sei que a descrição do projeto no GitHub fala “for iOS”, mas acho uma formulação bem enganosa
    As opções de instalação no iOS basicamente envolvem jailbreak, ou um método impossível nas versões mais recentes de CPU/iOS, ou então ficar em um estado semitethered em que você precisa recarregar/assinar o app a cada poucos dias
    https://docs.getutm.app/installation/ios/#summary

    • Se você tiver uma conta de desenvolvedor da Apple, pode fazer sideload de um app que dura 1 ano. É assim que eu uso
    • Usei no passado um app chamado reprosion, que consegue cuidar da assinatura no próprio dispositivo iOS e até automatizar isso. Usei para subir um jailbreak semitethered, e o limite é de 7 dias
      Não é preciso reinstalar o app em si, só renovar o certificado de assinatura
      Quando o sideload for implementado no EEE, deve ficar muito mais fácil, então estou ansioso por isso
    • Considerando que “jailbreak é impossível em ambientes modernos”, isso é impressionante
      A Apple conseguiu criar hardware que pode distribuir para mais de 1 bilhão de pessoas e, embora muita gente tivesse algo a ganhar com jailbreak, ninguém conseguiu fazê-lo
    • Se o objetivo for apenas fazer sideload de apps, o método semitethered pode até parecer menos suspeito do que jailbreak
      Funciona sem esse método também, mas é a mais lenta das três formas de execução
    • Quero muito ver como o sideload da UE vai funcionar. Espero que seja implementado direito
  • Se você vai rodar uma máquina virtual para ambiente de desenvolvimento no Mac, o que você quer é o OrbStack: https://orbstack.dev/

    • Quando sair do beta, o uso comercial deve custar US$ 8 por mês por desenvolvedor
    • Para a maioria dos casos de uso, acho que Lima e Colima bastam
      https://lima-vm.io/
      https://github.com/abiosoft/colima
    • Para uma ferramenta que destaca suas vantagens com uma frase como a abaixo, chama atenção a falta de suporte a vagrant

      Para qualquer caso de uso, o OrbStack oferece recursos que simplificam seu workflow e ajudam você a avançar mais rápido

    • Fico curioso se dá para criar configurações de rede complexas com isso. Minha maior reclamação com o UTM é que só dá para ter uma interface de rede em uma máquina virtual
  • Me recomendaram o Lima, e ele é um pouco parecido com o WSL2 para macOS: https://lima-vm.io
    Não sei muito bem o que ele usa por baixo, mas funcionou muito bem para mim

    • Ao criar uma máquina virtual, você pode escolher entre QEMU ou Virtualization.framework
      O colima é uma camada em cima do Lima, que facilita a configuração de máquinas virtuais no estilo docker-machine/boot2docker
  • O UTM é excelente para usos básicos, mas o desempenho era tão ruim que não foi muito realista usá-lo como ferramenta principal no trabalho do dia a dia
    No Mac, nada supera o Parallels, e ele vale bem o preço

    • Se você estiver rodando uma máquina virtual x86 no Apple Silicon, concordo que o desempenho é terrível. Tenho quase certeza de que isso é mais um problema do QEMU do que culpa do UTM
      Se a máquina virtual for aarch64, o desempenho é surpreendentemente bom, e posso recomendar o UTM sem reservas