在 AL2 023 上更新 Linux 内核 - Amazon Linux 2023

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 AL2 023 上更新 Linux 内核

AL2023 上的 Linux 内核版本

AL2023 定期包含基于 Linux 内核的长期支持 (LTS) 版本的新内核版本。

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

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

将 AL2 023 更新到内核 6.12

您可以通过选择预装内核 6.12 的 AMI 或升级现有 AL2 023 实例,在内核 6.12 中运行 023。 AL2 EC2

正在运行 AL2 023 内核 6.12 AMI

您可以选择通过 AWS 控制台或查询 SSM 以获取特定参数来运行预装内核 6.12 的 AL2 023 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 最低版本)

有关选择 AL2 023 使用 SSM 参数启动 AL2 023 和 AWS CLI AMIs 的详细信息,请参阅。

将 AL2 023 实例更新到内核 6.12

您可以通过以下步骤将正在运行的 AL2 023 实例就地升级到内核 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 版的内核开发:

    $ 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. 如何 up-to-date跨多个实例保留内核?

Amazon Linux 不提供管理实例队列的工具。我们建议您使用诸如 S AWS ystems Manager 之类的工具修补大型机群。

3. 如何检查我现在运行的是哪个内核版本?

在你的 AL2 023 实例上执行以下命令:

$ 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)