Intel Ethernet I219-V sur Red Hat Enterprise Linux 8.1

Second constat après l'installation de Red Hat Enterprise Linux 8.1 sur un Intel NUC10i7FNK, l'interface réseau Ethernet n'est pas disponible:

# dmidecode -t 10
On Board Device 2 Information
    Type: Ethernet
    Status: Enabled
    Description:  Intel(R) I219-V Gigabit Network Device
# lspci -nnk | grep -A1 "Ethernet"
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (10) I219-V [8086:0d4f]
    Subsystem: Intel Corporation Device [8086:2081]

Les cartes de type I219 sont prisent en charge par le driver e1000e téléchargeable sur le site d'Intel. Je découvre qu'il est possible de générer un rpm directement à partir de l'archive (tout est expliqué dans le fichier README):

# yum install gcc make rpm-build kernel-devel elfutils-libelf-devel

$ rpmbuild -tb e1000e-3.6.0.tar.gz
...
...
Provides: e1000e e1000e = 3.6.0-1 e1000e(x86-64) = 3.6.0-1 kmod(e1000e.ko.new)
Requires(interp): /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(preun): /bin/sh
Requires(postun): /bin/sh
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/julien/rpmbuild/BUILDROOT/e1000e-3.6.0-1.x86_64
Wrote: /home/julien/rpmbuild/RPMS/x86_64/e1000e-3.6.0-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.6cppPz
+ umask 022
+ cd /home/julien/rpmbuild/BUILD
+ cd e1000e-3.6.0
+ rm -rf /home/julien/rpmbuild/BUILDROOT/e1000e-3.6.0-1.x86_64
+ exit 0

Un contrôle du paquet avant installation nous indique qu'il n'est pas signé:

$ rpm -qi e1000e-3.6.0-1.x86_64.rpm
Name        : e1000e
Version     : 3.6.0
Release     : 1
Architecture: x86_64
Install Date: (not installed)
Group       : System Environment/Kernel
Size        : 8571568
License     : GPL
Signature   : (none)
Source RPM  : e1000e-3.6.0-1.src.rpm
Build Date  : 
Build Host  : 
Relocations : (not relocatable)
Vendor      : Intel Corporation
URL         : http://support.intel.com/support/go/linux/e1000e.htm
Summary     : Intel(R) Gigabit Ethernet Connection
Description :
This package contains the Linux driver for the Intel(R) Gigabit Family of Server Adapters.

$ rpm -qpl e1000e-3.6.0-1.x86_64.rpm 
/lib/modules/4.18.0-147.5.1.el8_1.x86_64/updates/drivers/net/ethernet/intel/e1000e/e1000e.ko.new
/usr/share/doc/e1000e
/usr/share/doc/e1000e/COPYING
/usr/share/doc/e1000e/README
/usr/share/doc/e1000e/file.list
/usr/share/doc/e1000e/pci.updates
/usr/share/man/man7/e1000e.7.gz

Pour que le driver soit fonctionnel sans être signé, il est nécessaire de désactiver secure boot. (Je reviendrai plus tard sur la génération du certifcat et la signature du paquet.)

$ dmesg | grep secureboot
[    0.000000] secureboot: Secure boot disabled

Il ne reste plus qu'à installer le rpm généré :

# rpm -Uvh e1000e-3.6.0-1.x86_64.rpm 
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:e1000e-3.6.0-1                   ################################# [100%]
original pci.ids saved in /usr/local/share/e1000e

Après l'arrêt relance du système, on peut vérifier que le module est chargé et qu'une nouvelle interface réseau Ethernet est disponible:

$ lsmod | grep e1000e
e1000e                286720  0

$ nmcli device show
GENERAL.DEVICE:                         eno1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         xx:xx:xx:xx:xx:xx
GENERAL.MTU:                            1500
GENERAL.STATE:                          20 (unavailable)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
WIRED-PROPERTIES.CARRIER:               off

Pour les plus curieux qui se demandent comment j'ai pu télécharger tous les paquets nécessaires sans interface réseau, sachez que le partage de connexion en USB avec le smartphone fonctionne très bien.