Bug 1968118

Summary: Dell iDrac network interface (cdc_ether driver) has no ID_NET_NAME_FROM_DATABASE, causing the interface to show as enp... while installing the system
Product: Red Hat Enterprise Linux 8 Reporter: Renaud Métrich <rmetrich>
Component: dracutAssignee: Pavel Valena <pvalena>
Status: CLOSED ERRATA QA Contact: Frantisek Sumsal <fsumsal>
Severity: medium Docs Contact:
Priority: high    
Version: 8.4CC: amepatil, andreas.luik, bgalvani, dracut-maint-list, dtardon, ferferna, fge, fsumsal, garry.dale, lnykryn, lrintel, mkielian, msekleta, network-qe, nlager, pvalena, rkhan, sbeal, sukulkar, systemd-maint-list, thaller, till, vbenes
Target Milestone: rcKeywords: Improvement, Triaged
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: dracut-049-227.git20230725.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-11-14 15:47:29 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Screenshot of the udev database when booting the 8.4 DVD
none
udev database after installing (more recent kernel) none

Description Renaud Métrich 2021-06-05 14:19:23 UTC
Description of problem:

A customer installing RHEL8.3 DVD or RHEL8.4 DVD on a Dell PowerEdge R640 system sees the iDrac interface be presented as "enp0s20f0..." (by path) instead of "idrac", but only at installation time. Once the system is installed, the correct naming is seen, but the kernel being installed is a more recent one that the DVD one.

Checking the udev database early during installation, there is no ID_NET_NAME_FROM_DATABASE=idrac property, explaining the issue.

This was working fine with RHEL8.2 DVD.

This prevents the admin from installing system using a generic kickstart for Dell systems.


Version-Release number of selected component (if applicable):

kernel-4.18.0-240.el8.x86_64 (RHEL8.3 DVD)
kernel-4.18.0-305.el8.x86_64 (RHEL8.4 DVD)

How reproducible:

Always on customer system

Comment 1 Renaud Métrich 2021-06-05 14:21:00 UTC
Created attachment 1789073 [details]
Screenshot of the udev database when booting the 8.4 DVD

Comment 2 Renaud Métrich 2021-06-05 14:23:07 UTC
Created attachment 1789074 [details]
udev database after installing (more recent kernel)

Comment 3 Renaud Métrich 2021-06-05 14:27:39 UTC
Sorry, this is pure systemd, seems like.

Comment 5 David Tardon 2021-06-08 12:50:54 UTC
(In reply to Renaud Métrich from comment #3)
> Sorry, this is pure systemd, seems like.

I doubt that. It is something with the installer environment. Either /usr/lib/udev/hwdb.d/20-net-ifname.hwdb is missing or systemd-hwdb-update.service has not been run before systemd-udevd.service is started (.hwdb files are not used by systemd-udevd directly. They must be compiled into binary format first--the file is /etc/udev/hwdb.bin). The former is the case in initrd, because no hwdb files are installed there, but the interface should still be correctly renamed after switch-root (that is what happens on the installed system too, after all).

Besides, there weren't any significant changes in udev between 8.2 and 8.3.

Comment 6 David Tardon 2021-06-08 12:55:07 UTC
I checked with the 8.4 installation DVD and it seems this should work...

# systemd-hwdb query usb:v413CpA102
ID_VENDOR_FROM_DATABASE=Dell Computer Corp.
ID_MODEL_FROM_DATABASE=iDRAC Virtual NIC
ID_NET_NAME_FROM_DATABASE=idrac

Can we see boot logs?

Comment 8 Renaud Métrich 2021-06-25 07:20:18 UTC
Moving to NetworkManager since issue is due to using it in the initramfs during installation.

Comment 9 Thomas Haller 2021-06-25 08:03:00 UTC
please provide debug logs of NetworkManager (or better, the full boot).

I think you do that via `rd.debug` on the kernel command line.

Comment 10 Thomas Haller 2021-08-05 13:07:48 UTC
Still waiting on more info. Let's move to rhel-8.6

Comment 14 Beniamino Galvani 2021-08-10 06:09:54 UTC
In initrd there is a "Wired Connection" compatible only with device
eno1, because of command line argument "ksdevice=98:03:9b:98:41:36"
which gets translated into "BOOTIF=01-98-03-9b-98-41-36". So, only
eno1 gets activated; however also other devices (eno2, enp0s20f0u14u3)
are brought up.

We should probably introduce a configuration option to treat as
unmanaged all devices without a candidate connection, and enable that
option via a configuration snippet in initrd.

Comment 15 Thomas Haller 2021-08-10 06:15:21 UTC
(In reply to Beniamino Galvani from comment #14)
>
> We should probably introduce a configuration option to treat as
> unmanaged all devices without a candidate connection, and enable that
> option via a configuration snippet in initrd.

bug 1650221

Comment 18 sushil kulkarni 2021-11-10 16:48:40 UTC
Removing from the RPL based on lack of voting from all parties (CEE, Dev, QE). Please add it back if there is agreement to get it on the RPL.

Thanks!
Sushil

Comment 22 Lubomir Rintel 2022-01-05 11:09:34 UTC
I'm now convinced this is not a NetworkManager problem.

Sure, it would be nice if NetworkManager wouldn't bring up devices it is not configuring, but that wouldn't happen here, because at the time the network is configured for kickstart to be fetched, NetworkManager can't tell that it shouldn't be bringing up the iDRAC interface up.

The interface renaming is supposed to (and in fact always happens) early in the iniramfs, prior to NetworkManager being started.

I've proposed a fix upstream and am going to be reassiging the bug to dracut developers to take a look:
https://github.com/dracutdevs/dracut/pull/1681

In case this needs a workaround, the customer can put something like this into their kickstart file (the pykickstart documentation suggests the %pre sections need to go at the end):

%pre
set -x
trig() { udevadm trigger --action=add --property-match=ID_NET_NAME_FROM_DATABASE=idrac $*; }
ip link set $(trig -v -n |xargs basename) down
trig --settle
%end

Comment 28 Andreas Luik 2022-08-04 14:30:48 UTC
(In reply to Lubomir Rintel from comment #22)
As I'm facing the same problem on a Dell R640 (usig PXE Boot of 8.6), I tried the proposed work-around, but had to change it as follows:

%pre
set -x
trig() { udevadm trigger --action=add --property-match=ID_NET_NAME_FROM_DATABASE=idrac $*; }
for d in $(trig -v -n | xargs basename -a); do
    ip link set "$d" down
done
trig # using --settle hangs forever
%end

Comment 29 garry.dale 2022-11-17 22:26:20 UTC
(In reply to Andreas Luik from comment #28)
> (In reply to Lubomir Rintel from comment #22)
> As I'm facing the same problem on a Dell R640 (usig PXE Boot of 8.6), I
> tried the proposed work-around, but had to change it as follows:
> 
> %pre
> set -x
> trig() { udevadm trigger --action=add
> --property-match=ID_NET_NAME_FROM_DATABASE=idrac $*; }
> for d in $(trig -v -n | xargs basename -a); do
>     ip link set "$d" down
> done
> trig # using --settle hangs forever
> %end

I also had similar issue on PowerEdge R650 with 8.5 kickstart. I used this workaround successfully.

Comment 34 Pavel Valena 2023-07-24 08:26:07 UTC
Tested & posted the fix upstream; prepared PR downstream: https://github.com/redhat-plumbers/dracut-rhel8/pull/27

Comment 38 errata-xmlrpc 2023-11-14 15:47:29 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (dracut bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2023:7087