我正在尝试为 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/rules
和debian/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 软件包名称的一部分。