## Môi trường build - Kernel 3.10.0-957.48.1.el7.x86_64 - Cài đặt thêm gói kernel-devel-3.10.0-957.48.1.el7.x86_64.rpm - Download gói của kernel-3.10.0-957.48.1.el7.x86_64.src.rpm từ redhat repo ## Build driver - Extract source từ kernel-3.10.0-957.48.1.el7.x86_64.src.rpm - Copy file ".config" và "Module.symvers" từ /usr/src/kernels/3.10.0-957.48.1.el7.x86_64/ vào kernel-3.10.0-957.48.1.el7.src/linux-3.10.0-957.48.1.el7/ - Cd linux-3.10.0-957.48.1.el7 - Build module be2net ``` make prepare make prepare_modules make SUBDIRS=scripts/mod make SUBDIRS=drivers/net/ethernet/emulex/benet modules ``` - Driver build thành công: drivers/net/ethernet/emulex/benet/be2net.ko - Check thông tin driver sau khi build ``` [root@root ~]# modinfo /home/admin/build/linux-3.10.0-957.48.1.el7/drivers/net/ethernet/emulex/benet/be2net.ko filename: /home/admin/build/linux-3.10.0-957.48.1.el7/drivers/net/ethernet/emulex/benet/be2net.ko license: GPL author: Emulex Corporation description: Emulex OneConnect NIC Driver 11.4.0.0r version: 11.4.0.0r retpoline: Y rhelversion: 7.6 srcversion: 5B00384ACE40E8B1CFD6623 alias: pci:v000010DFd00000728sv*sd*bc*sc*i* alias: pci:v000010DFd00000720sv*sd*bc*sc*i* alias: pci:v000010DFd0000E228sv*sd*bc*sc*i* alias: pci:v000010DFd0000E220sv*sd*bc*sc*i* alias: pci:v000019A2d00000710sv*sd*bc*sc*i* alias: pci:v000019A2d00000700sv*sd*bc*sc*i* alias: pci:v000019A2d00000221sv*sd*bc*sc*i* alias: pci:v000019A2d00000211sv*sd*bc*sc*i* depends: vermagic: 3.10.0 SMP mod_unload modversions parm: num_vfs:Number of PCI VFs to initialize (uint) parm: rx_frag_size:Size of a fragment that holds rcvd data. (ushort) ``` ## Install driver - Nén file driver thành be2net.ko.xz và copy vào đường dẫn mặc định theo driver hiện tại `/lib/modules/3.10.0-957.5.1.el7.x86_64/kernel/drivers/net/ethernet/emulex/benet/be2net.ko.xz` ``` [root@root ~]# modinfo be2net filename: /lib/modules/3.10.0-957.5.1.el7.x86_64/kernel/drivers/net/ethernet/emulex/benet/be2net.ko.xz license: GPL author: Emulex Corporation description: Emulex OneConnect NIC Driver 11.4.0.0r version: 11.4.0.0r retpoline: Y rhelversion: 7.6 srcversion: 1AB9590A30E3B56B3377227 alias: pci:v000010DFd00000728sv*sd*bc*sc*i* alias: pci:v000010DFd00000720sv*sd*bc*sc*i* alias: pci:v000010DFd0000E228sv*sd*bc*sc*i* alias: pci:v000010DFd0000E220sv*sd*bc*sc*i* alias: pci:v000019A2d00000710sv*sd*bc*sc*i* alias: pci:v000019A2d00000700sv*sd*bc*sc*i* alias: pci:v000019A2d00000221sv*sd*bc*sc*i* alias: pci:v000019A2d00000211sv*sd*bc*sc*i* depends: intree: Y vermagic: 3.10.0-957.5.1.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: 9D:B7:8A:D7:C3:E3:33:8C:DB:7A:0D:8A:8D:08:F8:80:B4:14:8D:5C sig_hashalgo: sha256 parm: num_vfs:Number of PCI VFs to initialize (uint) parm: rx_frag_size:Size of a fragment that holds rcvd data. (ushort) ``` - Check lại driver ``` [root@root ~]# modinfo be2net filename: /lib/modules/3.10.0-957.48.1.el7.x86_64/kernel/drivers/net/ethernet/emulex/benet/be2net.ko.xz license: GPL author: Emulex Corporation description: Emulex OneConnect NIC Driver 11.4.0.0r version: 11.4.0.0r retpoline: Y rhelversion: 7.6 srcversion: 5B00384ACE40E8B1CFD6623 alias: pci:v000010DFd00000728sv*sd*bc*sc*i* alias: pci:v000010DFd00000720sv*sd*bc*sc*i* alias: pci:v000010DFd0000E228sv*sd*bc*sc*i* alias: pci:v000010DFd0000E220sv*sd*bc*sc*i* alias: pci:v000019A2d00000710sv*sd*bc*sc*i* alias: pci:v000019A2d00000700sv*sd*bc*sc*i* alias: pci:v000019A2d00000221sv*sd*bc*sc*i* alias: pci:v000019A2d00000211sv*sd*bc*sc*i* depends: vermagic: 3.10.0 SMP mod_unload modversions parm: num_vfs:Number of PCI VFs to initialize (uint) parm: rx_frag_size:Size of a fragment that holds rcvd data. (ushort) ``` - Thay thế driver ``` rmmod ocrdma rmmod be2net modprobe be2net ``` - Check lại thông tin driver apply trên NIC: ``` [root@ linux-3.10.0-957.48.1.el7]# ethtool -i enp3s0f0 driver: be2net version: 11.4.0.0r-patch-DATLE firmware-version: 10.2.630.0 expansion-rom-version: bus-info: 0000:03:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: no supports-register-dump: no supports-priv-flags: yes ```