在 AL2023 上更新 Linux 内核 - Amazon Linux 2023

在 AL2023 上更新 Linux 内核

AL2023 上的 Linux 内核版本

AL2023 会定期纳入基于 Linux 内核长期支持版本的新内核版本。

AL2023 最初于 2023 年 3 月发布,搭载内核 6.1。

2025 年 4 月,AL2023 增加了对 Linux 内核 6.12 的支持。该内核新增了多项功能,包括 EEVDF 调度、FUSE 透传 I/O 支持、新的 Futex API 以及 eBPF 改进。内核 6.12 还允许用户空间程序在运行时使用用户空间影子栈和内存密封来保护自身。

将 AL2023 更新至内核 6.12

您可以通过选择预装了内核 6.12 的 AMI 或升级现有的 AL2023 EC2 实例来运行带内核 6.12 的 AL2023。

运行 AL2023 内核 6.12 AMI

您可以通过 AWS 管理控制台或查询 SSM 特定参数来选择运行预装了内核 6.12 的 AL2023 AMI。要查询的 SSM 密钥以 /aws/service/ami-amazon-linux-latest/ 开头,后跟以下之一

  • al2023-ami-kernel-6.12-arm64,适用于 arm64 架构

  • al2023-ami-minimal-kernel-6.12-arm64,适用于 arm64 架构(AMI 最低版本)

  • al2023-ami-kernel-6.12-x86_64,适用于 x86_64 架构

  • al2023-ami-minimal-kernel-6.12-x86_64,适用于 x86_64 架构(AMI 最低版本)

有关选择 AL2023 AMI 的详细信息,请参阅 使用 SSM 参数和 AWS CLI 启动 AL2023

将 AL2023 实例更新至内核 6.12

您可以通过以下步骤将正在运行的 AL2023 实例原地升级至内核 6.12:

  1. 安装 kernel6.12 包:

    $ sudo dnf install -y kernel6.12
  2. 获取最新版本的 kernel6.12 程序包:

    $ version=$(rpm -q --qf '%{version}-%{release}.%{arch}\n' kernel6.12 | sort -V | tail -1)
  3. 将新的 kernel6.12 设置为默认内核:

    $ sudo grubby --set-default "/boot/vmlinuz-$version"
  4. 重启系统:

    $ sudo reboot
  5. 卸载内核 6.1:

    $ sudo dnf remove -y kernel
  6. 将额外的内核程序包替换为其对应的 kernel6.12 版本:

    $ declare -A pkgs $ pkgs=( [bpftool]=bpftool6.12 [kernel-debuginfo]=kernel6.12-debuginfo [kernel-debuginfo-common]=kernel6.12-debuginfo-common [kernel-headers]=kernel6.12-headers [kernel-libbpf]=kernel6.12-libbpf [kernel-libbpf-devel]=kernel6.12-libbpf-devel [kernel-libbpf-static]=kernel6.12-libbpf-static [kernel-modules-extra-common]=kernel6.12-modules-extra-common [kernel-tools]=kernel6.12-tools [kernel-tools-devel]=kernel6.12-tools-devel [perf]=perf6.12 [python3-perf]=python3-perf6.12 ) $ for pkg in "${!pkgs[@]}"; do rpm -q $pkg && sudo dnf -y swap $pkg "${pkgs["$pkg"]}" ; done
  7. (可选)卸载内核 6.1 的 kernel-devel:

    $ rpm -q kernel-devel && sudo dnf remove -y kernel-devel

从内核 6.12 降级至内核 6.1

如果您在任何时候需要降级回内核 6.1,请使用以下步骤:

  1. 将额外的 kernel6.12 程序包替换为其对应的内核 6.1 版本:

    $ declare -A pkgs $ pkgs=( [bpftool]=bpftool6.12 [kernel-debuginfo]=kernel6.12-debuginfo [kernel-debuginfo-common]=kernel6.12-debuginfo-common [kernel-headers]=kernel6.12-headers [kernel-libbpf]=kernel6.12-libbpf [kernel-libbpf-devel]=kernel6.12-libbpf-devel [kernel-libbpf-static]=kernel6.12-libbpf-static [kernel-modules-extra-common]=kernel6.12-modules-extra-common [kernel-tools]=kernel6.12-tools [kernel-tools-devel]=kernel6.12-tools-devel [perf]=perf6.12 [python3-perf]=python3-perf6.12 ) $ for pkg in "${!pkgs[@]}"; do rpm -q "${pkgs["$pkg"]}" && sudo dnf -y swap "${pkgs["$pkg"]}" $pkg ; done
  2. 安装 kernel 包:

    $ sudo dnf install -y kernel
  3. 获取最新版本的 kernel 程序包:

    $ version=$(rpm -q --qf '%{version}-%{release}.%{arch}\n' kernel | sort -V | tail -1)
  4. 将内核 6.1 设置为默认内核:

    $ sudo grubby --set-default "/boot/vmlinuz-$version"
  5. 重启系统:

    $ sudo reboot
  6. 卸载内核 6.12:

    $ sudo dnf remove -y kernel6.12

AL2023 内核——常见问题解答

1. 内核更新后是否需要重启?

对运行中内核的任何更改都需要重启。

2. 如何在多个实例间保持内核为最新版本?

Amazon Linux 不提供管理实例集的工具。我们建议您使用诸如 AWS Systems Manager 等工具为大型实例集打补丁。

3. 如何检查当前运行的内核版本?

在您的 AL2023 实例上执行以下命令:

$ uname -r

4. 如何安装内核 6.12 的内核头文件、开发程序包和额外模块?

请运行:

$ sudo dnf install -y kernel6.12-modules-extra-$(uname -r) kernel6.12-headers-$(uname -r) kernel6.12-devel-$(uname -r)