主线内核现在依赖于 libc6 2.33,在焦点中不可安装?

usr*_*etc 26 compiling kernel glibc 20.04

我一直很高兴在我的 Ubuntu 20.04 上安装 5.10 主线内核(来自https://kernel.ubuntu.com/~kernel-ppa/mainline/)。

在尝试更新到 5.10.33 时,我发现该包对 libc >=2.33(焦点位于 2.31)存在不受欢迎的依赖性-headers(虽然不是图像本身——但谁不想没有头文件)。

AFAIK,libc6 几乎不可能升级。是这个吗?除非我放弃 LTS,否则我会停留在 5.10.32 吗?这些人甚至有一个可以报告错误的面向公众的网站吗?

更新:这似乎是主要的启动板错误。一件好事:tuxinvader提出了一个Docker 容器(来自 Github:focal-mainline-builder)用于构建内核主线映像并将 5.10 - 5.12 包上传到他的 PPA:

提示:要查看您选择的系列/版本范围的所有可用 linux 软件包,在弄乱 PPA 和 Debian 向后移植、xanmod 等(如我所见)之后,请执行以下操作

apt update
printf '%s\0' linux-{image-unsigned,headers,modules}-5.10.{32..40} |
  xargs -0 -n 1 apt-cache pkgnames | LC_ALL=C sort | less
Run Code Online (Sandbox Code Playgroud)

希望这个问题会消失。但是让我们面对现实吧,根据“内核主线 PPA”(或它背后的任何人,我仍然不明白如何接触到这些开发人员)的突发奇想,对于二进制文件并不是一种愉快的体验。

Dou*_*ies 7

您可以继续使用 LTS,但您需要自己编译主线内核以克服新的依赖性问题。

使用的主线编译器版本似乎刚刚改变:

doug@s19:~/temp-k-git/linux$ scripts/diffconfig .config-5.12.0-051200rc6-lowlatency .config-5.12.0-051200-lowlatency
 CC_VERSION_TEXT "gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0" -> "gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0"
 GCC_VERSION 100200 -> 100300
 LD_VERSION 23501 -> 23601
+DEBUG_INFO_BTF_MODULES y
+PAHOLE_HAS_SPLIT_BTF y
Run Code Online (Sandbox Code Playgroud)

但是如果我只是采用 Ubuntu 内核配置并自己编译,在我的 20.04 主测试服务器上,它安装得很好。IE 依赖项是所用编译器版本的函数,而不是内核源代码。

不是很相关,但这是我编译的配置差异:

doug@s19:~/temp-k-git/linux$ scripts/diffconfig .config-5.12.0-051200-lowlatency .config
-DEBUG_INFO_BTF y
-DEBUG_INFO_BTF_MODULES y
-DEBUG_INFO_COMPRESSED n
-DEBUG_INFO_DWARF4 y
-DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT n
-DEBUG_INFO_REDUCED n
-DEBUG_INFO_SPLIT n
-GDB_SCRIPTS y
-PAHOLE_HAS_SPLIT_BTF y
 CC_VERSION_TEXT "gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" -> "gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
 DEBUG_INFO y -> n
 GCC_VERSION 100300 -> 90300
 LD_VERSION 23601 -> 23400
 SYSTEM_TRUSTED_KEYS "debian/canonical-certs.pem" -> ""
Run Code Online (Sandbox Code Playgroud)

  • 也有可能 gcc 更改是无意的,他们可能会还原它,我想我过去已经看到过这种情况 (2认同)

est*_*rdo 7

我能够libc6使用提到的 ppa 在 Ubuntu 20.04 和 2.31 上安装 5.12:

sudo add-apt-repository ppa:tuxinvader/lts-mainline

sudo apt install linux-image-unsigned-5.12.4-051204-generic linux-modules-5.12.4-051204-generic linux-headers-5.12.4-051204-generic
Run Code Online (Sandbox Code Playgroud)


小智 6

这是我如何从 ubuntu mainline-kernel 使用内核 5.11.18 生成 dkms 模块。我运行 Linux Mint 20.1 Cinnamon 并在 dkms 中使用 nvidia-driver-460 版本 460.73.01-0ubuntu0.20.04.1。我使用的 gcc 是 10.3 版。使用 ver 5.11.16-generic 一切正常,但在我尝试 5.11.18 时停止了。所以我试图找出dkms没有编译内核模块的问题。这就是我所做的:

  1. 已安装内核 5.11.18-generic
  2. 发现在内核头文件中 fixdep 与 glibc 2.33 有关
  3. 发现在内核头文件中 modpost 与 glibc 2.33 相关
  4. 将 /lib/modules/5.11.18-generic/build/scripts/basic/fixdep 替换为 5.11.16 中的那个
  5. 将 /lib/modules/5.11.18-generic/build/scripts/mod/modpost 替换为 5.11.16 中的
  6. 针对内核 5.11.18 运行 dkms(/usr/lib/dkms/dkms_autoinstaller start 5.11.18-051118-generic)
  7. 已成功生成 n​​vidia 内核模块。重新启动,它工作正常。甚至在内核 5.12.1 上也尝试过同样的方法,并且成功了。

希望这可以帮助。