![下载并修补内核源代码](https://linux22.com/image/1187776/%E4%B8%8B%E8%BD%BD%E5%B9%B6%E4%BF%AE%E8%A1%A5%E5%86%85%E6%A0%B8%E6%BA%90%E4%BB%A3%E7%A0%81.png)
我想在 Ubuntu 18.04 中编译并安装内核 4.20.17。因此我创建了一个名为 /home/build/kernel 的目录并执行以下命令:
git clone --depth 1 --single-branch --branch v4.20 git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack v4.20.17
这创建了/home/build/kernel/v4.20.17:
arch COPYING debian drivers include Kbuild lib Makefile README security usr
block CREDITS debian.master firmware init Kconfig LICENSES mm samples sound virt
certs crypto Documentation fs ipc kernel MAINTAINERS net scripts tools
然后我创建了 v4.20.17-patch 并下载了补丁:
0001-base-packaging.patch 0004-debian-changelog.patch
0002-UBUNTU-SAUCE-add-vmlinux.strip-to-BOOT_TARGETS1-on-p.patch 0005-configs-based-on-Ubuntu-4.20.0-2.3.patch
0003-UBUNTU-SAUCE-tools-hv-lsvmbus-add-manual-page.patch
为了应用补丁,我做了以下操作:
/home/build/kernel/v4.20.17
patch -p1 < ../v4.20.17-patch/0001-base-packaging.patch
patching file debian.master/abi/5.0.0-7.8/abiname
patching file debian.master/abi/5.0.0-7.8/amd64/generic
patching file debian.master/abi/5.0.0-7.8/amd64/generic.compiler
etc....
但是,这会创建名为 debian.master 和 debian 的新目录:
arch COPYING debian drivers include Kbuild lib Makefile README security usr
block CREDITS debian.master firmware init Kconfig LICENSES mm samples sound virt
certs crypto Documentation fs ipc kernel MAINTAINERS net scripts tools
这是应该的样子吗?
很遗憾,https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.17/没有任何说明。但我想知道,新的 debian 和 debian.master 目录有什么用处?
谢谢!
答案1
事实证明一切都很好。我只需要继续使用剩下的 4 个补丁,就会发现它不仅会创建 debian 和 debian.master 目录,还会修补一些现有文件。https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel没有介绍具体步骤,但解释了如何重建 Ubuntu 内核分发包(.deb),你也可以按照以下步骤下载并安装https://kernel.ubuntu.com/%7Ekernel-ppa/mainline/v4.20.17,例如。顺便说一句,运行 debian/rules 会打开常用的配置菜单(make menuinstall),因此您也可以进行一些更改。
您还可以从 kernel.ubuntu.com 下载并安装 .deb 文件...然后将 /boot/config-4.20.17-042017-generic 复制到内核源目录中的 .config,然后按照通常的步骤“make menuconfig、make modules_install、make install”。您还可以创建一个 .deb 包,例如 make deb-pkg LOCALVERSION=-mykernel。但是,如果您想构建“Ubuntu”风格的内核,请使用上述 Wiki 文档中提到的内核构建过程。