新しいLinuxカーネル(5.4) を Amazon Linux 2 にインストールしてみた

AmazonLinux2のLinuxカーネルを AWS 向けの最適化が施された最新Linuxカーネル(5.4) に更新してみました。
2020.05.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSチームのすずきです。

Amazon Linux 2 の 拡張リポジトリ で提供されている、 AWS 向けの最適化が施された Linux カーネルパッケージ (kernel-ng) を利用して、 最新LTSカーネル(5.4)を試す機会がありましたので紹介します。

Amazon Linux 2 Extras で、新しい Linux カーネルの AWS 最適化バージョンの提供開始

新しいカーネルには、A1 インスタンスでのパフォーマンスの向上、スモールインスタンスタイプでの帯域幅の拡大とレイテンシーの軽減などの機能強化が加えられています

環境

2020年5月にリリースされた、ARM ベースの AWS Graviton2 を搭載、 最新世代のインスタンス「m6g」を利用しました。

  • AMI ID: amzn2-ami-hvm-2.0.20200406.0-arm64-gp2
  • インスタンスタイプ: m6g.medium

※「x86_64」 用のパッケージ も提供されています。

インストール

拡張リポジトリ(拡張ライブラリ)を有効化し、新しいカーネル「kernel-ng」をインストールしました。

sudo amazon-linux-extras install kernel-ng

ログ抜粋

$ sudo amazon-linux-extras install kernel-ng -y
...
Installing kernel
...
amzn2-core                                                                       | 2.4 kB  00:00:00
amzn2extra-docker                                                                | 1.8 kB  00:00:00
amzn2extra-kernel-ng                                                             | 1.8 kB  00:00:00
(1/7): amzn2-core/2/aarch64/updateinfo                                           | 208 kB  00:00:00
(2/7): amzn2-core/2/aarch64/group_gz                                             | 2.5 kB  00:00:00
(3/7): amzn2extra-docker/2/aarch64/updateinfo                                    |   69 B  00:00:00
(4/7): amzn2extra-kernel-ng/2/aarch64/updateinfo                                 |   69 B  00:00:00
(5/7): amzn2extra-docker/2/aarch64/primary_db                                    |  46 kB  00:00:00
(6/7): amzn2extra-kernel-ng/2/aarch64/primary_db                                 | 4.7 MB  00:00:00
(7/7): amzn2-core/2/aarch64/primary_db                                           |  25 MB  00:00:00
...
Dependencies Resolved

========================================================================================================
 Package          Arch              Version                        Repository                      Size
========================================================================================================
Installing:
 kernel           aarch64           5.4.38-17.76.amzn2             amzn2extra-kernel-ng            25 M
...
Transaction Summary
========================================================================================================
Install  1 Package
...
Running transaction
  Installing : kernel-5.4.38-17.76.amzn2.aarch64                                                    1/1
  Verifying  : kernel-5.4.38-17.76.amzn2.aarch64                                                    1/1
...
Installed:
  kernel.aarch64 0:5.4.38-17.76.amzn2
...
Complete!

  0  ansible2                 available    [ =2.4.6  =2.8  =stable ]
  1  httpd_modules            available    [ =1.0  =stable ]
  2  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]
  4  postgresql9.6            available    [ =9.6.8  =stable ]
  5  postgresql10             available    [ =10  =stable ]
  6  redis4.0                 available    [ =4.0.10  =stable ]
  7  R3.4                     available    [ =3.4.3  =stable ]
 10  ruby2.4                  available    \
        [ =2.4.4  =2.4.7  =stable ]
 11  php7.2                   available    \
        [ =7.2.13  =7.2.14  =7.2.16  =7.2.17  =7.2.19  =7.2.21
          =7.2.22  =7.2.23  =7.2.24  =7.2.26  =stable ]
 13  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.11  =10.2.10_7.2.14  =10.2.10_7.2.16
          =10.2.10_7.2.17  =10.2.10_7.2.19  =10.2.10_7.2.22
          =10.2.10_7.2.23  =10.2.10_7.2.24  =stable ]
 14  libreoffice              available    [ =5.3.6.1  =stable ]
 16  docker=latest            enabled      \
        [ =18.06.1  =18.09.9  =stable ]
 18  GraphicsMagick1.3        available    \
        [ =1.3.29  =1.3.32  =1.3.34  =stable ]
 19  tomcat8.5                available    \
        [ =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50  =stable ]
 20  epel                     available    [ =7.11  =stable ]
 21  testing                  available    [ =1.0  =stable ]
 22  ecs                      available    [ =stable ]
 23  corretto8                available    \
        [ =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232  =1.8.0_242
          =stable ]
 24  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13  =stable ]
 25  squid4                   available    [ =4  =stable ]
 26  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
 27  java-openjdk11           available    [ =11  =stable ]
 28  lynis                    available    [ =stable ]
 29  kernel-ng=latest         enabled      [ =stable ]
 30  BCC                      available    [ =0.x  =stable ]
 31  nginx1                   available    [ =stable ]
 32  ruby2.6                  available    [ =2.6  =stable ]
 33  mock                     available    [ =stable ]
 34  postgresql11             available    [ =11  =stable ]
 35  php7.4                   available    [ =stable ]

過去バージョン

2019年11月 にリリースされた Linux 5.4、2020年2月にAmazonLinux2用のパッケージが利用可能となっていました。

aarch64

$ yum --showduplicates list | grep -e "^kernel.aarch64.* amzn2extra"
kernel.aarch64                          4.19.58-21.57.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.58-21.64.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.66-22.57.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.72-25.58.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.75-27.58.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.75-28.73.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.82-30.69.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          4.19.84-33.70.amzn2           amzn2extra-kernel-ng
kernel.aarch64                          5.4.20-12.75.amzn2            amzn2extra-kernel-ng
kernel.aarch64                          5.4.38-17.76.amzn2            amzn2extra-kernel-ng

x86_64

$ yum --showduplicates list | grep -e "^kernel.x86.* amzn2extra"
kernel.x86_64                          4.19.58-21.57.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.58-21.64.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.66-22.57.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.72-25.58.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.75-27.58.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.75-28.73.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.82-30.69.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          4.19.84-33.70.amzn2            amzn2extra-kernel-ng
kernel.x86_64                          5.4.20-12.75.amzn2             amzn2extra-kernel-ng
kernel.x86_64                          5.4.38-17.76.amzn2             amzn2extra-kernel-ng

確認

EC2インスタンスを再起動後、5.4 の カーネルが利用されている事を確認できました。

再起動前

$ uname -a
Linux ip-172-xx-x-xxx.ap-northeast-1.compute.internal 4.14.173-137.229.amzn2.aarch64 #1 SMP Wed Apr 1 18:09:02 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

再起動後

$ uname -a
Linux ip-172-xx-x-xxx.ap-northeast-1.compute.internal 5.4.38-17.76.amzn2.aarch64 #1 SMP Thu May 7 17:31:08 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

まとめ

Amazon Linux2の拡張リポジトリを利用する事で、最新 LTSカーネル を導入することが出来ました。 標準カーネル(4.17)との機能差などについては、追って報告させて頂きたいと思います。

尚、拡張リポジトリ で提供されるパッケージは Amazon Linux 2 の LTS サポート の対象外となる点には注意してご利用ください。

参考リンク