如何使用自定义版本字符串编译内核?

如何使用自定义版本字符串编译内核?

我正在尝试为 ubuntu 15.10(4.2.0)编译一个库存内核,但希望内核版本有所不同,并在最后添加少量文本,这样它就不会与原始内核冲突。

更具体地说,我希望生成的 deb 包与安装和删除的常规包不同,而不会导致系统无用。此外,启动启动屏幕上显示的字符串也应该有一个自定义字符串(这也会影响“uname -r”等)。

为了实现第一个目标,我遵循了“构建自己的内核”一文(https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel)。通过按照建议修改“debian.master/changelog”,生成的 deb 包确实会得到所需的更改,并且可以在存在相同内核版本的情况下进行安装。

但它对启动配置没有任何影响,因为二进制内核映像版本字符串保持不变。因此我手动更改了主 Makefile,以在 EXTRA_LOCALVERSION 变量中设置自定义字符串。仍然没有达到预期效果。

关于正确的内核处理,有什么想法或资源可以阅读吗?

谢谢,莫蒂。

答案1

总结

debian.hwe-xxx/changelog应该修改的是,而不是debian.master/changelog

我如何找到它

这个问题已经提出很多年了,但我希望它仍然有用。

最近,我在尝试重建我自己的 Ubuntu 5.8.0-48 内核版本时遇到了这个问题。通过深入研究Ubuntu 内核源代码树中的debian/rulesdebian/rules.d/*,我发现版本字符串包含在abi_release(check debian/rules.d/2-binary-arch.mk) 中。追踪其定义后:

# debian/rules.d/0-common-vars.mk
abi_release := $(release)-$(abinum)

# debian/rules.d/0-common-vars.mk
release := $(shell sed -n '1s/^$(src_pkg_name).*(\(.*\)-.*).*$$/\1/p' $(DEBIAN)/changelog)

# debian/debian.env
DEBIAN=debian.hwe-5.8

我尝试在那里更改版本字符串,它(有点)有效。uname -a启动后会显示新版本,但它不会成为 .deb 软件包名称的一部分。

相关内容