IOS: Hackintosh e o “Trilema” do desenvolvedor multiplataforma

Ambiente de desenvolvimento (deploy) para plataformas Apple, é sem dúvida um dos arqui-inimigos do desenvolvedor multiplataforma: já que o principal e indispensável requisito para realizar deploy para Apples, é realizar os builds em máquinas Apple (ou Mac OS propriamente dito).
Daí que vem o título para esse artigo:
Devo comprar um Mac usado ou novo¹, usar cloud², máquina virtual³ ou fazer um Hackintosh?
Nesse artigo venho trazer a minha visão como usuário de Hackintosh há pelo menos 6 anos, e de desenvolvedor multiplataforma (Flutter), além de um pre guia para o build de Hackintoshes (Plataformas AMD e Intel) voltado especialmente para o público Dev. Para detalhes de build, bem especificado, trarei uma Parte 2 para esse Artigo, então não se preocupe, e vamos nos ater na discussão principal nessa Parte 1.
First things first
Primeiramente vamos falar sobre o que usar das “ferramentas” disponíveis para builds iOS, mas se o que lhe interessa é o guia para o Hackintosh, pode avançar para o tópico específico (Tópico 4).
1. Comprar um Mac
Para começar, não há mistério, se no seu orçamento cabe comprar um Mac, seja ele um Mac Mini ou MacBook, comprar um Mac é o caminho mais fácil, plugin-n-play (ou pay-n-play).
Mas que Mac comprar, novo ou usado?
1.1 Mac usado
Se você pretende usar por alguns anos seu Mac, você deve comprar no mínimo um late 2016 — Lembrando que você deve ter o Mac OS atualizado na última versão lançada pela Apple para poder fazer seus builds, e um Mac relativamente antigo não vai suportar updates.
A desvantagem de ter um Mac com até 4 anos é que para manter o sistema atualizado, possivelmente em algum momento será necessário recorrer à métodos não oficiais para isso.
A vantagem é que você poderá adquirir uma máquina Apple por um preço razoavelmente inferior ao novo (óbvio) e com alguns ajustes (gambiarras) conseguirá trabalhar com ele por mais alguns anos.
1.2 Mac novo
- Das vantagens de um novo é que terá bastante tempo de suporte ao sistema, sem precisar se preocupar com procedimentos manuais e de terceiros por um bom tempo.
1.3 Mac Mini ou MacBook?
Nesse caso não há muita diferença, vai depender do seu gosto e necessidade: se precisa de mobilidade, pega um MacBook, se não, o Mac mini também é uma boa opção.
Se esse não é o seu caso, alternativas como cloud e virtualização pode ser uma solução.
2. Mac Cloud
Há várias plataformas que oferecem o serviço de build in cloud (iOS CI/CD). São exemplos de boas plataformas: CodeMagic, MacinCloud entre várias outras. Porém o uso dessas ferramentas custam alguns dólares (que vai acarretar em custo ao cliente, claro). MacinClound por exemplo tem um plano que custa 1$ por hora por um bom setup, que pode ser customizado como você preferir ou necessitar.

