Kompilieren und Installieren des Treibers mit Quellcode
Shrnutí: Linux-Treiber ist an den Kernel gebunden. Die meisten Linux RPM-Treiber zum Herunterladen gelten für die ursprüngliche Kernel-Version jeder Version. Wenn der Kernel auf eine bestimmte Version aktualisiert wurde, ist der RPM-Treiber nicht mehr für den aktualisierten Kernel geeignet. In diesem Wissensdatenbankartikel erfahren Sie, wie Sie den Treiber für den aktualisierten Kernel vom Quellcode aktualisieren. ...
Tento článek se vztahuje na
Tento článek se nevztahuje na
Tento článek není vázán na žádný konkrétní produkt.
V tomto článku nejsou uvedeny všechny verze produktu.
Pokyny
In diesem Wissensdatenbankartikel betrachten wir X710 NIC als Beispiel. Alle anderen Linux-Quellcodes sind ähnlich.
Installieren Sie die erforderlichen Pakete für die Kompilierung.
1. Laden Sie den Treiber vom Dell Support-Portal herunter.
2. Extrahieren Sie den Quellcode und rufen Sie den Quellcode ab.
3a. Problem: Wenn beim Ausführen des Befehls "make" der folgende Fehler angezeigt wurde:
3b. Problem: Testen Sie den Treiber vor der Installation. Wenn der folgende Fehler "Required key not available" angezeigt wird, bedeutet dies, dass auf dem Server "Secure Boot" aktiviert ist, was nicht erlaubt ist, einen selbst kompilierten Treiber zu laden. Sie können das BIOS starten, um den sicheren Start zu deaktivieren.
4. Installieren Sie den Treiber auf diesem Server.
Zusätzliche:
Wenn Sie RPM basierend auf diesem Treiber erstellen möchten, um es auf den anderen Servern zu installieren (muss die gleiche Kernel-Version auf dem Zielserver sein), führen Sie den folgenden Befehl aus, um rpm zu erstellen.
Installieren Sie die erforderlichen Pakete für die Kompilierung.
[root@rhel87 ~]# yum groupinstall "Development Tools" [root@rhel87 ~]# yum install kernel-devel-$(uname -r)
1. Laden Sie den Treiber vom Dell Support-Portal herunter.
2. Extrahieren Sie den Quellcode und rufen Sie den Quellcode ab.
[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. Kompilieren Sie den Treiber.
[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. Problem: Wenn beim Ausführen des Befehls "make" der folgende Fehler angezeigt wurde:
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.Stellen Sie sicher, dass das Paket "kernel-devel" mit derselben Kernel-Version installiert ist. (Im ersten Schritt)
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)
3b. Problem: Testen Sie den Treiber vor der Installation. Wenn der folgende Fehler "Required key not available" angezeigt wird, bedeutet dies, dass auf dem Server "Secure Boot" aktiviert ist, was nicht erlaubt ist, einen selbst kompilierten Treiber zu laden. Sie können das BIOS starten, um den sicheren Start zu deaktivieren.
[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. Installieren Sie den Treiber auf diesem Server.
[root@rhel87 src]# make install5. Starten Sie den Server neu und der neue Treiber wird nach dem Start automatisch geladen.
Zusätzliche:
Wenn Sie RPM basierend auf diesem Treiber erstellen möchten, um es auf den anderen Servern zu installieren (muss die gleiche Kernel-Version auf dem Zielserver sein), führen Sie den folgenden Befehl aus, um rpm zu erstellen.
[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/Kopieren Sie die RPM-Datei auf den zu installierenden Zielserver.
Dotčené produkty
Red Hat Enterprise Linux Version 6, Red Hat Enterprise Linux Version 7, Red Hat Enterprise Linux Version 9, Red Hat Enterprise Linux Version 8Vlastnosti článku
Číslo článku: 000211258
Typ článku: How To
Poslední úprava: 19 pro 2024
Verze: 3
Najděte odpovědi na své otázky od ostatních uživatelů společnosti Dell
Služby podpory
Zkontrolujte, zda se na vaše zařízení vztahují služby podpory.