ILD

install ubuntu arm64 to qemu
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2026-4-13 站点:Inside Linux Development

1 下载镜像

去官网下载一个iso镜像

https://cdimage.ubuntu.com/releases/noble/release/

https://cdimage.ubuntu.com/releases/noble/release/ubuntu-24.04.4-desktop-arm64.iso

这里还有很多已经安装好的镜像Preinstalled desktop image。


此外还有cloud image,好像是可以直接运行的image,某些例子,使用的是cloud image,例如:

https://cloud-images.ubuntu.com/releases/questing/release-20260401/


2 下载EFI引导固件

接着很重要的一点,需要一个efi固件,作为引导程序,当然使用uboot也可以。网上的例子用的是各种各样的efi版本。


1 如果是linux系统,有qemu-efi-aarch64这个包,可以使用apt安装

UEFI firmware for 64-bit ARM virtual machines

它提供了,AAVMF_CODE.fd,AAVMF_VARS.fd

windows版本的msys2没找到有这个包。

qemu-system-aarch64 \

  -M virt,gic-version=3 \

  -m 4096 \

  -smp 4 \

  -cpu max \

  -serial mon:stdio \

  -device virtio-gpu-pci \

  -device qemu-xhci \

  -device usb-kbd \

  -device usb-tablet \

  -drive if=pflash,format=raw,unit=0,file=/usr/share/AAVMF/AAVMF_CODE.fd,readonly=on \

  -drive if=pflash,format=raw,unit=1,file=AAVMF_VARS.fd \

  -drive if=none,file=disk,format=raw,id=VIRTIO1 \

  -device virtio-blk,drive=VIRTIO1,bootindex=1 \

  -drive if=none,file=ubuntu-live-server-arm64.iso,format=raw,readonly=on,id=VIRTIO2 \

  -device virtio-blk,drive=VIRTIO2,bootindex=2 \

  -net nic,model=virtio \

  -net user



2 linaro uefi,提供了QEMU_EFI.fd

https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/

qemu-system-aarch64 -m 2048 -cpu cortex-a72 -smp 4 -M virt -nographic 

-bios QEMU_EFI.fd 

-drive if=none,file=ubuntu-16.04-server-cloudimg-arm64-uefi1.img,id=hd0 

-device virtio-blk-device,drive=hd0 

-drive file=user-data.img,format=raw 

-device virtio-net-device,netdev=net0 

-netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0


3  edk2

windows qemu版本,mingw-w64-x86_64-qemu,本身携带了一些efi固件,在

/mingw64/share/qemu目录下面,很多例子用到的

edk2-x86_64-secure-code.fd

edk2-i386-vars.fd


3 安装

执行下面的命令:

truncate -s 16G disk

qemu-system-aarch64 \
  -M virt,gic-version=3 \
  -m 4096 \
  -smp 4 \
  -cpu max \
  -device virtio-gpu \
  -device qemu-xhci \
  -device usb-kbd \
  -device usb-tablet \
  -drive if=pflash,format=raw,unit=0,file=edk2-aarch64-code.fd,readonly=on \
  -drive if=pflash,format=raw,unit=1,file=edk2-arm-vars.fd \
  -drive if=none,file=disk,format=raw,id=VIRTIO1 \
  -device virtio-blk,drive=VIRTIO1,bootindex=1 \
  -drive if=none,file=ubuntu-24.04.4-desktop-arm64.iso,format=raw,readonly=on,id=VIRTIO2 \
  -device virtio-blk,drive=VIRTIO2,bootindex=2 \
  -nic user,id=NAT,model=virtio-net-pci,mac=02:00:00:00:00:01


参考4,网卡配置:




经过漫长的等待,可以进入,


运行速度很慢


4 运行Ubuntu

删除iso设备那两行即可


参考:

1 Install Ubuntu on QEMU (ARM64)

https://canonical-ubuntu-hardware-support.readthedocs-hosted.com/boards/how-to/ubuntu_supported/qemu-arm64/


2 arm64-on-win10.md

https://gist.github.com/billti/d904fd6124bf6f10ba2c1e3736f0f0f7


3 qemu: can't get efi firmware to work with qemu-system-x86_64

https://github.com/msys2/MINGW-packages/issues/9276


4 Using qemu-system-aarch64

https://ww2.coastal.edu/mmurphy2/oer/qemu/aarch64/


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.