Description of problem: Please stop adding ksdevice=bootif to the default kernel command line args for modern operating systems (RHEL8 and Fedora 30 and newer). It was deprecated over 7 years ago[0] and now it's causing Anaconda to fail in Fedora 30 with: Traceback (most recent call last): File "/sbin/anaconda", line 593, in <module> initialize_network() File "/usr/lib64/python3.7/site-packages/pyanaconda/network.py", line 313, in initialize_network run_network_initialization_task(network_proxy.ApplyKickstartWithTask()) File "/usr/lib64/python3.7/site-packages/pyanaconda/network.py", line 292, in run_network_initialization_task sync_run_task(task_proxy) File "/usr/lib64/python3.7/site-packages/pyanaconda/modules/common/task/__init__.py", line 60, in sync_run_task task_proxy.Finish() File "/usr/lib/python3.7/site-packages/pydbus/proxy_method.py", line 102, in __call__ raise error pyanaconda.modules.common.errors.DBusError: 'NoneType' object has no attribute 'upper' [0] https://github.com/rhinstaller/anaconda/commit/8557cd6f69f117e413caa7bf9b364f39a07312a5#diff-5843d5aac5c7c4f61598495623ce4ffeR21 Version-Release number of selected component (if applicable): Beaker 26.4 How reproducible: always Steps to Reproduce: 1. try to kickstart Fedora 30 aarch64 Actual results: kickstart aborts with the above traceback Expected results: kickstart proceeds normally Additional info:
Paul Bunyan pointed out to me that one can remove this default kernel command line arg by setting kernel_options="!ksdevice=bootif" in the Beaker job. I didn't know of this trick; I wish I had learned this 10 years ago! :)
The Anaconda crash has been reported in bug 1699091. Nevertheless, we should fix Beaker to just stop adding this arg since it's been deprecated for a long time.
(In reply to Jeff Bastian from comment #2) > kernel_options="!ksdevice=bootif" > > I didn't know of this trick; I wish I had learned this 10 years ago! :) See bug 1711063 for a request to add this to the official documentation.
Changing priority and severity since anaconda fixed it. Jeff, according to RHEL7 documentation, you're right but what about RHEL6?
Good question. Let's see... RHEL6 was forked from Fedora 12 in November 2010 which means its version of Anaconda still supported ksdevice=bootif. Thus Beaker should only drop ksdevice=bootif as a default for RHEL7 and newer. Just to be sure, I checked the Anaconda source for RHEL6 and it is still supported: https://github.com/rhinstaller/anaconda/blob/rhel6-branch/docs/command-line.txt#L77 https://github.com/rhinstaller/anaconda/blob/rhel6-branch/kickstart.py#L697 https://github.com/rhinstaller/anaconda/blob/rhel6-branch/network.py#L351 https://github.com/rhinstaller/anaconda/blob/rhel6-branch/loader/net.c#L2068
Hello, We've just hit this issue too. Although according to the documentation [1] this option doesn't do anything starting with RHEL-7 under some circumstances causes some issues with network configuration when BOOTIF= is not present on kernel cmdline. We've hit this while testing on ppc64 systems driverdisks which are reloading NIC drivers and anaconda is forced to reconfigure network. But the ppc64 systems don't use a bootloader which would add BOOTIF= on kernel cmdline (x86_64 systems with pxelinux are fine). Please note that this arg is also added for s390x systems where it doesn't make any sense since those systems have statically configured network. We are aware of the !arg and we've deployed this workaround in our driverdisks tests, so this is not a high priority for us but having this option present on the kernel command line makes it harder when reproducing network bugs since this option is no longer commonly used. [1] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/chap-anaconda-boot-options#sect-boot-options-deprecated-removed
Because of support for RHEL5 and RHEL6, changing the default for all version will be tricky. I'd recommend you align with Labs and change the defaults for newer RHEL version under distro trees > install-options. Eq. If you change distro defaults for 8.1.0 to !ksdevice=bootif, bootif will never show. If a user needs it, it can be turned on on system or job level. But alignment with other users is necessary here (I actually doubt anybody checks needs bootif as default since it has been deprecated). Take this as a better workaround, not a solution to this ticket. We will work on something.
You can define the value of ksdevice. Default ksdevice value will be overwritten
I've found that the workaround unfortunately doesn't work :( The problem is that !ksdevice=bootif not only removes ksdevice=bootif from kernel cmdline, but in fact any ksdevice=... option. In our case this is something what we cannot resolve, we need ksdevice with correct value (which is set in the install options) or no ksdevice (on systems which boot from network without ksdevice specification just fine). In our case the ksdevice=bootif must not be there.
The machine you mentioned has ksdevice set to 0e:02:48:ab:e3:04. I don't see any reason why you should remove it.
(In reply to Martin Styk 🤦♂️ from comment #12) > The machine you mentioned has ksdevice set to 0e:02:48:ab:e3:04. > I don't see any reason why you should remove it. Ok, I'll try to start from beginning :) I've found out that anaconda has issues with (deprecated) ksdevice=bootif under certain configurations (reconfiguring network in initial ramdisk). The ksdevice=bootif is added by beaker by default which can be overriden in the install_options if the system needs to have ksdevice=$MAC_ADDRESS set. So my attempt was to have a beaker job removing the ksdevice altogether (by kernel_options="!ksdevice") but then the systems which have ksdevice=$MAC_ADDRESS set stopped working because the network wasn't correctly configured (the reason why the specific ksdevice was configured for the host). I tried using kernel_options="!ksdevice=bootif" hoping that only and only ksdevice=bootif will be removed from kernel cmdline and if the host has some other value of ksdevice set it will be kept but that didn't happen. The kernel_options="!ksdevice=bootif" removes ksdevice=$MAC_ADDRESS which again leads to system not having the network correctly configured. I hope it makes sense now. I'm trying to remove ksdevice=bootif but have any other value (if defined) still set.