| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- Introduction
- ============
- The qemu_aarch64_ebbr_defconfig is meant to illustrate some aspects of the Arm
- EBBR specification[1] and the Arm SystemReady IR[2] compliance program.
- It allows building an AArch64 U-Boot based firmware implementing the subset of
- UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to run
- on Qemu.
- Building
- ========
- $ make qemu_aarch64_ebbr_defconfig
- $ make
- Generated files under output/images:
- * flash.bin: A firmware image comprising TF-A, OP-TEE and the U-Boot bootloader.
- * disk.img: An OS disk image comprising the GRUB bootloader, the Linux kernel
- and the root filesystem.
- Running under Qemu
- ==================
- Run the emulation with:
- qemu-system-aarch64 \
- -M virt,secure=on,acpi=off \
- -bios output/images/flash.bin \
- -cpu cortex-a53 \
- -device virtio-blk-device,drive=hd0 \
- -device virtio-net-device,netdev=eth0 \
- -device virtio-rng-device,rng=rng0 \
- -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \
- -m 2048 \
- -netdev user,id=eth0 \
- -nographic \
- -object rng-random,filename=/dev/urandom,id=rng0 \
- -rtc base=utc,clock=host \
- -smp 2 # qemu_aarch64_ebbr_defconfig
- The login prompt will appear in the terminal that started Qemu.
- Using the EBBR firmware to run another OS under Qemu
- ----------------------------------------------------
- It is possible to use the generated firmware binary to install or run another OS
- supporting the EBBR specification.
- To run another OS on emulation using a live or pre-installed image, use the same
- Qemu command line as for the generated OS but adapt the OS image path in the
- -drive stanza.
- The image generated by the aarch64_efi_defconfig or the Arm ACS-IR images[3] are
- examples of pre-installed OS images.
- To install another OS using an installer iso image, prepare a destination disk
- image first with:
- qemu-img create -f qcow2 disk.qcow2 10G
- Then run the OS installer iso image on emulation with:
- qemu-system-aarch64 \
- -M virt,secure=on,acpi=off \
- -bios output/images/flash.bin \
- -cpu cortex-a53 \
- -device virtio-blk-device,drive=hd1 \
- -device virtio-blk-device,drive=hd0 \
- -device virtio-net-device,netdev=eth0 \
- -device virtio-rng-device,rng=rng0 \
- -drive file=<iso>,if=none,format=raw,readonly=on,id=hd0 \
- -drive file=disk.qcow2,if=none,id=hd1 \
- -m 2048 \
- -netdev user,id=eth0 \
- -nographic \
- -object rng-random,filename=/dev/urandom,id=rng0 \
- -rtc base=utc,clock=host \
- -smp 2
- The installation medium will show up under the Linux OS installer as /dev/vda
- and the destination disk as /dev/vdb.
- To reboot into the installed OS, use the same Qemu command line as for the
- installation, but without the two stanzas
- referring to hd0.
- Linux distributions such as Debian, Fedora, openSUSE or Ubuntu provide an OS
- installer iso image.
- Miscellaneous
- =============
- This configuration is inspired by the qemu_aarch64_virt_defconfig, the
- aarch64_efi_defconfig and the Arm SystemReady IR IoT Integration, Test, and
- Certification Guide[4].
- Firmware update is currently not supported.
- [1]: https://github.com/ARM-software/ebbr
- [2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR
- [3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images
- [4]: https://developer.arm.com/documentation/DUI1101/latest/
|