Compilare e installare un driver con codice sorgente
Summary: Il driver Linux è collegato al kernel. La maggior parte dei driver RPM linux da scaricare è per la versione del kernel originale di ciascuna release. Se il kernel è stato aggiornato a una versione specifica, il driver RPM non sarà più idoneo per il kernel aggiornato. Questo articolo della KB illustra come aggiornare il driver per il kernel aggiornato dal codice sorgente. ...
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
In questo articolo della KB, prendiamo la scheda di rete X710 come esempio. Tutti gli altri codici sorgente linux sono simili.
Installare i pacchetti richiesti per la raccolta.
1. Scaricare il driver dal portale di supporto Dell.
2. Estrarre e ottenere il codice sorgente.
3a. Problema: Se viene visualizzato il seguente errore durante l'esecuzione del comando "make"
3 b. Problema: Testare il driver prima dell'installazione. Se viene visualizzato il seguente errore "Required key not available", significa che il server ha l'opzione "Secure Boot" abilitata che non è autorizzata a caricare il driver autocompilato. È possibile avviare il BIOS per disabilitare "Secure Boot".
4. Installare il driver su questo server.
Ulteriori:
Se si desidera creare un RPM basato su questo driver per l'installazione su altri server (deve essere la stessa versione del kernel nel server di destinazione), eseguire il seguente comando per creare rpm.
Installare i pacchetti richiesti per la raccolta.
[root@rhel87 ~]# yum groupinstall "Development Tools" [root@rhel87 ~]# yum install kernel-devel-$(uname -r)
1. Scaricare il driver dal portale di supporto Dell.
2. Estrarre e ottenere il codice sorgente.
[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.h3. Compilare il driver.
[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. Problema: Se viene visualizzato il seguente errore durante l'esecuzione del comando "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.Assicurarsi che il pacchetto "kernel-devel" con la stessa versione del kernel installata. (Nel primo passaggio)
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
3 b. Problema: Testare il driver prima dell'installazione. Se viene visualizzato il seguente errore "Required key not available", significa che il server ha l'opzione "Secure Boot" abilitata che non è autorizzata a caricare il driver autocompilato. È possibile avviare il BIOS per disabilitare "Secure Boot".
[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. Installare il driver su questo server.
[root@rhel87 src]# make install5. Riavviare il server e il nuovo driver verrà caricato automaticamente dopo l'avvio.
Ulteriori:
Se si desidera creare un RPM basato su questo driver per l'installazione su altri server (deve essere la stessa versione del kernel nel server di destinazione), eseguire il seguente comando per creare 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/Copiare l'rpm nel server di destinazione da installare.
Affected Products
Red Hat Enterprise Linux Version 6, Red Hat Enterprise Linux Version 7, Red Hat Enterprise Linux Version 9, Red Hat Enterprise Linux Version 8Article Properties
Article Number: 000211258
Article Type: How To
Last Modified: 19 Dec 2024
Version: 3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.