CentOS 7 install ENA(AWS Elastic Network Adapter)

有台舊的 CentOS 7 要從 c3.large 換到 c5.large
切換時發現需要有 ENA(AWS Elastic Network Adapter),不然網路會罷工
所以找了方法
步驟大概是:
1.先以 yum 將系統更新到最新版
2.按照 方法 逐步操作,首先去 git 拉檔案下來,然後再去 EPEL 裝 dkms,接這在 這裡 的步驟 5 至 7 進行 dkms 的配置,配置好了之後回到原先的 方法 繼續進行下一步,結束之後關機換 instance type 就 OK 啦!


詳細步驟

1. 更新系統 yum update
2. 拉 ENA 檔案 git clone https://github.com/amzn/amzn-drivers
3. 安裝 kernel-devel yum install "kernel-devel-uname-r == $(uname -r)" <---這個是等下 dkms 會用到的,一般預設好像都不會安裝
4. 進行 dkms 配置(需 EPEL,安裝請參考這裡)
4a. mv amzn-drivers /usr/src/amzn-drivers-1.5.2
4b. touch /usr/src/amzn-drivers-1.5.2/dkms.conf
4c. vim /usr/src/amzn-drivers-1.5.2/dkms.conf
编辑文件 dkms.conf 并添加以下值。
PACKAGE_NAME="ena"
PACKAGE_VERSION="1.5.2"
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"

4d. dkms add -m amzn-drivers -v 1.5.2
4e. dkms build -m amzn-drivers -v 1.5.2
4f. dkms install -m amzn-drivers -v 1.5.2

5. 執行 depmod 以更新模組倚賴項
6. dracut -f -v

7. 關閉可預測的網路端口名稱 sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub

8. 重新構建 grub 配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg

9. 以 awscli 檢查 instance 的 ena 狀態,因為有些舊的 instance ena 會沒開,指令如下
aws ec2 describe-instances --instance-ids instance-id --query 'Reservations[].Instances[].EnaSupport' --region ap-northeast-1
  如果檢查的結果沒有顯示 true 的話,請執行
aws ec2 modify-instance-attribute --instance-id instance-id --ena-support --region ap-northeast-1
  來開啟;這邊要注意 instance-id 是你要調整的 instance 的 id,而參數 --region 是指你的 instance 所在的 region,我的是在東京,所以是 ap-northeast-1

10. 關機調整 instance type 為 c5 後重新開機即可




備註:
1.紅色字 1.5.2 是我當時抓的版本號,請參考當時原始碼版號
2.aws cli 的權限部分我是用 rule,所以不加 --region 會不給跑

留言