Skip to content

Instantly share code, notes, and snippets.

@penglei
Last active April 5, 2023 09:07
Show Gist options
  • Save penglei/23dc4d2b0a768b953ec7eb64694ed0c3 to your computer and use it in GitHub Desktop.
Save penglei/23dc4d2b0a768b953ec7eb64694ed0c3 to your computer and use it in GitHub Desktop.
run qemu-aarch64 on macOS
#!/bin/bash
#qemu-img create -f qcow2 disk.qcow2 20G
#qemu-img create -f qcow2 varstore.img 128M
debian_iso=debian-9.6.0-arm64-xfce-CD-1.iso
qemu-system-aarch64 -smp cpus=6 -M virt -cpu max -m 2G -nographic \
-drive file=QEMU_EFI.img,if=pflash,format=raw \
-drive file=varstore.img,if=pflash \
-drive file=disk.qcow2,if=virtio \
-drive file=$debian_iso,if=virtio,format=raw
#!/bin/bash
function create() {
ifconfig bridge1 create
ifconfig bridge1 192.168.100.1/24
sysctl -w net.inet.ip.forwarding=1
pfctl -F all
pfctl -f /opt/etc/pfctl-nat-config -e
}
FUNC=$(declare -f create)
sudo bash -c "$FUNC; create"
#!/bin/bash
#: /opt/bin/qemu-ifdown.sh
ifconfig bridge1 deletem $1
#!/bin/bash
#: /opt/bin/qemu-ifup.sh
ifconfig bridge1 addm $1
#!/bin/bash
#run create-network.sh manually
DISPLAY="-daemonize -serial telnet:localhost:7000,server,nowait,nodelay -monitor telnet:localhost:7100,server,nowait,nodelay -vnc :0"
sudo qemu-system-aarch64 -smp cpus=6 -M virt -cpu max -m 2G $DISPLAY\
-pidfile $pidfile \
-drive file=QEMU_EFI.img,if=pflash,format=raw \
-drive file=varstore.img,if=pflash \
-drive file=disk.qcow2,if=virtio \
-netdev tap,id=my_vnet_2,br=/dev/bridge1,script=/opt/bin/qemu-ifup.sh,downscript=/opt/bin/qemu-ifdown.sh \
-device e1000,netdev=my_vnet_2,mac=52:54:00:12:34:56
@olegvg
Copy link

olegvg commented Jun 26, 2020

hi there! penglei, could you also publish gist contained /opt/etc/pfctl-nat-config ?

@markst
Copy link

markst commented Mar 30, 2023

Wonder why I'm getting:

could not open /dev/tap0: No such file or directory

@penglei
Copy link
Author

penglei commented Apr 5, 2023

Wonder why I'm getting:

could not open /dev/tap0: No such file or directory
tuntaposx has been inactive.

These scripts are a bit outdated and were used for testing on an x86_64-darwin system in the past. With the upgrade of macOS versions, I think it is necessary to look for a new network solutions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment