Can’t get ixgbevf to build on current Ubuntu AMI

Question:

AWS docs state that you need to build the source to get enhanced networking enabled for Ubuntu AMIs:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sriov-networking.html#enhanced-networking-ubuntu

The current AMI for us-west-2 xenial, ami-835b4efa, fails with:

Building module:
cleaning build area....
cd src/; make BUILD_KERNEL=4.4.0-1020-aws....(bad exit status: 2)
ERROR (dkms apport): binary package for ixgbevf: 3.1.2 not found
Error! Bad return status for module build on kernel: 4.4.0-1020-aws (x86_64)
Consult /var/lib/dkms/ixgbevf/3.1.2/build/make.log for more information.

Answer:

This is a problem with the AWS kernel naming convetion.

Looking at the log file:

it’s complaining about UTS_UBUNTU_RELEASE_ABI

Ubuntu kernel docs state that the kernel version’s 4th number is the ABI, https://wiki.ubuntu.com/KernelTeam/BuildSystem/ABI, but the current AWS kernel version is:

Linux ip-10-16-89-81 4.4.0-1020-aws

Looking at the offending code in /usr/src/ixgbevf/src/kcompat.h:

one can see this won’t fly, 1020 being > than 255

Here’s a script that I use as a custom package postinst to fix this. This script can also be run directly from a shell if you have the source tgz from here https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/3.1.2/ in ~/

I’ve notified AWS of this, but in the interim, hopefully this will save someone else the WTF moment of ‘this is not what I wanted to do today’

Edit:

Got a followup from AWS – They are pushing this out to the Intel driver support team. It’s the driver’s check that’s assuming the ABI < 255 that is broken, not the AWS kernel versioning scheme.

Leave a Reply