'make qemu share=<dir>' (or share="tag=dir ...") starts one virtiofsd per share and
adds the matching vhost-user-fs devices, so the guest sees /scheme/virtio-fsd.<tag>.
podman_bootstrap.sh installs virtiofsd, and the selftest recipe builds from the base source.
Signed-off-by: MJ Pooladkhay <mj@pooladkhay.com>
As best I can tell, on aarch64 and riscv64gc, the UEFI firmware is *required* for Redox to run. If not found, qemu will still run, but will get stuck.
It's better to error out explicitly and early.
This does not appear to be the case on x86_64 where skipping the firmware load still appears to boot Redox successfully, hence I didn't add the error there.
The /run/libvirt/nix-ovmf/* paths cannot be relied upon to exist. As far as I can tell, this is only available on NixOS with libvirtd enabled.
On the other hand, on any Nix platform, UEFI firmware binaries can be found relative to the the qemu binary (including when using nix shell).
It boots faster and more reliable than SeaBIOS. And in practice you are
unlikely to use BIOS on real hardware if you have an x86_64 capable CPU
anyway.
* Make gpu=no work on arm64 and riscv64
* Register gpu's with the firmware as vga card on x86 where possible
* Add a virtio-gl option for virtio-gpu with OpenGL support (no support
on the driver side yet)
* Support ramfb on x86
In Debian Trixie OVMF has moved to a different location. In addition the
bootrom of the network adapters no longer contains iPXE, so we need to
manually chainload it (make sure to install the ipxe package).
The old config would create two separate VGA compatible graphics
adapters. Redox currently only supports this when the firmware
initializes both graphics adapters as boot framebuffers. Only UEFI
supports this however. Using a single multi-head virtio-gpu graphics
adapter makes it work on BIOS too.
This architecture is different from x86/aarch because its rust triplet (riscv64gc-...) differs from gcc/llvm/binutils triplet (more general riscv64-...). Therefore the build scripts have to bridge that mismatch.
This introduces new build-time environment variable GNU_TARGET which corresponds to a target used by C world utilities whereas existing TARGET now describes rust target.
A command like `make qemu_nvme` will become `make qemu disk=nvme` with
this change.
Also add support for selecting a virtio-blk disk and remove the
*_no_build targets as they didn't do anything different from the regular
targets anyway.