Codemagic apresenta um modelo de negócio um pouco diferente, no qual você pode usar seus serviços gratuitamente, com alguns limites, e é altamente recomendável para aprendizado. Os planos pagos também são muito bons e se torna uma ótima opção para você e seus clientes.
Dos pontos negativos, vale ressaltar que você estará usando uma VM remotamente, que vai impactar na fluidez e responsividade de uso do Sistema, mesmo nos melhores planos (ambos serviços) o input lag é bem alto, isso devido ao fato de se tratar de uma conexão remota etc., e pode aumentar dependendo da velocidade da sua internet.
3. Máquina Virtual Local
Uma solução um pouco “marginal” (que beira as margens dos termos de uso do Mac OS X), é usar Virtualização Local.
Você poderá optar por usar soluções como VBox ou VM Ware com imagens customizadas do Mac OS, ou outras baseadas no KVM e QEMU como SOUSUMI (bem populares em ambientes Linux), e até mesmo Docker!
Se você usa WSL a alternativa do Docker já é possível. Eu mesmo dei meus 10 cents no projeto Docker-OSX. Todo o procedimento para poder usar a solução tanto no Windows 10 quanto Windows 11 está documentado.
A desvantagem nesse ponto para todas opções dadas aqui, é que você deve ter no mínimo um hardware mid-end para poder obter um desempenho razoável: Memória suficiente para suprir a necessidade do SEU sistema e do Virtualizado, e alguns núcleos para o mesmo.
4. Hackintosh
Finalmente a solução mais “marginal”, beirando demasiadamente os termos de uso do Mac OS. Mas não se desespere, você pode checar o SLA(Software License Agreements) da Apple para seus Sistemas Operacionais e decidir se segue essa solução — ou “só vai” — , mas desde que você tenha em mãos uma licença do OS X Lion, que vai custar cerca de 60 R$, poderá usar o Mac OS X como queira.
4.1 Traçando o perfil Dev
Antes de seguirmos vamos definir qual tipo de usuário você é, para que assim esse guia seja o mais útil possível. Para isso vamos fazer algumas perguntas que dará qual caminho seguir no seu build Hackintosh.
Primeiramente, você está procurando montar um setup especialmente para Hackintosh[1], ou fazer na sua máquina atual e de preferencia sem precisar alterar/adicionar componentes[2] ?
Se sua resposta é a opção [2] basta pular para a seção 4.1.2, caso contrário vamos para as próximas perguntas na seção 4.1.1.
4.1.1 Setup build
Você já decidiu em qual plataforma irá construir seu Hackintosh (Intel / AMD)? Se sim, pule para a seção Intel na parte 2 desse artigo caso sua plataforma seja Intel, e AMD para plataforma AMD.
Escolha da plataforma:
[1]: Você precisa indispensavelmente da tecnologia HAXM?
Se sim, vai de Intel. Só pula para 4.1.2, que o resto não importa mais para você! (😂😂😂) detalhes em 4.1.1.1
[2]: Você é o tipo de Dev que prefere Setup Wizards invés de CLIs ? Evita ao máximo precisar usar terminal ? Não liga para ter/manter o controle sobre sua máquina (incluindo desempenho e performance) ? e informações como CPU Cache, CAS-L não fazem diferença para você ?
Se vc respondeu “Sim” para pelo menos duas das perguntas acima [2], ambas as plataformas lhe fazem sentido. Mas se respondeu “Não” para pelo menos três delas, eu indicaria a plataforma AMD!
4.1.1.1 Por que Intel?
A tecnologia HAXM é exclusiva da Intel, então se algum software que você utiliza usa exclusivamente o HAXM para virtualização, então você está preso à Intel.
Um dos Softwares que usa exclusivamente o HAXM (no Mac OS pelo menos), é o Android Studio. Por ele não esperar por um processador AMD nos Macs obviamente não incluiu o suporte à outras tecnologias de virtualização no seu AVD — Android Virtual Device. Porém se você somente irá usar o Android Studio com HAXM, há outras formas de virtualizar Dispositivos Android sem usar o HAXM. Algumas delas é usar o KVM, QEMU ou até mesmo o AEMU (Android Emulator — Nativo do Android SDK). Outros emuladores também funcionam perfeitamente, como o caso do Genymotion e BluStacks.
Além do HAXM, alguns dos processadores Intel contam com GPU integrada (APU), o que conta muito no bolso no atual momento de elevados preços de GPUs dedicadas. Se por um lado é necessário ter uma GPU AMD para hackintoshes com gráficos dedicados, por outro os gráficos integrados AMD podem causar alguma dor de cabeça para poder funcionar devidamente (ou não funcionar).
Assim concluímos que: se você está montando um Hackintosh sem uma gpu dedicada, por exemplo, um laptop ou desktop com APU, e/ou depende do HAXM para trabalho, e se você não liga para manter o controle de desempenho e performance do seu hack, você deve seguir com Intel.
4.1.1.2 Por que AMD?
Por incrível que pareça e indo contrário ao que o senso comum dita, AMD é a plataforma mais fácil e rápida para fazer Hackintosh em Desktops.
É importante ressaltar dois pontos aqui. Primeiro que me refiro à facilidade de hackin em Desktops, pois em Laptops (Notebooks) com processadores AMD não é se quer recomendável TENTAR fazer. Segundo que levando em consideração o Tópico 4.1.1.1 APUs AMD não são suportadas*.*
AMD é a plataforma principal para o OpenCore, que em minha visão é o melhor Boot Loader para Hackintosh (discutiremos sobre isso logo mais), e por esse motivo, recebe em primeira mão as atualizações de Kexts e Patches e suporte para versões do MacOS. A fabricante por ser OpenSource friendly, muito de suas tecnologias estão disponíveis meio Open source, e isso facilita a vida dos devs no fornecimento de suporte. Outro motivo que facilita o hackin’ é o compartilhamento de microarquitetura entre as gerações dos AMDs, o que faz com que um patches criados para os zens 1 funcione perfeitamente para os zen 2 e zen 3 (Ryzens), e também tenham retro compatibilidade com as microarquiteturas Bulldozer’s (xxx-FX) e Jaguar’s (Athlons e Sempron’s).
Desde o lançamento dos processadores zens a escolha por esses processadores cresceram muito em relação aos de sua concorrente Intel, tanto no meio Gamer quanto no profissional. E é claro que isso devido à suas especificações e tecnologias envolvidas. E tudo isso pode ser usufruído também nos Hackin’:
- Suporte à maiores stock clocks em memórias;
- Melhor multi-threading;
- Melhor desempenho em par com as GPUs;
- Suporte à personalização de desempenho energético da CPU (Cores e Threads);
- Melhor ambiente para entusiastas de hardwares/Softwwares;
- TDP mais baixo (Sim, AMDs são mais frios hoje em dia);
- so on;
Concluindo, com AMD temos o suporte a mais versões do OS X e macOS nativamente, através do OpenCore, e sem procedimentos “dolorosos” que com o Clover e/ou Chameleon temos que implementar. A injeção de Kexts e load de patches, ACPI Tables Mappers, e firmware são “mergeados ” durante o boot, então o diagnostico de erros e problemas são mais evidentes e semânticos, e podem ser facilmente corrigidos. Por fim, você terá mais liberdade e controle para fazer o que bem entender com seus setup, e com exceção do HAXM based softwares, todos os softwares vão funcionar perfeitamente como funcionaria num hackintosh baseado em Intel.
Notas:*
É importante que você estude e entenda como funciona um hackintosh, assim você poderá faze-lo sem muitas complicações, como também dá o suporte ao seu próprio build para futura atualizações do macOS. Caso contrário você só estará pegando Bootloaders de outras pessoas aleatórias e testando se roda, se rodou bem, se não “next one”.
No segundo caso, além de ser um PÉSSIMA prática, que envolve está rodando um software que inicia junto à sua UEFI/BIOS podendo injetar qualquer conteúdo no layer principal de sua máquina (inclusive malicioso), também envolve execução de drivers, extensões de kernel entre outros softwares, diretamente no sistema, que podem sim ter controle do seu ambiente e até mesmo do Apple Store Connect, já que você não faz ideia do que está rolando ali. É importante pensar no pior caso, afinal a depender de seus clientes, o comprometimento desse nível pode lhe gerar grandes dores de cabeça (e caso aconteça, você vai chorar para quem? A Apple? hehehe).
Então ao menos, aprenda o mínimo.*
4.1.2 Hackin on
Primeiramente temos que preparar nosso target: selecionar o HD/SSD que vamos instalar o macOS, separar um pendrive de no mínimo 16GB, um sistema operacional rodando, MacOS, Windows 10, ou Linux, conexão cabeada (Caso você não tenha uma conexão ethernet, um outro guia vai lhe ajudar, linkarei aqui assim que termina-lo), e ter em mãos os nomes dos nossos componentes de hardware (Aida64 e o Google são seus melhores amigos agora). Você DEVE ter os seguintes componentes:
CPU nome e geração
GPUs
HDD/SSD, NVMe e quais configurações: AHCI/RAID/IDE
Modelo de seu Laptop/Desktop (chipset)
Ethernet chipset + WLAN/Bluetooth chipset
Exemplos
# Exemplo Desktop 1:
Ryzen 5 3600
RX 580
SSD NVMe AHCI
B450m
Realtek GbE LAN chip (10/100/1000 Mbit) ou (Chipset Realtek 8111e)
sem Wifi/Bluetooth# Exemplo Desktop 2:
i5 10900k
RX 580
SSD M.2 Sata3 AHCI
B460G
Ethernet Intel I219-V (chipset in-same)
Intel® Wireless AC/AX (chipset Intel N 7265)# Exemplo Laptop (Notebook):
i5 1035G1
UHD Graphics 630
NVIDIA GeForce MX110 (não usa: tem que desativar)
SSD Sata3 AHCI
s145 ideaPad — lenovo
WiFi 1x1 AC (chipset: AC 3165 )
ethernet não tem
Para conseguir os detalhes do seu hardware em Sistemas baseados no linux basta seguir os seguintes comandos no terminal:
# CPU Model
$ cat /proc/cpuinfo | grep -i “model name”
#GPU Model
$ lspci | grep -i — color “vga\|3d\|2d”
#Chipset Model
$ dmidecode -t baseboard
#Keyboard, Trackpad and Touchscreen Connection Type
$ dmesg | grep -i input
#Audio Codec
$ aplay -l
#Network Controller models
Basic info:
$ lspci | grep -i network
More in-depth info:
$ lshw -class network
#Drive Model
$ lshw -class disk -class storage
Próximos passos
Para os próximos passos temos: baixar uma imagem oficial do macOS diretamente da Apple Store temos duas opções: baixar por um Mac, ou usar uma ferramenta de linha de Comando chamada gibsMac. Com ela conseguimos baixar qualquer versão do sistema e já configurar o OpenCore. E criar o Penboot.
Após fazer o download e criar o Penboot já com o Opencore, devemos criar nossa EFI, que será onde estará todos os patches e drivers necessários para o funcionamento do Hackintosh.
Tudo isso e os Cosmetics Steps será abordado na Parte 2 desse artigo, que será publicado no dia seguinte à publicação desse (Parte 1). Para nos familiarizarmos com os termos e conceitos, recomendo a leitura do nosso “glossário”, que contém os termos que usaremos e sua definições, disponível aqui.
Considerações
A escolha da ferramenta que você usará vai depender exclusivamente de sua necessidade, contexto econômico — se pode investir em um Mac ou em Build Hackintosh, ou pagar um serviço cloud — , e também paciência.
Minhas considerações é que há duas soluções que são as melhores. Estas são: comprar um Mac e o Hackintosh. Considerando usabilidade, estabilidade e suporte. Outra que poderia está nessa lista seria a Virtualização (sousumi / Docker-osx), porém, nesse caso, exige um pouco mais de seu hardware, paciência e conhecimento em manipulação de containers Docker. O hackintosh não fica para trás no quesito “paciência”, mas por outro lado não exige um hardware tão poderoso para um uso aceitável, e por isso é o meu favorito.
Se você tem Dead-lines ou não tem muito tempo para trabalhar em um hackin’, você pode fazer a trilha gradual, partindo inicialmente em Virtualização, e ir construindo seu Hackintosh até que esteja funcional e “estável”. E desde que você saiba o que está fazendo, não haverá sérios problemas com suporte nos próximos 5 anos (no mínimo).




