1. 程式人生 > 其它 >AlmaLinux、CentOS、Rocky Linux 8 更新到 Linux 核心

AlmaLinux、CentOS、Rocky Linux 8 更新到 Linux 核心

請訪問原文連結:AlmaLinux、CentOS、Rocky Linux 8 如何更新到 Linux 核心 5.15,檢視最新版。原創作品,轉載請保留出處。

作者主頁:www.sysin.org


以前使用 ELRopo 更新 CentOS 核心比較常見,AlmaLinux 和 Rocky Linux 如何更新核心呢,方法是一樣的。

請注意:Linux Kernel 5.15 當前在 ELRepo 中仍然屬於 mainline stable,有可能在 RHEL 9 系列釋出後正式成為 LTS。

引言:Linux Kernel 5.15 LTS

11 月 21 日,著名的 Linux 核心開發人員 Greg Kroah-Hartman 宣佈釋出 Linux 核心 5.14.21,這是第 21 個維護更新,也是該系列的最後一個 (sysin)。是的,沒錯,Linux 5.14 現在在 上被標記為 EOL(生命週期結束),

kernel.org 網站 並且將不再受支援。

“請注意,這是最新的 5.14.y 核心版本。現在是生命的盡頭。請在此時移至 5.15.y 核心分支” Greg Kroah-Hartman 在 郵件列表公告中說

然而,好訊息是您將升級到最近釋出的 Linux 5.15 核心,這是一個 LTS(長期支援)系列,至少支援幾年,直到 2023 年 10 月。

Linux 核心 5.15 為 Linux 核心帶來了許多優點,例如全新且功能齊全的 NTFS 檔案系統實現、核心中的 SMB 伺服器、實時搶佔鎖定、新的 Btrfs 功能 (sysin)、每 VLAN 多播支援、對 Nintendo 的支援 Wii 控制檯、新的 gpio-virtio 驅動程式、DAMON(資料訪問監控器)以及許多其他可以玩的好東西。

不用多說,如果您的 GNU/Linux 發行版使用的是 Linux 核心 5.14,您應該考慮儘快升級到 Linux 核心 5.15。如果您不能自己完成,您應該要求您的發行版的維護者將核心包升級到最新的 Linux 5.15 版本。

可以預見,未來的 Linux 發行版可能大量採用 5.15 核心版本,目前 RHEL 9 Beta 是 5.14 版本。

Longterm release kernels

Version Maintainer Released Projected EOL
5.15 Greg Kroah-Hartman & Sasha Levin 2021/10/31 Oct, 2023
5.10 Greg Kroah-Hartman & Sasha Levin 2020/12/13 Dec, 2026
5.4 Greg Kroah-Hartman & Sasha Levin 2019/11/24 Dec, 2025
4.19 Greg Kroah-Hartman & Sasha Levin 2018/10/22 Dec, 2024
4.14 Greg Kroah-Hartman & Sasha Levin 2017/11/12 Jan, 2024
4.9 Greg Kroah-Hartman & Sasha Levin 2016/12/11 Jan, 2023
4.4 Greg Kroah-Hartman & Sasha Levin 2016/1/10 Feb, 2022

為什麼要更新核心

升級核心一般是為了支援新特性、新裝置、新功能。為了測試最新的軟硬體產品特性,升級核心比較常見。使用 ELRepo 升級核心變得非常簡單。

ELRepo 簡介

專案主頁:http://elrepo.org

歡迎使用 ELRepo,這是 Enterprise Linux 軟體包的 RPM 儲存庫。ELRepo 支援 Red Hat Enterprise Linux (RHEL) 及其衍生產品,如 Scientific Linux、CentOS Linux、Alma Linux 和 Rocky Linux。

ELRepo 專案專注於與硬體相關的軟體包,以增強您對 Enterprise Linux 的體驗。這包括檔案系統驅動程式、圖形驅動程式、網路驅動程式、聲音驅動程式、網路攝像頭和視訊驅動程式。

ELRepo 儲存庫內容

ELRepo 包含四個頻道。您可以通過單擊其名稱來瀏覽每個頻道的內容。

這是主通道,預設啟用。由於此頻道不應包含發行版中也存在的軟體包,因此在啟用此儲存庫頻道的情況下執行 “yum 更新” 應該是安全的。

例如安裝 kmod-r8168(Realtek r8168 網絡卡驅動):

