runqemu: avoid overridden user input for bootparams
PATCH 1/1 runqemu: avoid overridden user input for bootparams
Currently runqemu hardcodes the "ip=" kernel boot parameter when configuring QEMU to use tap or slirp networking. This makes the guest system to have a network interface pre-configured by kernel and causes systemd to fail renaming the interface to whatever pleases it:
Feb 21 10:10:20 intel-corei7-64 systemd-udevd[201]: Error changing
net interface name 'eth0' to 'enp0s3': Device or resource busy,Always append user input for kernel boot params after the ones added by the script. This way user input has priority over runqemu's default params.
--- scripts/runqemu | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
scripts/runqemu +5 -2
@@ -180,6 +180,7 @@ class BaseConfig(object): self.kernel = '' self.kernel_cmdline = '' self.kernel_cmdline_script = '' + self.bootparams = '' self.dtb = '' self.fstype = '' self.kvm_enabled = False
@@ -400,7 +401,7 @@ class BaseConfig(object): elif arg.startswith('qemuparams='): self.qemu_opt_script += ' %s' % arg[len('qemuparams='):] elif arg.startswith('bootparams='): - self.kernel_cmdline_script += ' %s' % arg[len('bootparams='):] + self.bootparams = arg[len('bootparams='):] elif os.path.exists(arg) or (re.search(':', arg) and re.search('/', arg)): self.check_arg_path(os.path.abspath(arg)) elif re.search('-image-', arg):
@@ -1040,7 +1041,9 @@ class BaseConfig(object): def start_qemu(self): if self.kernel: - kernel_opts = "-kernel %s -append '%s %s %s'" % (self.kernel, self.kernel_cmdline, self.kernel_cmdline_script, self.get('QB_KERNEL_CMDLINE_APPEND')) + kernel_opts = "-kernel %s -append '%s %s %s %s'" % (self.kernel, self.kernel_cmdline, + self.kernel_cmdline_script, self.get('QB_KERNEL_CMDLINE_APPEND'), + self.bootparams) if self.dtb: kernel_opts += " -dtb %s" % self.dtb else:
Signature · 1 line
2.7.4
Quoted 6 lines · Dmitry Rozhkov
Currently runqemu hardcodes the "ip=" kernel boot parameter when configuring QEMU to use tap or slirp networking. This makes the guest system to have a network interface pre-configured by kernel and causes systemd to fail renaming the interface to whatever pleases it:
Quoted 6 lines
Feb 21 10:10:20 intel-corei7-64 systemd-udevd[201]: Error changing net interface name 'eth0' to 'enp0s3': Device or resource busy,Always append user input for kernel boot params after the ones added by the script. This way user input has priority over runqemu's default params.
Presumably the user's bootparams then would include "ip="?
Either way, the change looks good to me. I did something similar for the qemu parameters in "runqemu: let command line parameters override defaults".
Signature · 6 lines
Best Regards, Patrick Ohly The content of this message is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak on behalf of Intel on this matter.
Quoted 13 lines · Patrick Ohly
Quoted 12 lines · Dmitry Rozhkov
Currently runqemu hardcodes the "ip=" kernel boot parameter when configuring QEMU to use tap or slirp networking. This makes the guest system to have a network interface pre-configured by kernel and causes systemd to fail renaming the interface to whatever pleases it:
Feb 21 10:10:20 intel-corei7-64 systemd-udevd[201]: Errorchanging
net interface name 'eth0' to 'enp0s3': Device or resource busy,
Quoted 6 lines
Quoted 4 lines
Always append user input for kernel boot params after the ones added by the script. This way user input has priority over runqemu's
default params.Presumably the user's bootparams then would include "ip="?
Yes, exactly that. "ip=" in the user's bootparams is the input that shouldn't be ignored.
Quoted 5 lines
Either way, the change looks good to me. I did something similar for the
qemu parameters in "runqemu: let command line parameters override defaults".
BR,
Dmitry