Bu KB'de X710 NIC'yi örnek olarak aacağız. Diğer tüm Linux kaynak kodları benzerdir.
Derleme için gerekli paketlerin kurulumu.
[root@rhel87 ~]# yum groupinstall "Development Tools"
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
1. Sürücüyü Dell Support Portal'dan indirin.
2. Kaynak kodunu ayıklayın ve alın.
[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. Sürücüyü derle.
[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]#
3a. Sorun: "make" komutunu çalıştırırken aşağıdaki gibi bir hatayla karşılaştıysanız
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.
"Kernel-devel" paketinin aynı çekirdek sürümü yüklü olduğundan emin olun. (İlk adımda)
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
3b. Sorun: Yüklemeden önce sürücüyü test edin. "Required key not available" (Gerekli anahtar mevcut değil) hatasıyla karşılaştıysa sunucunun kendi kendine derlenmiş sürücüyü yüklemesine izin verilmiyor "Secure Boot" (Güvenli Önyükleme) etkin olduğu anlamına gelir. "Secure Boot" (Güvenli Önyükleme) özelliğini devre dışı bırakmak için BIOS'a önyüklenebilir.
[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. Sürücüyü bu sunucuya yükleyin.
[root@rhel87 src]# make install
5. Sunucuyu yeniden başlatın ve yeni sürücü önyüklemeden sonra otomatik olarak yüklenir.
Ek:
Diğer sunuculara yüklemek için bu sürücüye dayalı RPM oluşturmak istiyorsanız (hedef sunucuda aynı çekirdek sürümü olmalıdır), rpm oluşturmak için aşağıdaki komutu çalıştırın.
[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/
Rpm'yi yüklemek için hedef sunucuya kopyalama.