AWS文档指出,您需要构建源才能为Ubuntu AMI启用增强联网:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sriov-networking.html#enhanced-networking-ubuntu

us-west-2 xenial的当前AMI AMI-835b4efa因以下原因失败:
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 foundError! 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.

最佳答案

这是AWS内核命名对流的问题。

查看日志文件:

root@ip-10-16-80-225:/home/ubuntu# cat /var/lib/dkms/ixgbevf/3.1.2/build/make.log
DKMS make.log for ixgbevf-3.1.2 for kernel 4.4.0-1020-aws (x86_64)
Wed Jun 28 15:34:22 PDT 2017
make -C /lib/modules/4.4.0-1020-aws/build SUBDIRS=/var/lib/dkms/ixgbevf/3.1.2/build/src modules
make[1]: Entering directory '/usr/src/linux-headers-4.4.0-1020-aws'
  CC [M]  /var/lib/dkms/ixgbevf/3.1.2/build/src/ixgbevf_main.o
In file included from /var/lib/dkms/ixgbevf/3.1.2/build/src/ixgbevf.h:41:0,
                 from /var/lib/dkms/ixgbevf/3.1.2/build/src/ixgbevf_main.c:53:
/var/lib/dkms/ixgbevf/3.1.2/build/src/kcompat.h:755:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large...
 #error UTS_UBUNTU_RELEASE_ABI is too large...
  ^
scripts/Makefile.build:258: recipe for target '/var/lib/dkms/ixgbevf/3.1.2/build/src/ixgbevf_main.o' failed


它在抱怨UTS_UBUNTU_RELEASE_ABI

Ubuntu内核文档指出,内核版本的第四个数字是ABI https://wiki.ubuntu.com/KernelTeam/BuildSystem/ABI,但是当前的AWS内核版本是:
Linux ip-10-16-89-81 4.4.0-1020-aws

查看/usr/src/ixgbevf/src/kcompat.h中有问题的代码:

#if UTS_UBUNTU_RELEASE_ABI > 255
#error UTS_UBUNTU_RELEASE_ABI is too large...
#endif /* UTS_UBUNTU_RELEASE_ABI > 255 */


可以看到它不会飞,1020大于255

这是我用作自定义程序包postinst来解决此问题的脚本。如果您在〜/中有https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/3.1.2/的源代码tgz,也可以直接从shell运行此脚本。

%> cat src/deb/control/postinst
#!/bin/bash -e
[ "${DEBUG}" ] && set -x
cd ~/ixgbevf
ver="3.1.2"
tar -xzf ~/ixgbevf-${ver}.tar.gz
rm -rf /usr/src/ixgbevf-${ver}
mv ixgbevf-${ver} /usr/src/
touch /usr/src/ixgbevf-${ver}/dkms.conf
kernelver=$(uname -r)
cat <<-EOT > /usr/src/ixgbevf-${ver}/dkms.conf
PACKAGE_NAME="ixgbevf"
PACKAGE_VERSION="${ver}"
CLEAN="cd src/; make clean"
MAKE="cd src/; make BUILD_KERNEL=\${kernelver}"
BUILT_MODULE_LOCATION[0]="src/"
BUILT_MODULE_NAME[0]="ixgbevf"
DEST_MODULE_LOCATION[0]="/updates"
DEST_MODULE_NAME[0]="ixgbevf"
AUTOINSTALL="yes"
EOT
# Hack for /usr/src/ixgbevf-3.1.2/src/kcompat.h:755:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large...
# #if UTS_UBUNTU_RELEASE_ABI > 255
#
sed -i 's/#if UTS_UBUNTU_RELEASE_ABI > 255/#if UTS_UBUNTU_RELEASE_ABI > 99255/' /usr/src/ixgbevf-${ver}/src/kcompat.h
dkms remove ixgbevf -v ${ver} --all 2>/dev/null || true
dkms add -m ixgbevf -v ${ver}
dkms build -m ixgbevf -v ${ver}
dkms install -m ixgbevf --all
dkms autoinstall -m ixgbevf
update-initramfs -c -k all
modinfo ixgbevf


我已经通知了AWS,但是在此期间,希望这可以节省其他人的WTF时刻,“这不是我今天想做的”

编辑:

得到了AWS的跟进-他们正在将其推送给英特尔驱动程序支持团队。假设ABI
07-24 09:38
查看更多