I denne KB tager vi X710 NIC som eksempel. Alle de andre Linux-kildekoder er ens.
Installere nødvendige pakker til kompilering.
[root@rhel87 ~]# yum groupinstall "Development Tools"
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
1. Download driveren fra Dells supportportal.
2. Udpak og hent kildekoden.
[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. Kompiler driveren.
[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. Problem: Hvis du har set følgende fejl, når kommandoen "make" køres
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.
Sørg for, at pakken "kernedevel" med samme kerneversion installeret. (I første trin)
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
3b. Problem: Test driveren før installation. Hvis fejlen "Påkrævet nøgle ikke tilgængelig" vises, betyder det, at serveren har "Sikker opstart" aktiveret, hvilket ikke er tilladt at indlæse selvkompileret driver. Du kan starte op i BIOS for at deaktivere "Sikker opstart".
[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. Installer driveren på denne server.
[root@rhel87 src]# make install
5. Genstart serveren, hvorefter den nye driver indlæses automatisk efter opstart.
Yderligere:
Hvis du vil oprette RPM baseret på denne driver for at installere til de andre servere (skal være den samme kerneversion på destinationsserveren), skal du køre følgende kommando for at oprette 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/
Kopier rpm til destinationsserveren for at installere.