yum install kmod-r8168

根據正在安裝的軟體包或儲存庫設定,可能需要禁用非 elrepo 儲存庫:

yum --disablerepo=\* --enablerepo=elrepo install kmod-nvidia

elrepo-extras 頻道提供了替換 / 更新 RHEL 分發包的包及其依賴項。它可以在 /etc/yum.repos.d/elrepo.repo 檔案中啟用或與 “yum –enablerepo=elrepo-extras” 一起使用。

elrepo-testing 頻道提供尚未釋出到主頻道的軟體包,預設情況下處於禁用狀態。它可以在 /etc/yum.repos.d/elrepo.repo 檔案中啟用或與 “yum –enablerepo=elrepo-testing” 一起使用。

elrepo-kernel 頻道使用 Linux Kernel Archives 長期支援核心(已為 RHEL-7 配置)和最新的穩定主線核心(已為 RHEL-8 和 RHEL-7 配置)。請參閱 kernel-lt 或 kernel-ml 頁面以獲取更多詳細資訊。該頻道可以在 /etc/yum.repos.d/elrepo.repo 檔案中啟用或與 “yum –enablerepo=elrepo-kernel” 一起使用。

啟用 ELRepo

從 CentOS 8 開始,ELRepo 已經加入到官方軟體倉庫中,名稱為 “elrepo-release”。

AlmaLinux 和 Rocky Linux 同樣適用。

啟用 ELRepo 只需要執行命令:

1
2
3
dnf -y install elrepo-release
#or
yum -y install elrepo-release

以下為 rpm 包線上安裝方法:

1
2
3
4
5
6
7
8
9
# Import the public key:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

# To install ELRepo for RHEL-**8** or CentOS-**8**:
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

# To install ELRepo for RHEL-**7**, SL-**7** or CentOS-**7**:
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# To make use of our mirror system, **please also install yum-plugin-fastestmirror**.

升級核心

升級核心步驟如下:

  1. 查詢 ELRepo 中的 kernel 版本

    1
    2
    3
    # 列出可用的核心相關包:
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available --showduplicates #檢視所有版本

    術語解釋

    • kernel-ml
      kernel-ml 中的 ml 是英文 “mainline stable” 的縮寫,elrepo-kernel 中列出來的是最新的穩定主線版本。
    • kernel-lt
      kernel-lt 中的 lt 是英文 “long term support” 的縮寫,elrepo-kernel 中列出來的長期支援版本。
  2. 查詢安裝的 kernel 包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 查詢所有 kernel 包
    rpm -qa|grep kernel
    # 示例輸出如下 (sysin):
    kernel-core-4.18.0-348.el8.x86_64
    kernel-4.18.0-348.2.1.el8_5.x86_64
    kernel-core-4.18.0-348.2.1.el8_5.x86_64
    kernel-modules-4.18.0-348.2.1.el8_5.x86_64
    kernel-devel-4.18.0-348.2.1.el8_5.x86_64
    kernel-modules-4.18.0-348.el8.x86_64
    kernel-tools-libs-4.18.0-348.2.1.el8_5.x86_64
    kernel-headers-4.18.0-348.2.1.el8_5.x86_64
    kernel-4.18.0-348.el8.x86_64
    kernel-tools-4.18.0-348.2.1.el8_5.x86_64
  3. 安裝 kernel

    1
    2
    3
    4
    5
    6
    # 根據上述查詢結果,安裝核心相關包
    # 安裝新核心
    yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
    #kernel-core、kernel-modules 與 kernel 依賴自動更新
    # 安裝新核心相關軟體
    yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-devel kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel kernel-ml-headers --skip-broken

    新核心將成為預設啟動核心,可以根據需要調整預設啟動項,如下文描述。

  4. 檢視和設定預設啟動項

    grubby 是一個命令列工具,用於更新和顯示有關 grub2 和 zipl 引導載入程式的配置檔案的資訊。它主要設計用於安裝新核心並需要查詢有關當前引導環境的資訊的指令碼。同時也可以對啟動核心的各項資訊引數進行修改。

    在 CentOS 8 在已經自帶該命令,如果沒有通過 yum install grubby 來安裝即可。

    檢視當前的預設啟動核心:

    1
    2
    $ grubby --default-kernel
    /boot/vmlinuz-5.15.4-1.el8.elrepo.x86_64

    檢視系統安裝的全部核心:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $ grubby --info=ALL
    index=0
    kernel="/boot/vmlinuz-5.15.4-1.el8.elrepo.x86_64"
    args="ro crashkernel=auto net.ifnames=0 $tuned_params"
    root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3"
    initrd="/boot/initramfs-5.15.4-1.el8.elrepo.x86_64.img $tuned_initrd"
    title="Rocky Linux (5.15.4-1.el8.elrepo.x86_64) 8.5 (Green Obsidian)"
    id="032ed95ba9c0471381bbb6b416eff523-5.15.4-1.el8.elrepo.x86_64"
    index=1
    kernel="/boot/vmlinuz-4.18.0-348.2.1.el8_5.x86_64"
    args="ro crashkernel=auto net.ifnames=0 $tuned_params"
    root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3"
    initrd="/boot/initramfs-4.18.0-348.2.1.el8_5.x86_64.img $tuned_initrd"
    title="Rocky Linux (4.18.0-348.2.1.el8_5.x86_64) 8.5 (Green Obsidian)"
    id="032ed95ba9c0471381bbb6b416eff523-4.18.0-348.2.1.el8_5.x86_64"
    index=2
    kernel="/boot/vmlinuz-4.18.0-348.el8.x86_64"
    args="ro crashkernel=auto net.ifnames=0 $tuned_params intel_iommu=on"
    root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3"
    initrd="/boot/initramfs-4.18.0-348.el8.x86_64.img $tuned_initrd"
    title="AlmaLinux (4.18.0-348.el8.x86_64) 8.5 (Arctic Sphynx)"
    id="032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64"
    index=3
    kernel="/boot/vmlinuz-0-rescue-032ed95ba9c0471381bbb6b416eff523"
    args="ro crashkernel=auto net.ifnames=0"
    root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3"
    initrd="/boot/initramfs-0-rescue-032ed95ba9c0471381bbb6b416eff523.img"
    title="AlmaLinux (0-rescue-032ed95ba9c0471381bbb6b416eff523) 8.5 (Arctic Sphynx)"
    id="032ed95ba9c0471381bbb6b416eff523-0-rescue"

    檢視特定核心的具體資訊:

    1
    2
    3
    4
    5
    6
    7
    8
    $  grubby --info=/boot/vmlinuz-4.18.0-348.el8.x86_64
    index=1
    kernel="/boot/vmlinuz-4.18.0-348.el8.x86_64"
    args="ro crashkernel=auto net.ifnames=0 $tuned_params"
    root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3"
    initrd="/boot/initramfs-4.18.0-348.el8.x86_64.img $tuned_initrd"
    title="AlmaLinux (4.18.0-348.el8.x86_64) 8.5 (Arctic Sphynx)"
    id="032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64"

    設定新的預設啟動核心:

    • 使用路徑來指定核心,可以使用 –set-default=kernel-path
    1
    2
    3
    4
    5
    $ grubby --set-default=/boot/vmlinuz-4.18.0-348.el8.x86_64
    The default is /boot/loader/entries/032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-348.el8.x86_64

    $ grubby --default-kernel
    /boot/vmlinuz-4.18.0-348.el8.x86_64
    • 使用 index 來指定核心,則使用 –set-default-index=entry-index
    1
    2
    3
    4
    5
    $ grubby --set-default-index=1
    The default is /boot/loader/entries/032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-348.el8.x86_64

    $ grubby --default-kernel
    /boot/vmlinuz-4.18.0-348.el8.x86_64
  5. 重啟後生效

    1
    reboot   #重啟
  6. 刪除舊核心(可選)

    從啟動項中刪除舊核心

    1
    grubby --remove-kernel=/boot/vmlinuz-4.18.0-348.el8.x86_64

    刪除舊核心檔案

    1
    2
    3
    4
    5
    6
    # 刪除舊核心
    yum remove kernel-4.18.0 kernel-core-4.18.0 kernel-modules-4.18.0 kernel-devel-4.18.0 kernel-tools-4.18.0 kernel-tools-libs-4.18.0 kernel-headers-4.18.0
    # 注意,會同時刪除一些依賴包(如 gcc、systemtap 等),需要重新補安裝回來。

    # 再檢視系統已安裝的核心,確認舊核心版本已經刪除:
    rpm -qa | grep kernel