mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
7198185e3a
Now that the armvirt target supports real hardware, not just
VMs, thanks to the addition of EFI, rename it to something
more appropriate.
'armsr' (Arm SystemReady) was chosen after the name of
the Arm standards program.
The 32 and 64 bit targets have also been renamed
armv7 and armv8 respectively, to allow future profiles
where required (such as armv9).
See https://developer.arm.com/documentation/102858/0100/Introduction
for more information.
Signed-off-by: Mathew McBride <matt@traverse.com.au>
(23.05 version of commit 40b02a2301
)
77 lines
2.8 KiB
Plaintext
77 lines
2.8 KiB
Plaintext
This target generates images that can be used on ARM machines with EFI
|
|
support (e.g EDKII/TianoCore or U-Boot with bootefi).
|
|
|
|
There are two subtargets:
|
|
- armv7 for 32-bit machines
|
|
- armv8 for 64-bit machines
|
|
|
|
The kernel and filesystem images can also be used directly by QEMU:
|
|
|
|
Run with qemu-system-arm
|
|
|
|
# boot with initramfs embedded in
|
|
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-initramfs-kernel.bin
|
|
|
|
# boot with accel=kvm
|
|
qemu-system-arm -nographic -M virt,accel=kvm -cpu host -m 64 -kernel
|
|
openwrt-armsr-armv7-generic-initramfs-kernel.bin
|
|
|
|
# boot with a separate rootfs
|
|
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-kernel.bin \
|
|
-drive file=openwrt-armsr-armv7-generic-ext4-rootfs.img,format=raw,if=virtio -append 'root=/dev/vda rootwait'
|
|
|
|
# boot with local dir as rootfs
|
|
qemu-system-arm -nographic -M virt -m 64 -kernel openwrt-armsr-armv7-generic-kernel.bin \
|
|
-fsdev local,id=rootdev,path=root-armsr/,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
|
|
lkvm run -k openwrt-armsr-armv7-zImage -i openwrt-armsr-armv7-rootfs.cpio --name armsr0
|
|
|
|
# start with virtio-9p rootfs
|
|
lkvm run -k openwrt-armsr-armv7-zImage -d root-armsr/
|
|
|
|
# stop "armsr0"
|
|
lkvm stop --name armsr0
|
|
|
|
# stop all
|
|
lkvm stop --all
|
|
|
|
The multi-platform ARMv8 target can be used with QEMU:
|
|
|
|
qemu-system-aarch64 -machine virt -cpu cortex-a57 -nographic \
|
|
-kernel openwrt-armsr-armv8-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/armsr/armv7/openwrt-armsr-armv7-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/armsr/armv8/openwrt-armsr-armv8-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/
|