UTM — máquina virtual para iOS e macOS
(github.com/utmapp)- 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
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
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
Correção: o Fusion 2023 Tech Preview [1] instala o VMware Tools completo e dá suporte a copiar/colar
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
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
Poderia ser tão simples quanto
cp -cMas, se fosse mesmo assim, acho que já teriam implementado
clonefile, mas a implementação em andamento já estava usando exatamente esse métodoO 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
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
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
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
À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
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
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
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
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
Funciona sem esse método também, mas é a mais lenta das três formas de execução
Se você vai rodar uma máquina virtual para ambiente de desenvolvimento no Mac, o que você quer é o OrbStack: https://orbstack.dev/
https://lima-vm.io/
https://github.com/abiosoft/colima
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
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 a máquina virtual for aarch64, o desempenho é surpreendentemente bom, e posso recomendar o UTM sem reservas