我正在尝试构建 Ubuntu 内核,按照ubuntu 构建自己的内核。
我有兴趣使用 git,这样我就可以轻松地分支和回溯我的错误。我使用 git 得到了一个版本,如下所示:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git
这将创建目录 ubuntu-xenial/ 但不幸的是,构建失败了。
运行头 ubuntu-xenial/Makefile
给出:
VERSION = 4
PATCHLEVEL = 4
SUBLEVEL = 30
EXTRAVERSION =
NAME = Blurry Fish Butt
另一方面,使用 apt-get 获取版本:
apt-get source linux-image-$(uname -r)
创建 linux-4.4.0/ 令人惊讶的是,版本不同。
运行头 linux-4.4.0/Makefile
给出:
VERSION = 4
PATCHLEVEL = 4
SUBLEVEL = 35
EXTRAVERSION =
NAME = Blurry Fish Butt
4.4.35 不在 git 中。
我的问题是:在哪里可以找到当前版本更新的 git 存储库?
或者至少是一个不会失败的版本。
答案1
内核源代码的最佳来源是https://www.kernel.org/
这些未经 Canonical 修改。
Canonical 在编译 Ubuntu 内核时会对其分发的内核应用各种补丁。这些补丁可以在其公共内核存储库中按内核版本查看:
http://kernel.ubuntu.com/~kernel-ppa/mainline/
并检查相应目录下的 *.patch 文件。
这些补丁是否能带来好处仍有待商榷。
以下 repo 可帮助安装较新的内核,或者编译相同的内核: https://github.com/mtompkins/linux-kernel-utilities
我知道您问的是针对某个git
存储库的问题,但我相信上面的答案是合理的。git pull
您可以下载压缩文件、解压并继续。
这将确保您在编译预期成功时从快照进行编译。在我看来,使用源代码进行编译git
是针对内核开发人员的,因为在点发布之间可能会出现中间问题。
答案2
您从正确的地方下载了资源,但却以错误的方式构建了内核。
为了获得 Ubuntu 版本控制,你需要以 Debian 方式构建内核
fakeroot debian/rules binary-headers binary-generic
该debian
目录包含正确的.config
文件,并且版本将与 Ubuntu 版本匹配。我成功地从ubuntu-xenial
repo 构建了内核。
如果您使用 进行构建make
,您将获得主线版本,并且大多数情况下会获得错误的配置。
很难说清楚为什么在没有任何信息的情况下无法制作内核。我从 构建内核时没有任何问题ubuntu-xenial
。
apt-get
获取相同的来源。