Como criar uma máquina virtual com o UTM no Mac M1 a partir de um arquivo .img

Apresento neste blog post uma adaptação do artigo original "Running Manjaro ARM in UTM on M1 Mac" por Andreas Gerlach. Este conteúdo oferece a solução que muitos usuários buscavam para executar distribuições Linux em processadores Apple Silicon - M1, M1 Pro, M1 Max ou M2, que possuem a mesma arquitetura de CPU das imagens da distribuição Linux Manjaro ARM (aarch64). É importante ressaltar que as imagens do Linux Manjaro ARM não são disponibilizadas no formato .iso.

Infelizmente, o artigo original não possui alta visibilidade nas pesquisas do Google, e por isso decidimos disponibilizá-lo em português, com as devidas modificações necessárias.

Para começar, vamos abordar os pré-requisitos necessários para instalar o Linux Manjaro ARM no UTM. Antes de mergulharmos nas etapas de instalação, é importante garantir que você tenha tudo o que é necessário para criar a VM no UTM no seu Mac M1.

Pré-requisitos

Este guia pressupõe que você esteja usando um Mac baseado em Apple Silicon - seja M1, M1 Pro, M1 Max ou M2 - que possua a mesma arquitetura de CPU das imagens Manjaro ARM (aarch64).

Além do hardware, você deve ter um sistema operacional macOS instalado e ter baixado e instalado o virtualizador UTM.

Também é útil ter as ferramentas QEMU instaladas no sistema para auxiliar no gerenciamento e suporte das VMs criadas por meio da linha de comando ou scripts. Você pode instalar facilmente o QEMU via HomeBrew ou MacPorts.

Agora que você conhece os pré-requisitos necessários, vamos explorar o que é o UTM e como essa ferramenta desempenha um papel fundamental na execução de distros do Linux em processadores Apple Silicon. Nesta próxima seção, vamos mergulhar mais a fundo no UTM e entender como ele funciona.

O que é o UTM?

O UTM (Universal Transverse Mercator) é um emulador de sistema completo e um hospedeiro de máquina virtual para iOS e macOS.

O UTM é baseado no QEMU. O QEMU é um software de emulação de código aberto amplamente utilizado que permite a virtualização de sistemas operacionais e a execução de aplicativos em diferentes arquiteturas de hardware. A sigla QEMU significa "Quick Emulator" (emulador rápido), indicando sua capacidade de emular várias plataformas com bom desempenho.

Em resumo, o UTM permite que você execute o Windows, Linux e muito mais em seu Mac, iPhone e iPad.

Agora que você está familiarizado com o UTM e entende como ele pode ser uma ferramenta poderosa para criar máquinas virtuais no seu Mac M1, é hora de avançarmos para o próximo passo: a instalação do Manjaro Linux no UTM.

Instalando Manjaro Linux no UTM no Mac M1

Acompanhe as etapas a seguir para instalar o Manjaro Linux no UTM no Mac M1:

1. Primeiramente, faça o download de uma imagem do Manjaro ARM na página de Downloads do Manjaro - https://manjaro.org/download/. Certifique-se de selecionar a opção específica para dispositivos ARM:

2. Após concluir o download, extraia o arquivo ...img.xz para obter acesso à imagem bruta do disco do sistema:

3. Dê um duplo clique no arquivo de imagem do disco (no exemplo, chamado Manjaro-ARM-gnome-generic-23.02.img), ele será montado e você poderá ver a partição de inicialização (boot) com o nome BOOT_MNJRO:

Essa partição de inicialização (boot) contém a imagem do kernel do Linux (arquivo Image), o disco Init RAM (arquivo initramfs-linux.img) e os parâmetros de inicialização (boot) no diretório extlinux (arquivo extlinux.conf):

4. Copie os arquivos da partição de inicialização para uma pasta local em seu Mac, incluindo o conteúdo do diretório extlinux:

Depois, você pode ejetar / desmontar a partição de inicialização do seu Mac através do Finder.

5. Em seguida, abra o aplicativo UTM no seu Mac e inicie o Virtual Machine Wizard clicando no botão com o ícone "+". Certifique-se de usar a opção Virtualize na primeira etapa:

