Si por alguna razón cuentas con un equipo de la marca de la manzana y buscas una alternativa para virtualizar, te recomiendo Lima ya que a diferencia de otros proyectos funciona en las arquitectura x86_64 y ARM 64.
Lima utiliza QEMU para virtualizar, la gestión se realiza a través de la linea de comandos por lo que si estás buscando una alternativa gráfica o una maquina virtual con interfaz te recomiendo UTM que funciona igualmente con QEMU.
Instalación
Para la instalación de Lima utilizaremos el gestor de paquetes de Mac llamado Homebrew, sino cuentas con él puedes instalarlo de manera fácil de la siguiente forma:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Una vez instalado el gestor de paquetes podremos instalar Lima.
$ brew install lima
Lima utiliza archivos yaml para la creación de maquinas virtuales, existe una lista de templates que pueden usarse para desplegar nuestras maquinas, estos archivos los podemos localizar en el directorio, /opt/homebrew/share/lima/templates.
Administración
Crearemos una maquina virtual con ubuntu como imagen linux y asignaremos 2 gigas de memoria y 2 cpus.
personal-mac:templates tusysadmin$ pwd
/opt/homebrew/share/lima/templates
personal-mac:templates tusysadmin$ limactl create --name linux-server --set='.cpus = 2 | .memory = "2GiB"' ubuntu-lts.yaml
? Creating an instance "linux-server" Proceed with the current configuration
INFO[0001] Attempting to download the image arch=aarch64 digest="sha256:5167c1b13cb33274955e36332ecb7b14f02b71fd19a37a9c1a3a0f8a805ab8e5" location="https://cloud-images.ubuntu.com/releases/22.04/release-20231010/ubuntu-22.04-server-cloudimg-arm64.img"
INFO[0001] Using cache "/Users/tusysadmin/Library/Caches/lima/download/by-url-sha256/f55d2d250bd1df34e6c082a8cbfea153f1ef6a5ec8a7300dd0ab8cbc13ec946b/data"
INFO[0002] Attempting to download the nerdctl archive arch=aarch64 digest="sha256:ea30ab544c057e3a0457194ecd273ffbce58067de534bdfaffe4edf3a4da6357" location="https://github.com/containerd/nerdctl/releases/download/v1.6.2/nerdctl-full-1.6.2-linux-arm64.tar.gz"
INFO[0002] Using cache "/Users/tusysadmin/Library/Caches/lima/download/by-url-sha256/21921213c0426e38e2f26d2844446767e2a19c0b6655c774f9e4adbb5c368d8f/data"
INFO[0002] Run `limactl start linux-server` to start the instance.
Iniciemos la maquina.
personal-mac:templates tusysadmin$ limactl start linux-server
INFO[0000] Using the existing instance "linux-server"
INFO[0000] QEMU binary "/opt/homebrew/bin/qemu-system-aarch64" seems properly signed with the "com.apple.security.hypervisor" entitlement
INFO[0001] [hostagent] hostagent socket created at /Users/tusysadmin/.lima/linux-server/ha.sock
INFO[0001] [hostagent] Starting QEMU (hint: to watch the boot progress, see "/Users/tusysadmin/.lima/linux-server/serial*.log")
INFO[0001] SSH Local Port: 50965
INFO[0001] [hostagent] Waiting for the essential requirement 1 of 5: "ssh"
INFO[0018] [hostagent] Waiting for the essential requirement 1 of 5: "ssh"
INFO[0028] [hostagent] Waiting for the essential requirement 1 of 5: "ssh"
INFO[0029] [hostagent] The essential requirement 1 of 5 is satisfied
INFO[0029] [hostagent] Waiting for the essential requirement 2 of 5: "user session is ready for ssh"
INFO[0029] [hostagent] The essential requirement 2 of 5 is satisfied
INFO[0029] [hostagent] Waiting for the essential requirement 3 of 5: "sshfs binary to be installed"
INFO[0038] [hostagent] The essential requirement 3 of 5 is satisfied
INFO[0038] [hostagent] Waiting for the essential requirement 4 of 5: "/etc/fuse.conf (/etc/fuse3.conf) to contain \"user_allow_other\""
INFO[0041] [hostagent] The essential requirement 4 of 5 is satisfied
INFO[0041] [hostagent] Waiting for the essential requirement 5 of 5: "the guest agent to be running"
INFO[0041] [hostagent] The essential requirement 5 of 5 is satisfied
INFO[0041] [hostagent] Mounting "/Users/tusysadmin" on "/Users/tusysadmin"
INFO[0041] [hostagent] Mounting "/tmp/lima" on "/tmp/lima"
INFO[0041] [hostagent] Waiting for the optional requirement 1 of 2: "systemd must be available"
INFO[0041] [hostagent] Forwarding "/run/lima-guestagent.sock" (guest) to "/Users/tusysadmin/.lima/linux-server/ga.sock" (host)
INFO[0041] [hostagent] The optional requirement 1 of 2 is satisfied
INFO[0041] [hostagent] Waiting for the optional requirement 2 of 2: "containerd binaries to be installed"
INFO[0041] [hostagent] Not forwarding TCP 127.0.0.53:53
INFO[0041] [hostagent] Not forwarding TCP 0.0.0.0:22
INFO[0041] [hostagent] Not forwarding TCP [::]:22
INFO[0047] [hostagent] The optional requirement 2 of 2 is satisfied
INFO[0047] [hostagent] Waiting for the final requirement 1 of 1: "boot scripts must have finished"
INFO[0057] [hostagent] The final requirement 1 of 1 is satisfied
INFO[0057] READY. Run `limactl shell linux-server` to open the shell.
Para entrar a la maquina.
personal-mac:~ tusysadmin$ limactl shell linux-server
tusysadmin@lima-linux-server:/Users/tusysadmin$ sudo su -
root@lima-linux-server:~# apt-get update
Hit:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
Get:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [119 kB]
Hit:3 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease
Get:4 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [110 kB]
Get:5 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages [1021 kB]
Get:6 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main Translation-en [248 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports jammy-updates/universe arm64 Packages [917 kB]
Fetched 2415 kB in 4s (567 kB/s)
Reading package lists... Done
root@lima-linux-server:~# htop
root@lima-linux-server:~# cat /etc/issue
Ubuntu 22.04.3 LTS \n \l
Al salir de la maquina virtual podemos listar el resto de equipos y el estado en el que se encuentran.
personal-mac:~ tusysadmin$ limactl list
NAME STATUS SSH VMTYPE ARCH CPUS MEMORY DISK DIR
docker Stopped 127.0.0.1:0 qemu aarch64 4 4GiB 100GiB ~/.lima/docker
linux-server Running 127.0.0.1:49404 qemu aarch64 2 2GiB 100GiB ~/.lima/linux-server
personal-mac:~ tusysadmin$
Para explorar más opciones de administración podemos usar el comando limactl -h.