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.

2021-01-01 Update: Refer to Alexis’ comment


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.

16 Comments

  1. Alexis Wilke January 1, 2021 at 3:16 AM - Reply

    I also ran into problems with the build step. Actually, looking closely it was the cleanup step at first.

    I had to add:

    and also change the source location directory like so:

    Then it worked like a charm, which is great.

    • nilesh January 1, 2021 at 11:18 AM

      Hi Alexis, thanks for taking the time to post the fix as a comment on my blog!

  2. Alex October 21, 2020 at 10:53 PM - Reply

    Hi
    thank you for instructions, but I got the same error as above:
    root@xxx:/usr/src/e1000e-3.8.4/src# 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-52-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-52-generic (x86_64)
    Consult /var/lib/dkms/e1000e/3.8.4/build/make.log for more information.
    root@xxx:/usr/src/e1000e-3.8.4/src# cat /var/lib/dkms/e1000e/3.8.4/build/make.log
    DKMS make.log for e1000e-3.8.4 for kernel 5.4.0-52-generic (x86_64)
    Wed Oct 21 13:11:25 EDT 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’

    Same error for all kernels installed.
    But following instruction in README to “make install” was successful, results:
    root@xxx:/usr/src/e1000e-3.8.4/src# modinfo e1000e
    filename: /lib/modules/5.4.0-52-generic/updates/drivers/net/ethernet/intel/e1000e/e1000e.ko
    version: 3.8.4-NAPI
    license: GPL
    description: Intel(R) PRO/1000 Network Driver
    author: Intel Corporation, linux.nics@intel.com

    Thank you

  3. 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.

  4. 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!

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

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

  6. 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.