Dans cet article de la base de connaissances, nous prenons la carte NIC X710 comme exemple. Tous les autres code source Linux sont similaires.
Installez les packages requis pour la compilation.
[root@rhel87 ~]# yum groupinstall "Development Tools"
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
1. Téléchargez le pilote à partir du portail de support Dell.
2. Extrayez et obtenez le code source.
[root@rhel87 i40e]# tar xf Intel_LAN_21.5.0_Linux_Source_A02.tar.gz
[root@rhel87 i40e]# cd Source/base_driver/
[root@rhel87 base_driver]# tar xf i40e-2.20.12.tar.gz
[root@rhel87 base_driver]# cd i40e-2.20.12/
[root@rhel87 i40e-2.20.12]# ls
COPYING i40e.7 i40e.spec pci.updates README scripts src SUMS
root@rhel87 i40e-2.20.12]# cd src/
[root@rhel87 src]# ls
auxiliary.c i40e_client.h i40e_diag.c i40e_hmc.c i40e_ptp.c i40e_virtchnl_pf.c kcompat_impl.h linux
auxiliary_compat.h i40e_common.c i40e_diag.h i40e_hmc.h i40e_register.h i40e_virtchnl_pf.h kcompat_overflow.h Makefile
common.mk i40e_dcb.c i40e_ethtool.c i40e_lan_hmc.c i40e_status.h i40e_xsk.c kcompat_rhel_defs.h Module.supported
i40e_adminq.c i40e_dcb.h i40e_ethtool_stats.h i40e_lan_hmc.h i40e_trace.h i40e_xsk.h kcompat_sles_defs.h virtchnl.h
i40e_adminq_cmd.h i40e_dcb_nl.c i40e_filters.c i40e_main.c i40e_txrx.c kcompat.c kcompat_std_defs.h
i40e_adminq.h i40e_ddp.c i40e_filters.h i40e_nvm.c i40e_txrx_common.h kcompat_defs.h kcompat_ubuntu_defs.h
i40e_alloc.h i40e_debugfs.c i40e.h i40e_osdep.h i40e_txrx.h kcompat_gcc.h kcompat_vfd.c
i40e_client.c i40e_devids.h i40e_helper.h i40e_prototype.h i40e_type.h kcompat.h kcompat_vfd.h
3. Compilez le pilote.
[root@rhel87 src]# make
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1]: Entering directory '/usr/src/kernels/4.18.0-80.el8.x86_64'
/root/i40e/Source/base_driver/i40e-2.20.12/src/Makefile:38: 2
CC [M] /root/i40e/Source/base_driver/i40e-2.20.12/src/i40e_main.o
...skipped...
LD [M] /root/i40e/Source/base_driver/i40e-2.20.12/src/i40e.o
CC [M] /root/i40e/Source/base_driver/i40e-2.20.12/src/auxiliary.o
Building modules, stage 2.
/root/i40e/Source/base_driver/i40e-2.20.12/src/Makefile:38: 2
MODPOST 2 modules
CC /root/i40e/Source/base_driver/i40e-2.20.12/src/auxiliary.mod.o
LD [M] /root/i40e/Source/base_driver/i40e-2.20.12/src/auxiliary.ko
CC /root/i40e/Source/base_driver/i40e-2.20.12/src/i40e.mod.o
LD [M] /root/i40e/Source/base_driver/i40e-2.20.12/src/i40e.ko
make[1]: Leaving directory '/usr/src/kernels/4.18.0-80.el8.x86_64'
[root@rhel87 src]# echo $?
0
[root@rhel87 src]# modinfo ./i40e.ko
filename: /root/i40e/Source/base_driver/i40e-2.20.12/src/./i40e.ko
version: 2.20.12
license: GPL
description: Intel(R) 40-10 Gigabit Ethernet Connection Network Driver
author: Intel Corporation, <e1000-devel@lists.sourceforge.net>
rhelversion: 8.0
srcversion: A92CB6A1AD515E14A84C283
alias: pci:v00008086d0000158Bsv*sd*bc*sc*i*
...skipped...
alias: pci:v00008086d00001572sv*sd*bc*sc*i*
depends: auxiliary
name: i40e
vermagic: 4.18.0-80.el8.x86_64 SMP mod_unload modversions
parm: debug:Debug level (0=none,...,16=all) (int)
parm: l4mode:L4 cloud filter mode: 0=UDP,1=TCP,2=Both,-1=Disabled(default) (int)
[root@rhel87 src]#
3 a. Problème : Si l’erreur suivante s’est produite lors de l’exécution de la commande « make »
common.mk:82: *** Kernel header files not in any of the expected locations.
common.mk:83: *** Install the appropriate kernel development package, e.g.
common.mk:84: *** kernel-devel, for building kernel modules and try again. Stop.
Assurez-vous que le package « kernel-devel » avec la même version du noyau est installé. (Dans la première étape)
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
3b. Problème : Testez le pilote avant d’installer. Si vous avez obtenu l’erreur suivante « Required key not available », cela signifie que le serveur est activé sur « Secure Boot » (Démarrage sécurisé), ce qui n’est pas autorisé à charger le pilote auto-compilé. Vous pouvez démarrer dans le BIOS pour désactiver le démarrage sécurisé.
[root@rhel87 src]# modprobe -r i40e
[root@rhel87 src]# insmod ./i40e.ko
insmod: ERROR: could not insert module ./i40e.ko: Required key not available
4. Installez le pilote sur ce serveur.
[root@rhel87 src]# make install
5. Redémarrez le serveur et le nouveau pilote sera automatiquement chargé après le démarrage.
Supplémentaire:
Si vous souhaitez créer un RPM basé sur ce pilote pour l’installer sur les autres serveurs (doit être la même version du noyau sur le serveur cible), exécutez la commande suivante pour créer rpm.
[root@rhel87 src]# cd ../..
[root@rhel87 base_driver]# ls -lh i40e-2.20.12.tar.gz
-rw-r--r-- 1 5714316 1049089 673K Jul 11 2022 i40e-2.20.12.tar.gz
[root@rhel87 base_driver]# rpmbuild -tb i40e-2.20.12.tar.gz
...skipped...
[root@rhel87 base_driver]# ls /root/rpmbuild/RPMS/x86_64/
Copiez le rpm sur le serveur cible à installer.