2022-01-19 03:24:45 +00:00
|
|
|
This target generates images that can be used on ARM machines with EFI
|
|
|
|
support (e.g EDKII/TianoCore or U-Boot with bootefi).
|
|
|
|
|
|
|
|
The kernel and filesystem images can also be used directly by QEMU:
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
|
|
|
|
Run with qemu-system-arm
|
|
|
|
|
|
|
|
# boot with initramfs embedded in
|
2022-01-19 03:24:45 +00:00
|
|
|
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armvirt-32-generic-initramfs-kernel.bin
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
|
|
|
|
# boot with accel=kvm
|
armvirt: merge arm64 as subtarget 64
Original armvirt target is now subtarget 32. Other than that the built
result should remain the same as before
Besides old features already available with arm64, the new armvirt/64
subtarget will also have those features originally enabled for
armvirt/32 with commit 44ecfc2 ("armvirt: new target")
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2017-04-18 12:59:52 +00:00
|
|
|
qemu-system-arm -nographic -M virt,accel=kvm -cpu host -m 64 -kernel
|
2022-01-19 03:24:45 +00:00
|
|
|
openwrt-armvirt-32-generic-initramfs-kernel.bin
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
|
|
|
|
# boot with a separate rootfs
|
2022-01-19 03:24:45 +00:00
|
|
|
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armvirt-32-generic-kernel.bin \
|
|
|
|
-drive file=openwrt-armvirt-32-generic-ext4-rootfs.img,format=raw,if=virtio -append 'root=/dev/vda rootwait'
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
|
|
|
|
# boot with local dir as rootfs
|
2022-01-19 03:24:45 +00:00
|
|
|
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armvirt-32-generic-kernel.bin \
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
-fsdev local,id=rootdev,path=root-armvirt/,security_model=none \
|
|
|
|
-device virtio-9p-pci,fsdev=rootdev,mount_tag=/dev/root \
|
|
|
|
-append 'rootflags=trans=virtio,version=9p2000.L,cache=loose rootfstype=9p'
|
|
|
|
|
|
|
|
Run with kvmtool
|
|
|
|
|
|
|
|
# start a named machine
|
2017-11-07 08:45:52 +00:00
|
|
|
lkvm run -k openwrt-armvirt-32-zImage -i openwrt-armvirt-32-rootfs.cpio --name armvirt0
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
|
|
|
|
# start with virtio-9p rootfs
|
2017-11-07 08:45:52 +00:00
|
|
|
lkvm run -k openwrt-armvirt-32-zImage -d root-armvirt/
|
armvirt: new target
An ARM Cortex-A15 machine provided by QEMU.
Kernel drivers enabled:
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- neon, vfp extensions support (otherwise userland will fail with
illegal instruction signal (code 0x00000004))
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-12-08 15:21:30 +00:00
|
|
|
|
|
|
|
# stop "armvirt0"
|
|
|
|
lkvm stop --name armvirt0
|
|
|
|
|
|
|
|
# stop all
|
|
|
|
lkvm stop --all
|
armvirt: merge arm64 as subtarget 64
Original armvirt target is now subtarget 32. Other than that the built
result should remain the same as before
Besides old features already available with arm64, the new armvirt/64
subtarget will also have those features originally enabled for
armvirt/32 with commit 44ecfc2 ("armvirt: new target")
- pl011, uart
- pl031, rtc
- pl061, gpio
- pci-host-generic
- virtio_{mmio,pci,net,blk,scsi,9p,console,balloon}
- smp with NR_CPUS=4
- cpu-hotplug
- ext4
- DEBUG_BUGVERBOSE for debug purposes
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2017-04-18 12:59:52 +00:00
|
|
|
|
|
|
|
The multi-platform ARMv8 target can be used with QEMU:
|
|
|
|
|
|
|
|
qemu-system-aarch64 -machine virt -cpu cortex-a57 -nographic \
|
2022-01-19 03:24:45 +00:00
|
|
|
-kernel openwrt-armvirt-64-generic-initramfs-kernel.bin \
|
|
|
|
|
|
|
|
With a EDKII or U-Boot binary for the QEMU ARM virtual machines, you can use these
|
|
|
|
images in EFI mode:
|
|
|
|
|
|
|
|
32-bit:
|
|
|
|
gunzip -c bin/targets/armvirt/32/openwrt-armvirt-32-generic-ext4-combined.img.gz > openwrt-arm-32.img
|
|
|
|
qemu-system-arm -nographic \
|
|
|
|
-cpu cortex-a15 -machine virt \
|
|
|
|
-bios QEMU_EFI_32.fd \
|
|
|
|
-smp 1 -m 1024 \
|
|
|
|
-device virtio-rng-pci \
|
|
|
|
-drive file=openwrt-arm-32.img,format=raw,index=0,media=disk \
|
|
|
|
-netdev user,id=testlan -net nic,netdev=testlan \
|
|
|
|
-netdev user,id=testwan -net nic,netdev=testwan
|
|
|
|
|
|
|
|
64-bit:
|
|
|
|
gunzip -c bin/targets/armvirt/64/openwrt-armvirt-64-generic-ext4-combined.img.gz > openwrt-arm-64.img
|
|
|
|
qemu-system-aarch64 -nographic \
|
|
|
|
-cpu cortex-a53 -machine virt \
|
|
|
|
-bios QEMU_EFI_64.fd \
|
|
|
|
-smp 1 -m 1024 \
|
|
|
|
-device virtio-rng-pci \
|
|
|
|
-drive file=openwrt-arm-64.img,format=raw,index=0,media=disk \
|
|
|
|
-netdev user,id=testlan -net nic,netdev=testlan \
|
|
|
|
-netdev user,id=testwan -net nic,netdev=testwan
|
|
|
|
|
|
|
|
One can find EFI/BIOS binaries from:
|
|
|
|
- Compile mainline U-Boot for the QEMU ARM virtual machine (qemu_arm_defconfig/qemu_arm64_defconfig)
|
|
|
|
- From distribution packages (such as qemu-efi-arm and qemu-efi-aarch64 in Debian)
|
|
|
|
- Community builds, like retrage/edk2-nightly: https://retrage.github.io/edk2-nightly/
|