如何在 Ubuntu 21.10 Impish Indri 上安装内核 5.15.7=>?

如何在 Ubuntu 21.10 Impish Indri 上安装内核 5.15.7=>?

我正在使用 Ubuntu 21.10顽皮的因德里

对于某些特定的硬件支持,我建议升级到内核 5.16(主线)。我尝试手动安装.deb文件并使用 安装它们dpkg -i。但是,我遇到了依赖性问题:

The following packages have unmet dependencies:
 linux-headers-5.16.0-051600-generic : Depends: libssl3 (>= 3.0.0~~alpha1) but it is not installable

我运行sudo apt -f install后,系统建议删除 5.16 内核包。因此,我暂时删除了它们。

如何在 Ubuntu 21.10 上安装内核 5.16顽皮的因德里? 我已启用所有存储库,无需额外的 PPA。

答案1

总结:您可以从 22.04 存储库手动安装该包。

Ubuntu 主线内核 5.15.7+ 和 5.16 将要求从libssl1.1 (>= 1.1.0)提高到libssl3 (>= 3.0.0~~alpha1)。但是,libssl3软件包不是 适用于 Ubuntu 21.10顽皮的因德里。 这只是适用于 Ubuntu 22.04果酱水母尚未发布。

libssl3进一步取决于libc6>=2.34以及debconf哪个可在 21.10 存储库中使用。

因此,你可以libssl3从 Jammy Jellyfish 存储库手动安装。除非你对系统做了一些非常奇怪的事情,否则你这样做不会遇到任何问题。

要在 Ubuntu 21.10 上安装libssl3,请运行以下命令:

sudo apt update
sudo apt install libc6 debconf
wget http://mirrors.kernel.org/ubuntu/pool/main/o/openssl/libssl3_3.0.1-0ubuntu1_amd64.deb
sudo dpkg -i libssl3_3.0.1-0ubuntu1_amd64.deb
sudo apt -f install

现在,您可以在 Ubuntu 21.10 上安装内核 5.16 而不会出现任何问题。

请记住,主线内核尚未在其 Ubuntu 版本中测试。这意味着您正在进行测试。您可能会遇到意外情况。Ubuntu 更喜欢稳定的 LTS 内核,而不是不稳定的主线内核。

您可以使用以下命令安装未签名的内核 5.16(除非你使用安全启动,否则不要担心未签名):

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600_5.16.0-051600.202201092355_all.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-image-unsigned-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-modules-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
sudo dpkg -i linux*.deb
sudo apt -f install

答案2

手动安装的替代方法libssl3是固定该包。固定的说明见社区帮助 Wiki

您需要编辑 3 个文件。sudo touch <filename>如果它们尚不存在,请先创建它们。这可确保权限和所有权设置正确。


/etc/apt/apt.conf.d/01ubuntu

APT::Default-Release "impish";

这使得impish安装软件包成为默认的 Ubuntu 版本。


/etc/apt/sources.list.d/ubuntu-jammy.list

deb http://mirror.example.com/ubuntu/ jammy main

这将添加jammy(22.04) 存储库。Ubuntu 实际上默认不使用它,因为 的值APT::Default-Release。我再说一遍,我再怎么强调也不为过:Ubuntu 永远不会从这个(或任何其他)jammy存储库安装任何软件包,除非以下条件之一成立:

  • 您明确告诉apt安装仅存在于存储库中的特定版本jammy(这假设您知道自己在做什么!)
  • 某个包(的特定版本)被作为依赖项引入
  • 您使用固定功能创建了一般规则的例外 - 请参阅下一个文件。
  • 该软件包不存在于主 Ubuntu 存储库中,仅存在于添加的第三方存储库(如 PPA)中。

/etc/apt/preferences.d/libssl3

Package: libssl3
Pin: release n=jammy
Pin-Priority: 900

libssl3这会为来自存储库的包赋予更高的优先级jammy,并且仅此包。因此对于所有包,impish这是默认设置,而对于则libssl3有例外。


现在运行sudo apt update。在编辑完所有 3 个文件之前请勿运行它!

要查看要安装的软件包,请运行apt-cache policy

$ apt-cache policy libssl3
libssl3:
  Installed: (none)
  Candidate: 3.0.1-0ubuntu1
  Version table:
     3.0.1-0ubuntu1 900
        500 http://mirror.unix-solutions.be/ubuntu jammy/main amd64 Packages
        100 /var/lib/dpkg/status

libssl3如您所见,存储库中只有一个安装候选项jammy

$ apt-cache policy linux-image-generic
linux-image-generic:
  Installed: 5.13.0.35.44
  Candidate: 5.13.0.35.44
  Version table:
     5.15.0.22.24 500
        500 http://mirror.unix-solutions.be/ubuntu jammy/main amd64 Packages
 *** 5.13.0.35.44 990
        990 http://mirror.unix-solutions.be/ubuntu impish-updates/main amd64 Packages
        990 http://mirror.unix-solutions.be/ubuntu impish-security/main amd64 Packages
        100 /var/lib/dpkg/status
     5.13.0.19.30 990
        990 http://mirror.unix-solutions.be/ubuntu impish/main amd64 Packages

