Environment
Kernel version: 6.6.0-159.4.3.154.oe2403sp4.x86_64
System: openEuler 24.03 LTS SP4
Installation
Pre-installed Software and Source Code Download
dnf install -y dkms gcc gcc-c++ make kernel-devel-$(uname -r) kernel-headers-$(uname -r) elfutils-libelf-devel tar -y
Then download the corresponding kernel source package from the official Linux kernel website https://kernel.org/. I used https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.155.tar.xz.
Compilation
Upload the file to the server and extract it:
tar -xf linux-6.6.155.tar.xz
mkdir -p ~/igc_build
cp -r linux-6.6.155/drivers/net/ethernet/intel/igc/* ~/igc_build/
Then modify the Makefile:
mv Makefile Makefile.orig
cat > Makefile << 'EOF'
obj-m += igc.o
igc-objs := igc_main.o \
igc_ethtool.o \
igc_mac.o \
igc_base.o \
igc_nvm.o \
igc_phy.o \
igc_diag.o \
igc_i225.o \
igc_tsn.o \
igc_xdp.o \
igc_dump.o \
igc_ptp.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
EOF
make
Testing
After make completes, an igc.ko file will be generated in the current directory.
insmod igc.ko
lsmod | grep igc
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/igc/
cp igc.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/igc/
depmod -a
echo "igc" | sudo tee /etc/modules-load.d/igc.conf
Compiled file: https://pan.baidu.com/s/1KnfplbaE9h4jHiyDQiu3Ww?pwd=5xsq
Extraction code: 5xsq