问题:从官方网站下载了 ubuntu liveserver 22.04 ISO,截至 2022 年 12 月 9 日,内核版本为 5.15.0-43。安装过程中有一个必填字段“镜像地址”,默认情况下它带有http://us.archive.ubuntu.com/ubuntu,这里的“us”是区域,我们可以使用http://archive.ubuntu.com/ubuntu作为镜像列表。截至今日(2022 年 12 月 9 日),镜像中的更新版本为 56 版(5.15.0-56),因此在安装的最后一步中,它会升级到 5.15.0-56 内核。
所需解决方案:在安装期间和安装后,我们只需要获取 5.15.0-43 内核,它不应该更新/升级到 5.15.0-56 内核。如何在 ubuntu liverserver 22.04 安装期间停止更新/升级。
答案1
埋葬在安装程序深处(下位性)是将要安装的内核包的名称包含在文件中的逻辑/run/kernel-meta-package
。通常,该文件包含 linux-generic
。更改此文件内容的最简单方法可能是使用 cloud-init 来配置安装程序环境。
这是一个基本的 cloud-init 文件,它将导致安装带有内核包的系统linux-image-5.15.0-43-generic
。
#cloud-config
runcmd:
- |
cat <<EOF > /run/kernel-meta-package
linux-image-5.15.0-43-generic
EOF
安装程序需要提供 cloud-init 文件。如线程中所述Cloud-init 和实时服务器安装程序
最容易提供的元数据来源是“NoCloud”,其记录在https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html
该解决方案还可以适用于安装 5.15.0-25或任何其他可用的内核包。
笔记
- 我使用 Ubuntu 22.04 (
subiquity 22.04.2
) 进行了测试。 - 这可能是一个坏主意,因为将会安装可能包含安全问题的旧内核包。
更新
较新版本的下位性有过内核自动安装选项添加。还有错误修复这会阻止/run/kernel-meta-package
文件优先于该自动安装选项。
有了这些新版本的下位性安装内核的自动安装配置linux-image-5.15.0-43-generic
是
#cloud-config
autoinstall:
kernel:
package: linux-image-5.15.0-43-generic