Skip to contentSkip to conversation

runqemu: avoid overridden user input for bootparams

PATCH In review Dmitry Rozhkov 2 participants 3 messages Feb 21, 2017 – Feb 28, 2017

lore
Share & tools
lore
#0 lore raw

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
index d74f252..8899cbb 100755
@@ -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
#1 lore raw
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.
#2 lore raw
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]: Error

changing
      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