6. Na próxima tela, selecione a opção Linux:

7. Ao serem solicitadas as configurações de virtualização do Linux, escolha a opção "Boot from kernel image" e, nas seções seguintes, selecione a imagem do kernel (arquivo Image) no campo "Linux kernel (required)" e o Linux initial RAM disk (arquivo initramfs-linux.img):

8. Role a página para baixo na mesma tela e escolha o Linux Root FS Image. Use o arquivo de imagem do disco (no exemplo, chamado Manjaro-ARM-gnome-generic-23.02.img):

9. Em seguida, abra o arquivo extlinux.conf em sua pasta local e copie o seguinte conteúdo dele (especialmente o UUID da partição raiz):

...e adicione o texto copiado à seção Boot Arguments - observe: você deve cercá-lo com " (aspas duplas):

10. Vá para a próxima seção clicando no botão Continue e selecione a quantidade de RAM e CPU Cores que deseja alocar para a máquina virtual:

11. Prossiga para a próxima seção clicando no botão Continue e escolha se deseja compartilhar algum diretório do seu Mac com a máquina virtual. Este passo é opcional.

12. Avance para a última seção do assistente clicando em Continue, assegure-se de atribuir um nome à VM e marque a opção "Open VM Settings":

13. Na tela VM Settings, certifique-se de que os parâmetros de boot adicionais tenham sido adicionados corretamente. Navegue até a seção QEMU e role até o final da longa lista de parâmetros da linha de comando:

14. Vá para a seção Display e verifique se a opção selecionada em Emulated Display Card está definida como virtio-gpu-pci. Você também deve marcar a opção Retina Mode se planeja executar a VM em uma tela de alta resolução:

15. Verifique as entradas da unidade VirtIO listadas na seção inferior esquerda e encontre aquela que tem como nome um GUID e a extensão .qcow2. Algumas vezes, ela poderá ter o nome data.qcow2. No meu exemplo, ela se chama: 7AE60D00-F904-4AB6-9FF7-4159A118F37B.qcow2. Esta deve ser removida, pois parece haver um bug na criação da VM, que leva a referência a uma imagem de disco inexistente. Clique em Save para fechar a tela VM Settings.

16. Antes de inicializar a VM, ainda precisamos aumentar o espaço de armazenamento da máquina virtual. A imagem que recebemos da Internet é otimizada para distribuição e, como tal, não tem muito espaço livre para oferecer. Para estender o espaço de armazenamento da máquina virtual, você precisa abrir uma janela do Terminal em seu Mac e seguir estas etapas simples:

A partir do seu diretório home, vá para a pasta de imagens da máquina virtual UTM:

cd Library/Containers/com.utmapp.UTM/Data/Documents/<Nome da sua VM>.utm

Agora, execute o seguinte comando:

qemu-img resize Images/<Nome da sua imagem Root FS>.qcow2 +32G

Esse comando acrescentára 32G ao espaço de armazenamento da máquina virtual. Observe: não é o próprio arquivo que é aumentado em tanto espaço, mas sim as informações meta do tamanho do disco. O arquivo geralmente cresce com o uso do sistema até esse tamanho.

15. Agora você pode ligar a nova máquina virtual recém-criada a partir da janela principal do UTM. Após um curto período de tempo, você deverá ver o logotipo de inicialização do Manjaro. Inicialmente, você também terá que passar pelo programa de configuração do Linux Manjaro ARM na sua VM:

Configure o seu novo sistema Linux Manjaro ARM, fornecendo informações como fuso horário, idioma e configurações do teclado, além da conta de usuário a ser criada no final do processo. Após finalizar a configuração inicial, é necessário reiniciar o sistema:

Após o reinício ser concluído com sucesso, a primeira coisa que você deve fazer é limitar as atualizações do kernel do Linux. Você deve limitar as atualizações do kernel do Linux porque uma atualização dessas resultará em uma atualização do initial RAM disk. Esse arquivo foi inicialmente obtido a partir imagem do Linux que baixamos da internet. Uma atualização do kernel Linux na VM tornaria esse arquivo inválido e impediria que a VM inicializasse. Portanto, ignorar as atualizações do kernel Linux na VM parece ser uma opção mais estável por enquanto.

