qfw command

Synopsis

qfw list
qfw cpus
qfw load [kernel_addr [initrd_addr]]

Description

The qfw command is used to retrieve information from the QEMU firmware.

The qfw list sub-command displays the QEMU firmware files.

The qfw cpus sub-command displays the available CPUs.

The qfw load command is used to load a kernel and an initial RAM disk.

kernel_addr

address to which the file specified by the -kernel parameter of QEMU shall be loaded. Defaults to environment variable loadaddr and further to the value of CONFIG_SYS_LOAD_ADDR.

initrd_addr

address to which the file specified by the -initrd parameter of QEMU shall be loaded. Defaults to environment variable ramdiskaddr and further to the value of CFG_RAMDISK_ADDR.

Examples

QEMU firmware files are listed via the qfw list command:

=> qfw list
00000000 bios-geometry
00000000 bootorder
000f0060 etc/acpi/rsdp
bed14040 etc/acpi/tables
00000000 etc/boot-fail-wait
00000000 etc/e820
00000000 etc/smbios/smbios-anchor
00000000 etc/smbios/smbios-tables
00000000 etc/system-states
00000000 etc/table-loader
00000000 etc/tpm/log
00000000 genroms/kvmvapic.bin

Where an address is shown, it indicates where the data is available for inspection, e.g. using the md command.

The available CPUs can be shown via the qfw cpus command:

=> qfw cpu
2 cpu(s) online

The -kernel and -initrd parameters allow to specify a kernel and an initial RAM disk for QEMU:

$ qemu-system-x86_64 -machine pc-i440fx-2.5 -bios u-boot.rom -m 1G \
    -nographic -kernel vmlinuz -initrd initrd

Now the kernel and the initial RAM disk can be loaded to the U-Boot memory via the qfw load command and booted thereafter.

=> qfw load ${kernel_addr_r} ${ramdisk_addr_r}
loading kernel to address 0000000001000000 size 5048f0 initrd 0000000004000000 size 3c94891
=> zboot 1000000 5048f0 4000000 3c94891
Valid Boot Flag
Magic signature found
Linux kernel version 4.19.0-14-amd64 (debian-kernel@lists.debian.org) #1 SMP Debian 4.19.171-2 (2021-01-30)
Building boot_params at 0x00090000
Loading bzImage at address 100000 (5260160 bytes)

Configuration

The qfw command is only available if CONFIG_CMD_QFW=y.