OVMF/QEMU shell based unit tests and writing to a virtual disk
Laszlo and others familiar with QEMU,
I am trying to write automation that boots QEMU/OVMF and then runs EFI applications and those efi applications then use the UEFI shell apis to write back to the disk their state. I am seeing very inconsistent results with sometimes it working fine while other times the disk contents are invalid. If i run multiple tests it seems like the first two work while the 3rd seems to start failing but overall it seems random.
Disk contents corrupted but present.
Disk contents wrong size (short).
Files that show written in UEFI shell never show up on host.
I am trying to determine if this is a known limitation with QEMU or a bug i need to track down in the unit test code.
This is on a Windows 10 x64 host. I am running current 5.1 version of QEMU.
My script creates a folder in the Windows NTFS file system. Copies the EFI executables and startup.nsh files to it. Then starts QEMU with the following additional parameter.
VirtualDrive is the Windows file path of the said mentioned folder.
If interested you should be able to reproduce the results by pulling my branch and/or you can review the above.
You can see the operations here:
My Branch: https://github.com/spbrogan/mu_tiano_platforms/tree/personal/sebrogan/shellunittests
Or if interested you can reproduce it by following steps defined here:
and more details here
After building qemu with the right parameters for your environment you can run <your stuart_build cmd> --flashonly MARK_STARTUP_NSH=TRUE RUN_UNIT_TESTS=TRUE
For example in my environment it looks like
stuart_build -c Platforms\QemuQ35Pkg\PlatformBuild.py TOOL_CHAIN_TAG=VS2019 --flashonly RUN_UNIT_TESTS=TRUE MAKE_STARTUP_NSH=TRUE
Anyway if i recall correctly last year when we talked briefly about automation there was some concern that this would happen. Any information and/or ideas would be greatly appreciated.