Published On: May 25, 2019|Categories: Linux|Tags: , , , |

Note: The compile process appears to be broken for driver version 3.8.4. So the following steps will not work for that version. This post will be updated when a suitable fix is found for the same.


e1000e is an Intel NIC driver which often needs to be updated on servers so that the NIC can operate trouble free.

Note: I assume you have DKMS and the necessary kernel headers to compile the drivers already installed. If not use apt / apt-get to install the same.

Here’s a quick guide on how to add the Intel e1000e driver to DKMS (Dynamic Kernel Module Support) so that it gets installed / uninstalled automatically with future kernel updates and removals.

Download the driver from Intel website https://downloadcenter.intel.com/download/15817

As of my writing this article, the e1000e version is 3.4.2.1. On download the tarball I get e1000e-3.4.2.1.tar.gz.

Extract it to /usr/src:

Create a dkms.conf in /usr/src/e1000e-3.4.2.1 with following contents:

Next, we have to tell DKMS that such a module has been added and build it for each of the kernels we have on the system:

Finally, reboot the system and the new module should be live.

13 Comments

  1. Erick Maeda October 11, 2020 at 3:55 PM - Reply

    Hello, thanks for tutorial…

    Actually I’m trying to install the last step and getting failed with the command:

    Could you help me please?

    • nilesh October 11, 2020 at 3:58 PM

      Hi Erick,

      Something has changed with the driver and I haven’t been able to dig into the build process yet to fix it. Few days ago another visitor Jerry has posted same issue.

  2. Jerry Hoffmeister September 27, 2020 at 1:44 PM - Reply

    Any chance you could update this for 3.8.4?

    • nilesh September 27, 2020 at 2:04 PM

      I think the process remains same for newer versions too

    • Jerry Hoffmeister September 27, 2020 at 2:23 PM

      I get a no targets error from make. I can get the exact error tomorrow.

    • jhoff909 September 27, 2020 at 10:50 PM

      when I try to do the dkms install step, I get:
      for k in /boot/vmlinuz*; do dkms install -k ${k##*vmlinuz-} e1000e/3.8.4; done

      Kernel preparation unnecessary for this kernel. Skipping…

      Building module:
      cleaning build area…(bad exit status: 2)
      make -j4 KERNELRELEASE=5.4.0-47-generic -C src/…(bad exit status: 2)
      ERROR (dkms apport): binary package for e1000e: 3.8.4 not found
      Error! Bad return status for module build on kernel: 5.4.0-47-generic (x86_64)
      Consult /var/lib/dkms/e1000e/3.8.4/build/make.log for more information.

      Kernel preparation unnecessary for this kernel. Skipping…

      Building module:
      cleaning build area…(bad exit status: 2)
      make -j4 KERNELRELEASE=5.4.0-48-generic -C src/…(bad exit status: 2)
      ERROR (dkms apport): binary package for e1000e: 3.8.4 not found
      Error! Bad return status for module build on kernel: 5.4.0-48-generic (x86_64)
      Consult /var/lib/dkms/e1000e/3.8.4/build/make.log for more information.

      then the log:

      DKMS make.log for e1000e-3.8.4 for kernel 5.4.0-48-generic (x86_64)
      Sun Sep 27 10:17:44 PDT 2020
      make: Entering directory ‘/var/lib/dkms/e1000e/3.8.4/build/src’
      make: *** No targets. Stop.
      make: Leaving directory ‘/var/lib/dkms/e1000e/3.8.4/build/src’

    • nilesh September 28, 2020 at 6:44 AM

      It appears you did not execute the dkms add command that you have run before dkms install?

      I just checked the 3.8.4 driver structure (though did not try installing it), it is the same as earlier so there should be no change in steps.

    • jhoff909 September 28, 2020 at 6:53 AM

      I ran:
      dkms add -m e1000e/3.8.4
      then
      for k in /boot/vmlinuz*; do dkms install -k ${k##*vmlinuz-} e1000e/3.8.4; done
      and I’m running as root (sudo bash)
      and here’s my dkms.conf file:
      cat /usr/src/e1000e-3.8.4/dkms.conf
      PACKAGE_NAME=”e1000e”
      PACKAGE_VERSION=”3.8.4″
      AUTOINSTALL=yes
      MAKE[0]=”make -C src/”
      BUILT_MODULE_NAME=”e1000e”
      BUILT_MODULE_LOCATION=”src/”
      DEST_MODULE_LOCATION=”/kernel/drivers/net/ethernet/intel/e1000e”

    • nilesh September 29, 2020 at 12:13 PM

      Ok it seems there is indeed some issue. I’ll update the post once I’m able to fix it.

    • jhoff909 September 29, 2020 at 11:27 PM

      Thank you!

  3. Pablo Enrique Llorach August 7, 2019 at 8:23 PM - Reply

    Hello, where i need to put The dkms add -m configuration?

  4. Pablo Enrique Llorach August 7, 2019 at 6:07 PM - Reply

    Sory, where i need to put The dkms add -m configuration?

    • nilesh September 12, 2019 at 3:05 PM

      You have to run it on command line. Sorry for late reply btw!

Comments

This site uses Akismet to reduce spam. Learn how your comment data is processed.