17. Então, inicie o programa "Add / Remove Software" a partir do menu Iniciar.

18. Na tela Add / Remove Software, abra a tela Preferences a partir do menu de contexto...


18. Na tela Preferences, vá para a seção Advanced e adicione os seguintes itens à lista de Ignored upgrades: linux e opcionalmente linux-headers:

19. Em seguida, feche a tela Preferences. Na tela Add / Remove Software procure pelo aplicativo spice-vdagent e instale-o:

20. Reinicie o sistema mais uma vez. Após o reinício, o tamanho da área de trabalho deve se adaptar automaticamente ao tamanho da janela do UTM (por meio do spice-vdagent). Portanto, tente alternar para tela cheia e você verá o tamanho da área de trabalho do Linux aumentando também.

Experimentei essas etapas de configuração com as imagens do KDE e GNOME da página de downloads do Manjaro com sucesso. No entanto, para a imagem do Sway, ainda havia obstáculos adicionais a serem superados.

Configurando Manjaro Linux Sway no UTM

O SwayWM, que utiliza o projeto wlroots, normalmente requer gráficos com aceleração de hardware no sistema de destino. Isso não é possível atualmente no UTM, então precisamos configurar algumas opções alternativas para o Sway na VM.

Inicialize a VM, alterne para um console de texto, abra o arquivo /etc/environment no seu editor e adicione as seguintes linhas no final:

  # disable hw cursors
  WLR_NO_HARDWARE_CURSORS=1
  
  # force pixman renderer
  WLR_RENDERER=pixman

Como a configuração padrão do Sway define a tecla CMD como a tecla modificador principal, a maioria dos atalhos de teclado entra em conflito com os atalhos do próprio macOS. Você pode forçar a entrada para a VM ou pode alterar a(s) tecla(s) modificadoras na sua configuração do Sway da seguinte maneira.

Abra o arquivo $HOME/.config/sway/config no seu editor e adicione as seguintes duas linhas após a instrução include $theme/definitions:

  # import theme specific definitions
  include $theme/definitions

  set $mod Mod1             # sets up ALT as main modifier key
  set $alt Ctrl             # sets up CTRL as the second modifier key

  # Your preferred terminal emulator

Não se esqueça de instalar o pacote spice-vdagent. Reinicie o sistema após a atualização da configuração e você deverá conseguir seguir o procedimento inicial de configuração do Manjaro.

Conclusão

Neste artigo, exploramos o processo de execução do Manjaro Linux em processadores Apple Silicon usando o UTM no Mac M1. Recapitulando o que aprendemos até agora:

  • Conhecemos os pré-requisitos necessários para executar distros do Linux em processadores Apple Silicon, incluindo a arquitetura compatível e o uso do UTM como plataforma de virtualização.
  • Aprendemos a baixar a imagem do Manjaro ARM e extrair o arquivo .img para obter acesso à imagem do sistema.
  • Configuramos o UTM e criamos uma máquina virtual, selecionando a opção de inicialização a partir da imagem do kernel do Linux.
  • Exploramos a personalização do ambiente Sway no Manjaro Linux, ajustando teclas modificadoras e outras configurações para uma experiência otimizada.

Agora, você está pronto para explorar todo o potencial do Manjaro Linux no seu Mac M1. Aproveite a versatilidade do sistema operacional Linux, experimente diferentes distribuições e personalize o ambiente de acordo com suas preferências.

Lembre-se de que este artigo é um guia inicial e existem várias outras personalizações e recursos a serem explorados. Continue aprendendo, experimentando e compartilhando suas experiências com a comunidade Linux.

Agora é hora de colocar em prática o conhecimento adquirido e desfrutar de um ambiente de trabalho Linux poderoso e personalizado no seu Mac M1. Divirta-se explorando novas possibilidades e expandindo seus horizontes tecnológicos!