Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

以原始碼編譯和安裝驅動程式

Summary: Linux 驅動程式已綁定在核心上。大部分要下載的 Linux RPM 驅動程式都適用於每個版本的原始核心版本。如果核心已更新為特定版本,RPM 驅動程式將不再適合更新的核心。此知識庫文章將說明如何從來源代碼更新更新核心的驅動程式。

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Instructions

在此知識庫文章中,我們以 X710 NIC 為範例。其他所有的 linux 原始碼都類似。

安裝彙編所需的套件。
[root@rhel87 ~]# yum groupinstall "Development Tools"
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)

1.從 Dell 支援入口網站下載驅動程式。
2.擷取並取得原始碼。
[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.編譯驅動程式。
[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。問題:如果您在執行「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.
確定套件「核心解說」已安裝相同的核心版本。(在第一步中)
[root@rhel87 ~]# yum install kernel-devel-$(uname -r)

3b。問題:安裝前請先測試驅動程式。如果出現以下錯誤「Required key not available」,表示伺服器已啟用「安全開機」,不允許載入自行編譯的驅動程式。您可以開機進入 BIOS 以停用「安全開機」。
[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.將驅動程式安裝至此伺服器。
[root@rhel87 src]# make install
5.重新啟動伺服器,新驅動程式將在開機後自動載入。


額外:
如果您想要根據此驅動程式建立 RPM 以安裝至其他伺服器 (必須在目標伺服器上為相同的核心版本),請執行下列命令以建立 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/
將 RPM 複製到目標伺服器以進行安裝。




Article Properties


Affected Product

Red Hat Enterprise Linux Version 6, Red Hat Enterprise Linux Version 7, Red Hat Enterprise Linux Version 9, Red Hat Enterprise Linux Version 8

Last Published Date

24 Jul 2023

Version

2

Article Type

How To