Unload igb driver for Intel I210


CarrierBoard:Our carrierboard
BSP version:R32.3.1

I would like to update the igb driver,that it needs unload igb first.
I was setting kernel’s config below.


When I use the command “sudo rmmod igb”,I get message rmmod: ERROR: Module igb is builtin.

How do I unload the igb dirver? Thanks!

Have those relative IGB remove from below file list.


Hi ShaneCCC,

I removed igb from modules.builtin file and reboot.
But I still got ERROR: Module igb is builtin.

Did you update the Image?
Does lsmod still see the igb?

Hi ShaneCCC,

I have two question.

  1. is to remove /lib/modules/4.9.140-tegra/modules.builtin in Xavier? or rootfs in PC?
  2. Did you update the Image? You mean?
    I need remove igb from roofts/lib/modules/4.9.140-tegra/modules.builtin and rebuild kernel?


  1. in Xavier.
  2. After Modify the configure file and rebuild the Image. You can check the Image binary to check if any igb symbol still in the Image.

Hi ShaneCCC,

I was setting kernel’s config and flashed Xavier.After that I removed igb from /lib/modules/4.9.140-tegra/modules.builtin in Xavier,but I still got ERROR: Module igb is builtin.

is my step right?

How to check the Image binary?

I used the command cat .config > confing.txt,and checked the config.


Just use vim /boot/Image to search any symbol of the igb driver to confirm it.

Hi ShaneCCC,

lsmod doesn’t see igb,but rmmod is still see Module igb is builtin.

Hi ShaneCCC,

Any update? Thanks!

Please mark the driver as module in arch/arm64/config?tegra_defconfig
cd kernel/kernel-4.9
export ARCH=arm64
make DEFCONFIG_PATH=arch/arm64/configs tegra_defconfig
make menuconfig
make savedefconfig
cp -v defconfig arch/arm64/configs/tegra_defconfig
make mrproper
and then build kernel.
Replace the kernel and the newly build .ko to the target and reboot

Hi ShaneCCC,

is Xavier not to use command “rmmod” to unload the igb, even I was setting the driver as module in tegra_defconfig and replace the kernel?


If the driver is integrated and not in the form of module, then rmmod will always fail. If you changed this to be module, then rmmod should work unless the kernel change you thought was installed did not really install. After any kernel change you should verify “uname -r” is correct, and verify your change is reflected in the output of “zcat /proc/config.gz”. An example would be “zcat /proc/config.gz | grep IGB” (and if “=y”, then this is integrated, not modular…if “=m”, then the module will be somewhere under “/lib/modules/$(uname -r)/kernel/”). “rmmod” will also fail if something is locking the driver (if the driver is in use).