是否有关于如何构建自定义内核包的文档以及将结果上传到 PPA? 具体来说,我主要想构建稳定的上游内核(即 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git)并添加 MPTCP 补丁。由于 MPTCP 补丁需要非常特定的内核版本,因此我不能简单地使用 Ubuntu 内核存储库。
到目前为止,我发现了这一点:
- 当然,手动构建内核是可行的,即:fakeroot make-kpkg clean CONCURRENCY_LEVEL=
getconf _NPROCESSORS_ONLN
fakeroot make-kpkg --initrd --append-to-version=-mptcp \ kernel_image kernel_headers kernel_source kernel_doc kernel_manual kernel_debug
然后,我得到了.deb 包。“dpkg -i ...” 也可以工作,但我想使用 apt-get 和 PPA 来自动化包处理。
make-kpkg 不会生成 .changes 文件,而这是 dput 所必需的。我当然检查了 make-kpkg 的文档和手册页,并搜索了 kernel-package 包的源代码 -> 没有关于如何让它生成正确输出的信息。
其他一些用户(例如https://forum.ubuntuusers.de/topic/ppa-mit-custom-kernel-erstellen/) 也没有管理内核 PPA 上传。至少,没有可用的文档。
是否有任何变化可以通过合理的努力来构建 PPA 可上传的内核包?
答案1
我也有同样的问题,最后找到了一个可行的解决方案。
以下对我有用。有些步骤当然可以优化。
获取主线构建的源代码,检查来源文件并获取所有内容:
git clone git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack cd mainline-crack/ git checkout -b v4.7.10 b3afc4525a507f21e98cc7571ea8c3f28484241c wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7.10/0001-base-packaging.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7.10/0002-UBUNTU-SAUCE-add-vmlinux.strip-to-BOOT_TARGETS1-on-p.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7.10/0003-UBUNTU-SAUCE-tools-hv-lsvmbus-add-manual-page.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7.10/0004-UBUNTU-SAUCE-no-up-disable-pie-when-gcc-has-it-enabl.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7.10/0005-debian-changelog.patch wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.7.10/0006-configs-based-on-Ubuntu-4.7.0-0.2.patch
应用补丁:
git am 000*
在 debian 中构建文件:
debian/规则清理
构建源 debs (无签名):
dpkg-buildpackage -us -uc -S
将 .changes 文件中的 Changed-By: 调整为您的 ppa 上传器帐户
签署包裹
deb 签名 linux_4.7.10-040710.201610220847_source.changes
上传
dput ppa linux_4.7.10-040710.201610220847_source.changes