如何在运行 Red Hat Enterprise Linux 6 或 7 版的 Amazon EC2 实例上安装和启用最新版的 Elastic Network Adapter (ENA) 驱动程序以增强网络支持?

一些较早版本的 Red Hat Enterprise Linux 操作系统不包含 ENA 驱动程序。更改您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例类型以获得网络连接时,需要 ENA 驱动程序。

注:RHEL 7.4 版及以上已预安装了旧版 ENA 驱动程序。如果您希望使用最新版 ENA 网络驱动程序,请运行此程序。

1.    下载并安装 ENA 驱动程序:

sudo -i    # Become root. The rest of the steps assume that they are being run by root user.
yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget
wget https://github.com/amzn/amzn-drivers/archive/master.zip
unzip master.zip
cd amzn-drivers-master/kernel/linux/ena
make
cp ena.ko /lib/modules/$(uname -r)/                          # Copy the module to the modules directory    
insmod ena.ko                                                # Insert the module to validate it loads successfully
depmod                                                       # Regenerate kernel module dependency map files
echo 'add_drivers+=" ena "' >> /etc/dracut.conf.d/ena.conf   # Append once                         
dracut -f -v                                                 # Generate the new initrd image
lsinitrd /boot/initramfs-xxx.el6.x86_64.img | grep ena.ko    # Validate that the initramfs image contains the ena driver

lsinitrd 命令的输出应包含驱动程序位置 lib/modules/..../ena.ko。确认 initramfs 中存在 ena.ko,从而确保 ENA 驱动程序在启动时初始化。

注:如果 make 命令造成了 "kcompat.h:219:27: error: net/busy_poll.h: 无此文件或目录" 错误,则升级内核、重启,然后从头重新开始运行 ENA 安装命令:

yum upgrade kernel && reboot

2.    配置动态内核模块支持 (DKMS) 计划,以确保未来的内核升级期间包括驱动程序。

安装下列 Red Hat Package Manager (rpm) 文件之一:

RHEL 6

yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

RHEL 7

yum install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

3.    安装 DKMS:

yum install dkms

VER=$( grep ^VERSION /root/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )   # Detect current version

sudo cp -a /root/amzn-drivers-master /usr/src/amzn-drivers-${VER}   # Copy source into the source directory.

cat > /usr/src/amzn-drivers-${VER}/dkms.conf <<EOM                  # Generate the dkms config file.
PACKAGE_NAME="ena"
PACKAGE_VERSION="$VER"
CLEAN="make -C kernel/linux/ena clean"
MAKE="make -C kernel/linux/ena/ BUILD_KERNEL=\${kernelver}"
BUILT_MODULE_NAME[0]="ena"
BUILT_MODULE_LOCATION="kernel/linux/ena"
DEST_MODULE_LOCATION[0]="/updates"
DEST_MODULE_NAME[0]="ena"
AUTOINSTALL="yes"
EOM

dkms add -m amzn-drivers -v $VER
dkms build -m amzn-drivers -v $VER
dkms install -m amzn-drivers -v $VER

4.    使用 modinfo 命令确认存在 ENA 模块。

modinfo ena

5.    将 net.ifnames=0 附加到启动文件,以禁用网络接口命名。

RHEL 6

net.ifnames=0 附加到 /boot/grup/menu.lst 文件的内核行中。

vi /boot/grub/menu.lst

RHEL 7

如下面的示例所示,将 net.ifnames=0 附加到 /etc/default/grub 文件的 GRUB_CMDLINE_LINUX 中:

GRUB_CMDLINE_LINUX="selinux=0 console=tty0 crashkernel=auto console=ttyS0,115200 nvme_core.io_timeout=4294967295 net.ifnames=0"

您也可以使用 sed 命令:

sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub

然后,为 grub2 重新生成配置文件:

grub2-mkconfig -o /boot/grub2/grub.cfg 

6.    运行 "poweroff" 以从 SSH 终端停止实例,或使用 AWS 命令行界面 (AWS CLI) 或 Amazon EC2 控制台停止实例。

7.    启用实例级别的增强网络支持。以下示例从 AWS CLI 修改实例属性:

aws ec2 modify-instance-attribute --instance-id i-xxxx --ena-support --region xx-xxxxx-x

8.    将实例类型更改为 ENA 支持的实例类型之一。

9.    启动实例、实例的 SSH,并运行 ethtool 命令:

ethtool -i eth0

输出应包括 ENA 驱动程序版本。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2019 年 3 月 21 日