参考https://gist.github.com/oznu/ac9efae7c24fd1f37f1d933254587aa4
首先下载image, https://cloud-images.ubuntu.com/
本文以 ubuntu-16.04-server-cloudimg-arm64-uefi1.img为例。
wget ubuntu-16.04-server-cloudimg-arm64-uefi1.imge。这里把密码改为root,用户名是ubuntu。
sudo apt-get install cloud-image-utils
cat >user-data <
制作uefi flash。
wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd
dd if=/dev/zero of=flash0.img bs=1m count=64
dd if=QEMU_EFI.fd of=flash0.img conv=notrunc
dd if=/dev/zero of=flash1.img bs=1m count=64
启动qemu
qemu-system-aarch64 \
-machine virt-3.1 \
-smp 8 \
-m 1G,slots=2,maxmem=3G \
-enable-kvm \
-cpu host \
-nographic \
-drive if=none,file=ubuntu-16.04-server-cloudimg-arm64-uefi1.img,id=hd0 \
-monitor unix:qemu-monitor-socket,server,nowait \
-device virtio-blk-device,drive=hd0 \
-qmp unix:./qmp-sock,server,nowait \
-qmp tcp:localhost:6666,server,nowait \
-device pcie-pci-bridge,bus=pcie.0,id=pcie-bridge-0,msi=on,x-pcie-lnksta-dllla=on,addr=2,romfile= \
-device pci-bridge,bus=pcie-bridge-0,id=pci.0,shpc=on,msi=on,chassis_nr=1,addr=2 \
-pflash flash0.img \
-pflash flash1.img \
-netdev user,id=user0 -device virtio-net-device,netdev=user0 \
使用ubuntu:root登录
为了能够正常上网,需要在虚拟机里配一下dns。
如果启动的时候报出qemu-system-aarch64: Parameter 'type' expects a netdev backend type,这是qemu-binary或者相关配置的错误,需要重新编译,但是其中的配置我还不清楚。一般使用apt install的就可以。
如果没有进入系统,可能是uefi有问题,也可能是image被损坏。请参考开头的链接,重新下载image,使用ssh的方式登录,不要修改image的密码。