主线内核现在依赖于 libc6 2.33,无法安装?

主线内核现在依赖于 libc6 2.33,无法安装?

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

尝试更新到 5.10.33 时,我发现该包对 libc >=2.33(焦点在 2.31)存在不受欢迎的依赖性-headers(虽然不是图像本身 - 但谁愿意没有标题呢)。

据我所知,libc6 几乎不可能升级。是这样的吗?除非我放弃 LTS,否则我只能使用 5.10.32 吗?这些人甚至有一个可以报告错误的面向公众的网站吗?

更新:这似乎是主要的启动板错误。由此产生的一件好事:塔辛入侵者已经想出了一个Docker 容器(Github 来源:焦点主线建造者) 用于构建内核主线映像,并将 5.10 - 5.12 软件包上传到他的 PPA:

提示:要查看所选系列/版本范围内的所有可用 Linux 软件包,在弄乱 PPA 和 Debian backports、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

希望这个问题会消失。但让我们面对现实吧,这取决于“内核主线 PPA”的想法(或者它背后的任何人,我仍然不明白如何联系这些开发人员) 对二进制文件来说并不是一个愉快的经历。

答案1

您可以继续使用 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

但是,如果我只采用 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" -> ""

答案2

以下是我如何从 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。使用版本 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 进行相同操作,结果成功。

希望这可以帮助。

答案3

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

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

答案4

另一个无需编译即可继续使用 5.10 的简单选择似乎是使用自定义内核。比如xanmod。问题是,他们似乎没有为旧 LTS 系列的“性能”改进投入太多精力,所以我思考你可能会得到一个相当标准的内核。例如这是xanmod 5.10.35

相关内容