Bug 1710993 - drop ksdevice=bootif default kernel command line arg
Summary: drop ksdevice=bootif default kernel command line arg
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Beaker
Classification: Retired
Component: general
Version: 26
Hardware: All
OS: Linux
low
low
Target Milestone: future_maint
Assignee: beaker-dev-list
QA Contact: tools-bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-05-16 17:53 UTC by Jeff Bastian
Modified: 2020-10-21 14:15 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-10-21 14:15:43 UTC
Embargoed:


Attachments (Terms of Use)

Description Jeff Bastian 2019-05-16 17:53:32 UTC
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:

Comment 2 Jeff Bastian 2019-05-16 19:37:30 UTC
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! :)

Comment 3 Jeff Bastian 2019-05-16 20:48:06 UTC
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.

Comment 4 Jeff Bastian 2019-05-16 21:02:26 UTC
(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.

Comment 5 Tomas Klohna 🔧 2019-05-22 11:11:06 UTC
Changing priority and severity since anaconda fixed it.
Jeff, according to RHEL7 documentation, you're right but what about RHEL6?

Comment 6 Jeff Bastian 2019-05-22 13:50:48 UTC
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

Comment 7 Pavel Holica 2019-07-25 12:57:19 UTC
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

Comment 8 Tomas Klohna 🔧 2019-07-25 13:45:54 UTC
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.

Comment 10 Martin Styk 2019-09-13 11:41:15 UTC
You can define the value of ksdevice. Default ksdevice value will be overwritten

Comment 11 Pavel Holica 2019-09-13 11:43:08 UTC
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.

Comment 12 Martin Styk 2019-09-13 11:43:58 UTC
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.

Comment 13 Pavel Holica 2019-09-13 11:51:16 UTC
(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.


Note You need to log in before you can comment on or make changes to this bug.