Hi Paolo,
While this (option 2) partially works, it will still search for
/nonexistent/libexec/qemu-bridge-helper for example so seems that some
paths are still absolute and some relative.
To explain, what we are expecting that we compile one binary with the
relevant options, test that and then it goes into production. If we
compile with --prefix=/usr (it's final resting place will be /usr/bin)
then everything works as expected once it is in production (since
/usr/share/qemu, /usr/libexec, /etc/qemu exists as expected). However
when we are testing the binary in a directory /root/qemu/5.2.0 with
--prefix=/usr it breaks since it converts the firmware and bios paths to
/root/qemu/5.2.0/../share/qemu. This means we need to recompile twice
with relevant prefixes since if i use --prefix=/nonexistent then we
can't find the qemu-bridge-helper when the binary goes into production.
It would be nicer with the relocatable binary took some fixed paths from
/etc/qemu.conf for the bridge-helper, firmware, bios, qemu-ifup/down.
thanks
Dave
On 12/01/2021 18:48, Paolo Bonzini wrote:
On 12/01/21 15:05, Dave wrote:
Is seem that absolute firmwarepath compilation option is converted to
relocatable in 5.2.0 qemu.
# QEMU configure log Tue 12 Jan 14:46:41 GST 2021
# Configured with: '../configure' '--prefix=/usr'
'--sysconfdir=/etc/qemu' '--disable-bochs'
'*--firmwarepath=/usr/share/qemu:/usr/share/qemu-firmware*'
#
Yes, all paths within the prefix are relocated. The workaround is
simply to configure the intended prefix with configure:
./configure --prefix=/root/qemu ...
or if you don't know the prefix:
./configure --prefix=/nonexistent ...
Because /usr/share/qemu and /usr/share/qemu-firmware are outside /usr,
they will be treated as absolute just like /etc/qemu.
Thanks,
Paolo
And trying to run the executable
bash-5.1# ./qemu-system-x86_64
qemu: could not load PC BIOS 'bios-256k.bin'
If i print out the resultant binary paths
bash-5.1# ./qemu-system-x86_64 -L help
/root/qemu/../share/qemu
/root/qemu/../share/qemu-firmware
So there is no way to have a absolute path for firmware /bios and all
qemu's that we test need to be at the right directory nesting to find
firmware, bios etc or else they all need their own duplicate firmware
files. Firmware path needs to honor the absolute paths i believe.