该软件包linux-image-generic可用:

  • 在版本5.15.0.22.24jammy/main,优先500
  • 在版本中5.13.0.35.44,在impish-updates/main和中impish-security/main,优先990
  • 在 版本5.13.0.19.30(发布时来自 USB 或 DVD 安装程序的原始版本),在 中impish/main,优先于990

表示***将安装哪个版本。


在我的特定用例中,我必须安装许多内核:,,,,5.13。我目前安装了 35 个内核:5.145.155.165.17

$ ls -1 /boot/initrd* | wc --lines
35

为了演示libssl在需要时自动作为依赖项安装,我安装了 Ubuntu 内核5.15.0-22-generic,它也来自 Jammy:

$ sudo apt install linux-{image,headers,modules,modules-extra}-5.15.0-22-generic
Reading package lists... Done
Building dependency tree... Donesudo apt install linux-{image,headers,modules,modules-extra}-5.15.0-22-generic
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libssl3 linux-headers-5.15.0-22
Suggested packages:
  fdutils linux-doc | linux-source-5.15.0
The following NEW packages will be installed:
  libssl3 linux-headers-5.15.0-22 linux-headers-5.15.0-22-generic linux-image-5.15.0-22-generic linux-modules-5.15.0-22-generic linux-modules-extra-5.15.0-22-generic
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 103 MB of archives.
After this operation, 565 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Reading state information... Done
The following additional packages will be installed:
  libssl3 linux-headers-5.15.0-22
Suggested packages:
  fdutils linux-doc | linux-source-5.15.0
The following NEW packages will be installed:
  libssl3 linux-headers-5.15.0-22 linux-headers-5.15.0-22-generic linux-image-5.15.0-22-generic linux-modules-5.15.0-22-generic linux-modules-extra-5.15.0-22-generic
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 103 MB of archives.
After this operation, 565 MB of additional disk space will be used.
Do you want to continue? [Y/n]

如您所见,该包libssl3已自动作为依赖项引入。

如果不需要 5.15 内核,那么可以直接安装libssl3

$ sudo apt install --yes libssl3

尽管如此,你仍然没有安装主线内核,我非常同意所有关于永久添加内核 PPA 的警告。作为替代方案,你可以使用Ubuntu 主线内核安装程序(UMKI),一个用于安装最新主线内核的图形工具。它从主线内核 PPA 获取列表,而实际上不需要将 PPA 添加到您的源中。您可以.deb从 GitHub 发布页面安装该软件包,或者执行以下操作:

sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline

如果您不喜欢(或不能使用)GUI,它还有一个 CLI:

$ mainline
mainline 1.0.15
Distribution: Ubuntu 21.10
Architecture: amd64
Running kernel: 5.13.0-22-generic

mainline 1.0.15 - Ubuntu Mainline Kernel Installer

Syntax: mainline <command> [options]

Commands:

  --check             Check for kernel updates
  --notify            Check for kernel updates and notify current user
  --list              List all available mainline kernels
  --list-installed    List installed kernels
  --install-latest    Install latest mainline kernel
  --install-point     Install latest point update for current series
  --install <name>    Install specified mainline kernel(1)
  --uninstall <name>  Uninstall specified kernel(2)
  --uninstall-old     Uninstall kernels older than the running kernel
  --download <name>   Download specified kernels(2)
  --clean-cache       Remove files from application cache

Options:

  --include-unstable  Include unstable and RC releases
  --hide-unstable     Hide unstable and RC releases
  --debug           Enable verbose debugging output
  --yes             Assume Yes for all prompts (non-interactive mode)
  --user            Override user

Notes:
(1) A version string taken from the output of --list
(2) One or more version strings (comma-separated) taken from the output of --list

例如sudo mainline --install-latest --include-unstable当前安装主线内核5.17.0-rc7


到目前为止,我已经使用 UMKI 安装了 12 个不同的内核,我对此非常满意。

只要您严格按照上述步骤操作,此方法是安全的,只需安装libssl。不相信?没问题。在虚拟机等安全环境中亲自尝试一下。还是不相信?删除(或注释掉)该文件/etc/apt/sources.list.d/ubuntu-jammy.list安装后立即再次libssl运行sudo apt update


还有一件事要完成:如果你决定从 升级impishjammy,那么你只需要删除(或注释)这 3 个文件/etc/apt/apt.conf.d/01ubuntu/etc/apt/sources.list.d/ubuntu-jammy.list/etc/apt/preferences.d/libssl3在开始升级之前。第一个是必须的,其他两个只是一些日常工作,因为你不再需要它们。


此答案引用自Ubuntu 主线内核安装程序 GitHub 问题 127并构成了他们的基础关于安装 libssl 的 wiki 页面。您还可以阅读我的博客

相关内容