Thursday, June 6, 2013

DKMS for updated e1000e driver

So, since I updated the e1000e driver, I've gotten no more errors in my messages logs.  However, it does seem that every month or two, a kernel update gets pushed to Squeeze, which un-does my driver fix.  When I worked at Dell, and we needed driver to be recompiled for any kernel that got installed, DKMS was the solution.  I rarely have to use cutting edge hardware with, umm, mature operating systems these days (I use old hardware with old operating systems), I hadn't given it much thought.  While DKMS is awesome when someone else does all the upfront work for you, trying to sort it out on one's own is significantly less fun.  I spent several hours over the course of a couple of weeks reading various things, and all of them failing to do what I wanted.  Got back to this week and finally got it sorted out.


  1. Dowload appropriate source for the e1000e driver: http://sourceforge.net/projects/e1000/files/e1000e%20stable/2.3.2/e1000e-2.3.2.tar.gz
  2. Extract archive to /usr/src.
  3. Create a dkms.conf in the /usr/src/e1000e-2.3.2 directory with the following contents:
    PACKAGE_NAME="e1000e"
    PACKAGE_VERSION="2.3.2"
    BUILT_MODULE_LOCATION[0]="src"
    BUILT_MODULE_NAME[0]="e1000e"
    DEST_MODULE_LOCATION[0]="/kernel/drivers/net/e1000e/"
    AUTOINSTALL="yes"
    MAKE[0]="BUILD_KERNEL=${kernelver} make -C src CFLAGS_EXTRA=-DDISABLE_PM"
    CLEAN[0]="make -C src clean"
    REMAKE_INITRD=yes
  4. Now just add the module via dkms:
    dkms -m e1000e -v 2.3.2 add
    dkms -m e1000e -v 2.3.2 build
    dkms -m e1000e -v 2.3.2 install


    After completion, you should restart the system to verify that the initial ramdisk got rebuilt correctly, and that the correct version of the driver is being used (modinfo e1000e).

1 comment: