跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 管理指南 / 系统 / 安装多个内核版本
适用范围 SUSE Linux Enterprise Server 15 SP6

27 安装多个内核版本

SUSE Linux Enterprise Server 支持多个内核版本的平行安装。安装第二个内核时,将自动创建一个引导项和一个 initrd,因此无需做进一步的手动配置。重引导计算机时,新添加的内核可用作附加的引导参数。

使用此功能,您可以安全测试内核更新,同时,还始终能够回退到已经过验证的前一内核。执行此操作时,请不要使用更新工具(例如 YaST 联机更新或更新小程序),而应该遵照本章中所述的过程。

警告
警告:支持权利

请注意,如果您安装自行编译的内核或第三方内核,则会失去所有的支持权利。仅支持 SUSE Linux Enterprise Server 随附的内核,以及通过官方更新渠道为 SUSE Linux Enterprise Server 提供的内核。

提示
提示:检查引导加载程序配置内核

建议在安装其他内核后检查您的引导加载程序配置,以设置您选择的默认引导项。有关更多信息,请参见第 18.3 节 “使用 YaST 配置引导加载程序”

27.1 启用和配置多版本支持

SUSE Linux Enterprise Server 12 和更高版本中,系统默认支持安装软件包的多个版本(多版本支持)。要验证此设置,请按如下所示继续:

  1. root 身份使用所选的编辑器打开 /etc/zypp/zypp.conf

  2. 搜索字符串 multiversion。如果为所有支持此功能的内核软件包启用多版本,以下行可能会取消注释:

    multiversion = provides:multiversion(kernel)
  3. 如果要仅允许特定内核类型具有多版本支持,请为 /etc/zypp/zypp.conf 中的 multiversion 选项添加逗号分隔的软件包名称列表,例如:

    multiversion = kernel-default,kernel-default-base,kernel-source
  4. 保存所做的更改。

警告
警告:内核模块软件包 (KMP)

确保也为更新后的新内核安装了由供应商提供的必需的内核模块(内核模块软件包)。内核更新过程不会发出有关最终缺少内核模块的警告,因为系统上保留的旧内核仍能满足软件包要求。

27.1.1 自动删除未使用的内核

如果您经常测试已启用多版本支持的新内核,引导菜单很快就会变得无序。由于 /boot 分区的空间通常有限,因此,您可能会遇到 /boot 溢出的问题。您可以使用 YaST 或 Zypper 手动删除未使用的内核版本(如下文所述),也可以将 libzypp 配置为自动删除不再使用的内核。默认情况下不会删除内核。

  1. root 身份使用所选的编辑器打开 /etc/zypp/zypp.conf

  2. 搜索字符串 multiversion.kernels,并通过取消注释该行来激活此选项。此选项将会使用包含以下值的逗号分隔列表:

    5.3.18-53.3:: 保留具有指定版本号的内核

    latest:: 保留具有最高版本号的内核

    latest-N:: 保留版本号排在第 N 位的内核

    running:: 保留正在运行的内核

    oldest:: 保留具有最低版本号的内核(最初 SUSE Linux Enterprise Server 随附的内核)

    oldest+N 保留版本号排在倒数第 N 位的内核

    以下是一些示例

    multiversion.kernels = latest,running

    保留最新内核以及当前正在运行的内核。这相当于不启用多版本功能,不过,旧内核是在下一次重引导后才去除的,而不是在安装后立即去除。

    multiversion.kernels = latest,latest-1,running

    保留最新的两个内核,以及当前正在运行的内核。

    multiversion.kernels = latest,running,5.3.18-53.3

    保留最新的内核、当前正在运行的内核,以及 5.3.18-53.3

    提示
    提示:保留正在运行的内核

    除非您使用的是特殊的设置,否则始终将内核标记为 running

    如果不保留正在运行的内核,系统在更新内核时会将其删除。而这意味着正在运行的内核的所有模块也会被删除,并且无法再加载。

    如果您决定不保留正在运行的内核,则在内核升级后始终应立即重引导,以免模块发生问题。

27.1.2 用例:仅在重引导后删除旧内核

您想要确保只在系统成功用新内核重引导之后才删除旧内核。

更改 /etc/zypp/zypp.conf 中的下面一行:

multiversion.kernels = latest,running

上面的参数告知系统要保留最新内核以及正在运行的内核(前提是两者不同)。

27.1.3 用例:保留较旧内核作为后备

您想要保留一个或多个内核版本,以便有一个或多个备用的内核。

如果您需要使用内核进行测试,则这样做可能十分有用。如果出现了故障(例如,您的计算机不能引导),您仍可使用一个或多个已知正常的内核版本。

更改 /etc/zypp/zypp.conf 中的下面一行:

multiversion.kernels = latest,latest-1,latest-2,running

安装新内核之后,当您重引导系统时,系统将保留三个内核:当前内核(配置为 latest,running)以及它的前两任(配置为 latest-1latest-2)。

27.1.4 用例:保留特定的内核版本

您要执行定期系统更新和安装新的内核版本。但是,您还要编译自己的内核版本,并想要确保系统保留这些版本。

更改 /etc/zypp/zypp.conf 中的下面一行:

multiversion.kernels = latest,5.3.18-53.3,running

安装新内核之后,当您重引导系统时,系统将保留两个内核:新的且正在运行的内核(配置为 latest,running),自我编译的内核(配置为 5.3.18-53.3)。

27.2 使用 YaST 安装/去除多个内核版本

可以使用 YaST 安装或去除多个内核:

  1. 启动 YaST,然后通过软件 ›  软件管理打开软件管理器。

  2. 选择视图 › 软件包分类 › 多版本软件包,以列出能够提供多个版本的所有软件包。

    YaST 软件管理器:多版本视图
    图 27.1︰ YaST 软件管理器:多版本视图
  3. 在底部窗格的左侧选择一个软件包并打开其版本选项卡。

  4. 要安装某个软件包,请单击它旁边的复选框。绿色选中标记表示已选择对应的软件包进行安装。

    要去除某个已安装的软件包(带有白色选中标记),请单击它旁边的复选框,直到出现红色的 X,这表示已选择去除该软件包。

  5. 单击接受开始安装。

27.3 使用 Zypper 安装/去除多个内核版本

可以使用 zypper 安装或去除多个内核:

  1. 使用命令 zypper se -s 'kernel*' 显示所有可用内核软件包的列表:

    S  | Name                 | Type    | Version           | Arch   | Repository
    ---+----------------------+---------+-------------------+--------+------------------------------------------------------
    i+ | kernel-default                          | package | 6.4.0-150600.9.2              | x86_64 | SLE-Module-Basesystem15-SP6-Pool
       | kernel-default-base                     | package | 6.4.0-150600.9.2.150600.10.40 | x86_64 | SLE-Module-Basesystem15-SP6-Pool
       | kernel-default-devel                    | package | 6.4.0-150600.9.2              | x86_64 | SLE-Module-Basesystem15-SP6-Pool
       | kernel-devel                            | package | 6.4.0-150600.9.2              | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-all                     | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-amdgpu                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-ath10k                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-ath11k                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-ath12k                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-atheros                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-bluetooth               | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-bnx2                    | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-brcm                    | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-chelsio                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-dpaa2                   | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-i915                    | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-intel                   | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-iwlwifi                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-liquidio                | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-marvell                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-media                   | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-mediatek                | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-mellanox                | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-mwifiex                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-network                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-nfp                     | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-nvidia                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
       | kernel-firmware-nvidia-gsp-G06          | package | 525.116.04-150500.1.1         | x86_64 | SLE-Module-Basesystem15-SP6-Pool
       | kernel-firmware-nvidia-gspx-G06         | package | 550.54.14-150600.1.1          | x86_64 | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-platform                | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-prestera                | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-qcom                    | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-qlogic                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-radeon                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-realtek                 | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-serial                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-sound                   | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-ti                      | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-ueagle                  | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
    i  | kernel-firmware-usb-network             | package | 20240201-150600.1.1           | noarch | SLE-Module-Basesystem15-SP6-Pool
       | kernel-macros                           | package | 6.4.0-150600.9.2              | noarch | SLE-Module-Basesystem15-SP6-Pool
  2. 安装时指定确切的版本:

    > sudo zypper in kernel-default-6.4.0-150600.9.2
  3. 卸装内核时,使用命令 zypper se -si 'kernel*' 可以列出安装的所有内核,使用 zypper rm PACKAGENAME-VERSION 可以去除指定软件包。