CentOS 7不修改AMI支持C5和M5机型

支持C5/M5的CentOS纯净版本

如果你能接受如下CentOS纯净版本,可以直接社区AMI中搜索:809566369908账号。这个是Partner teamGlobal marketplace中导入到中国区域多版本,版本保持了和Global一致。

  • CentOS 6.5
  • CentOS 6.10
  • CentOS 7.6

自行编译支持5系列机型

注意事项

  1. 不要进行yum update操作,这样会导致你的系统版本号、Kernel等都升级到最新的CentOS版本,比如: CentOS 7.x会变为最新的CentOS 7.6。当然如果你的用户可以接受最新版本的CentOS,可以执行此操作。
  2. 请确保系统的KernelKernel header版本保持一致,否则会导致后续ena编译时不通过。
  3. Kernel版本不要低于3.2

编译步骤

本例使用CentOS 7.3非原版ISO导入

确认系统版本和Kernel版本;本例中都为3.10.0-514.26.2.el7

安装相关软件包

1
2
3
4
5
yum -y --enablerepo=extras install epel-release
yum -y groupinstall "Development Tools"
yum -y install binutils-devel elfutils-devel elfutils-libelf-devel ncurses-devel
openssl-devel wget bc
yum -y install patch dkms

安装编译ENA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
wget https://github.com/amzn/amzn-drivers/archive/ena_linux_2.0.2.zip
unzip ena_linux_2.0.2.zip
mv amzn-drivers-ena_linux_2.0.2 /usr/src/ena-2.0.2
cat > /usr/src/ena-2.0.2/dkms.conf <<EOF
PACKAGE_NAME="ena"
PACKAGE_VERSION="2.0.2"
AUTOINSTALL="yes"
REMAKE_INITRD="yes"
BUILT_MODULE_LOCATION[0]="kernel/linux/ena"
BUILT_MODULE_NAME[0]="ena"
DEST_MODULE_LOCATION[0]="/updates"
DEST_MODULE_NAME[0]="ena"
CLEAN="cd kernel/linux/ena; make clean"
MAKE="cd kernel/linux/ena; make BUILD_KERNEL=\${kernelver}"
EOF

dkms add -m ena -v 2.0.2
dkms build -m ena -v 2.0.2
dkms install -m ena -v 2.0.2

dracut -f --add-drivers ena

如果顺利,这个时候可以看到ena已经安装成功

检查状态

如果想知道为何你的系统改成5系列机型后无法启动可参考这篇文章
为何我的 Linux 实例在我将其类型更改为 C5 或 M5 后未启动?

1
2
wget https://raw.githubusercontent.com/awslabs/aws-support-tools/master/EC2/C5M5InstanceChecks/c5_m5_checks_script.sh
chmod +x c5_m5_checks_scrips.sh


笔者的运气比较好,所以执行检测直接就OK了。如果你使用原版CentOS ISO执行的升级操作会遇到一下报错。

会发现ENA已经加载,但是nvme的检查会报错, 这个时候即使运行dracut命令也不能解决问题,因为nvme驱动没有能正确加载。

加载nvme驱动

1
modprobe nvme

请确保nvme版本不低于1.0
再运行check脚本提示的sudo dracut -f -v命令,运行过程中会提示有些command can’t be found,可以忽略,只要最后能正常完成image加载就没有问题。

再运行c5_m5 check scripts,会发现报警已经消失。

可选操作:升级系统microcode。

因为C5所使用的Intel skylake芯片相对较新,所以升级microcode有助于让系统更好的识别新芯片。升级操作请自行Google

CLI修改实例以支持ena

这个时候关机,选择C5实例类型,通过CLI修改实例以支持ena

1
aws ec2 modify-instance-attribute --region THE_INSTANCE_REGION --instance-id THE_INSTANCE_ID --ena-support

重启实例

实例重新启动后,可以看到CPU已经时最新的8124M也就是C5的CPU,同时,所有的内核版本都没有变化。

升级完成之后磁盘的命名规则会和之前的/dev/xvdb的方式有所不同,强烈建议使用UUID的方式去挂载磁盘