Skip to content

Instantly share code, notes, and snippets.

@ivanitskiy
Last active January 22, 2024 20:47
Show Gist options
  • Save ivanitskiy/d8679c869e58b5df6a890c70317c10e6 to your computer and use it in GitHub Desktop.
Save ivanitskiy/d8679c869e58b5df6a890c70317c10e6 to your computer and use it in GitHub Desktop.
Running ARM64 Debian VM on MAC OS Intel (13.6) with qemu

Running ARM64 Debian on MAC OS (13.6) with qemu

# install qemu

brew install qemu
qemu-system-aarch64 --version

mkdir aarm64
cd aarm64

# create image disk
qemu-img create -f qcow2 debian-3607-aarch64.qcow2 32G

# download debian installer
wget http://ftp.au.debian.org/debian/dists/bullseye/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz
wget http://ftp.au.debian.org/debian/dists/bullseye/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux
wget http://ftp.au.debian.org/debian/dists/bullseye/main/installer-arm64/current/images/netboot/mini.iso

#  start and follow Debian installer

qemu-system-aarch64 \
   -M virt \
   -cpu cortex-a53 \
   -m 4G \
   -kernel ./linux \
   -initrd ./initrd.gz \
   -hda debian-3607-aarch64.qcow2 \
   -append "console=ttyAMA0" \
   -drive file=mini.iso,id=cdrom,if=none,media=cdrom \
   -device virtio-scsi-device -device scsi-cd,drive=cdrom \
   -nographic -no-reboot
image

Start a docker shell into guestfish container: docker run -it --rm -v $PWD:/root/$PWD --entrypoint bash curator/guestfish

cd /root/Users/ivanitskiy/dev/aarm64/

virt-ls -a debian-3607-aarch64.qcow2 /boot/
System.map-5.10.0-26-arm64
System.map-5.10.0-27-arm64
config-5.10.0-26-arm64
config-5.10.0-27-arm64
initrd.img
initrd.img-5.10.0-26-arm64
initrd.img-5.10.0-27-arm64
initrd.img.old
lost+found
vmlinuz
vmlinuz-5.10.0-26-arm64
vmlinuz-5.10.0-27-arm64
vmlinuz.old

virt-copy-out -a debian-3607-aarch64.qcow2 /boot/vmlinuz-5.10.0-27-arm64 /boot/initrd.img-5.10.0-27-arm64 .

now you have your files read to start a VM

qemu-system-aarch64 \
   -M virt \
   -cpu cortex-a53 \
   -m 4G \
   -kernel ./vmlinuz-5.10.0-27-arm64 \
   -append "root=/dev/vda2 console=ttyAMA0" \
   -initrd ./initrd.img-5.10.0-27-arm64 \
   -drive if=virtio,file=debian-3607-aarch64.qcow2,format=qcow2,id=hd \
   -net user,hostfwd=tcp::10022-:22 -net nic \
   -device intel-hda -device hda-duplex -nographic

when started you can from your host use ssh: ssh -Y max@localhost -p 10022

uname -a
Linux debian 5.10.0-27-arm64 #1 SMP Debian 5.10.205-2 (2023-12-31) aarch64 GNU/Linux


cat /proc/cpuinfo
processor	: 0
BogoMIPS	: 125.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment