I’ve had some issues lately with Ubuntu and Intel NICs, specifically with VLANs. I’ve also heard anecdotal evidence that there are issues with the driver version shipped with the stock kernels and that the latest version available from Intel fixes the issue.
So I’ve downloaded the updated driver from here:
https://downloadcenter.intel.com/SearchResult.aspx?lang=eng&ProdId=2255
At the time this was written, the latest version was 3.1.0.2
It installs fine on my test Ubuntu 12.04 machine, so now I want to ensure it gets installed automatically whenever a new kernel gets installed (approximately every few months). To do this I enlist the help of DKMS, or Dynamic Kernel Module Support system.
You’ll be compiling the module so you’ll need to install “build-essential” and your kernel headers, for the stock kernel this is “linux-headers-server”. You’ll also need the “dkms” package.
Download the driver tarball from the intel website (above) and untar it into /usr/src. Mine untarred to /usr/src/e1000e-3.1.0.2/
Create the dkms.conf file in this directory as follows: (Note: Depending on your browser, you may need to correct the double quote characters “ after copying-and-pasting)
MAKE="make -C src/ BUILD_KERNEL=${kernelver}”
CLEAN=“make -C src/ clean”
BUILT_MODULE_NAME=e1000e
BUILT_MODULE_LOCATION=src/
DEST_MODULE_LOCATION=/kernel/drivers/net/ethernet/intel/
PACKAGE_NAME=e1000e
PACKAGE_VERSION=3.1.0.2
AUTOINSTALL=yes
REMAKE_INITRD=yes
Add it to DKMS:
dkms add -m e1000e -v 3.1.0.2
Test build:
dkms build -m e1000e -v 3.1.0.2
And install:
dkms install -m e1000e -v 3.1.0.2
The above build and install will do so for the currently running kernel, if you want to do so for a specific kernel, add “-k kernel-ver” where kernel-ver is the kernel version, for example “-k 3.2.0-70-generic”.
And you’re done. The module will automatically compile for each new kernel that gets installed.
Luke.