i am using incus 6.17 on flatcat 4426.1.x with qemu 9.2.3 and wanted to start some older VM which i migrated from vmware with incus-migrate.
I deactivated secure boot and enabled CSM to get into non-UEFI mode. Problem was that the harddrive was not found on boot. I tried a bit with the commandline and found out that it seems to be a problem with the used bios shipped with qemu (seems to be some 128k 1.16.3 version). I tested with seabios 1.16.3 /256k version which is symlinked into /usr/share/qemu/bios-256k.bin.
Still new to incus i thought that setting the raw qemu commandline is not the best option so i tried to add:
to the configuration yaml which then overrides the if=”pflash” section called “Firmware (read only)”.
This seems to work but i am not sure if there isn’t a smoother way just to select the bios filename? Regarding the [drive][0] syntax to find the first drive section in the config doesn’t feel that safe is other devices may be added later on.
Ah, maybe something to bring up with your packager?
For the Zabbly packages which is also what we consume in IncusOS, we build our own seabios so we have a bit more control on the hardware it supports.
So effectively a 256k build but very much targeted at the hardware we care about.
Incus can also be tweaked to try to prefer specific firmware files, but that logic isn’t really distro-specific, so we’d want to make sure that bios-256k.bin is a good choice across all distros and won’t end up regressing some folks.
As you can see, that’s where bios.bin is being picked for those who have /usr/share/qemu on their system. We could easily add a higher priority entry in there for bios-256k.bin so long as we’re pretty sure that all distros which have a /usr/share/qemu and happen to have a bios-256k.bin have that firmware be at least as compatible with Incus as their bios.bin so we avoid regressions.
to clarify, the “packager” would be maybe than be me.
As mentioned, i am using flatcar Linux (coreos fork).
Both have Gentoo as it’s base.
Officially flatcar does not support qemu out of the box, incus only as systemd sysext but there is a well documented “SDK” which is just their own CI/CD image builder with a nice central update manager called Nebraska.
Whatever, I just added the qemu and additional ebuilds to the SDK needed from the “official” gentoo portage, so it’s all based on the core gentoo packages.
The seabios ebuild adds the symlink to give the “full” bios available in the /usr/share/qemu directory.
I searched around the incus code a bit and found your mentioned lines but i was in hope that there is some general “qemu.bios” override parameter which then can override these default settings via incus profile (filename in /usr/share/qemu) or absolute path, whatever fits the need.
I don’t think that adding another name to the incus bios search logic would be a good idea, also there are a bunch of other possible bios binaries (on gentoo in /usr/share/qemu) available maybe for really specific needs.
Personally I would just prefer some
qemu.bios = “bios-256k.bin”
override available.
Otherwise If that’s the outcome and incus doesn’t (yet) provide such setting i have to leave the raw qemu fix or patch incus for the file or replace the default /usr/share/bios.bin on image creation.
Just wanted to know what the incus best practice would be here