openSUSE:Kernel git
入门
首先,安装 git,越新越好。 已知 git-core-1.5.6 或更新版本有效,如果您使用的是较旧的 GIT 并遇到问题,请报告它们(最好附带补丁)至 opensuse-kernel@opensuse.org。 如果您没有遇到问题,请更新有关已知有效最低版本的句子。
设置克隆
git clone https://github.com/openSUSE/kernel
这将仅创建 master 分支,要设置其他分支,请执行
git checkout -b $branch origin/$branch
稍后只需
git checkout $branch
使用git branch -r查看哪些分支存在。 另请参见 #分支名称 下方。
有些人更喜欢为他们所做的每个分支创建一个单独的克隆。 在这种情况下,您可以复制克隆,或者再次克隆,但使用--reference选项(假设 kernel 是一个预先存在的克隆)
git clone --reference kernel https://github.com/openSUSE/kernel kernel-15.2
请注意,如果您仅使用一个或几个分支在一个克隆中,删除其他分支并更改配置以仅获取您感兴趣的分支(默认情况下,如果您执行 git pull,则会获取所有内容)是一个好主意。
git checkout -b openSUSE-15.2 origin/openSUSE-15.2 git branch -D master git config remote.origin.fetch +refs/heads/openSUSE-15.2:refs/remotes/origin/openSUSE-15.2
如果您将提交任何内容,现在是时候介绍一下自己了
git config [--global] user.name "Your Name Comes Here" git config [--global] user.email your@email
分支名称
openSUSE 内核分支命名为 openSUSE-$version,例如 openSUSE-42.3 或 openSUSE-15.1。 SLE 分支使用 SLE${version} 作为 GA 分支,SLE${version}-SP${number} 作为服务包。 在 kernel-source 仓库中,每个分支还有一个 README.BRANCH 文件,指示分支的目的。
可以在 kernel.suse.com 上找到活动分支的概述。
请注意:已达到 EOL 的产品的分支将从 git 仓库中删除。
获取您当前的内核配置
获取您当前内核配置的最简单方法是
cp /boot/config-`uname -r` .config
使用 kernel-source 仓库
如前所述,开发发生在 kernel-source 仓库中。 该仓库还托管.config文件和 rpm spec 文件,用于构建 rpm 包。 要克隆它,请运行
git clone https://github.com/SUSE/kernel-source cd kernel-source scripts/install-git-hooks
install-git-hooks 脚本设置了一个提交钩子和其他辅助工具,以便自动捕获常见错误。 仓库的布局如下
- config/$arch/$flavor: 配置文件
- patches.*/: 应用到香草树的补丁。patches.kernel.org和patches.rpmify的特殊之处在于这些也应用于 kernel-vanilla flavor。
- rpm/: spec 文件和最终出现在 rpm 包中的脚本。
- kabi/: Kabi 参考文件。
- scripts/: 仓库内使用的脚本。
要生成一个 quilt 树,以便您可以添加补丁或更新现有补丁,请运行
scripts/sequence-patch.sh
这将在tmp/子目录中解包香草 linux tarball,应用补丁系列并生成 quilt 所需的元数据。 应该使用 refresh_patch.sh 脚本来刷新补丁,以便它们具有通用格式。 每个内核补丁都需要一个标题,请参阅 README 文件了解详细信息。 如果您正在移植上游补丁,请将其放入该文件的 *排序部分*,使用 git_sort(SUSE 内核仓库中的一组脚本)。 完成后,使用series.conf文件在顶级目录中。 如果您正在移植上游补丁,请将其放入该文件的 *排序部分*,使用 git_sort(SUSE 内核仓库中的一组脚本)。 完成后,使用
scripts/log
提交您的更改,这将启动一个编辑器,其中包含预生成的 changelog 条目。 如果您只是添加补丁,则足以使用 changelog,否则根据需要扩展它并键入:wq。 请使用 scripts/log 进行提交,以便 changelog 具有统一的格式。
刷新其他补丁
在series.conf中添加了补丁后,后续的某些补丁可能需要刷新。 在添加更大的补丁系列时,这可能会很麻烦。 在这种情况下,您可以
- git tag base
- 将所有补丁添加到 series.conf
- ./scripts/log# 不刷新任何其他补丁
- git rebase -i -x ~/bin/kseries_check base
- git tag -d base
的内容~/bin/kseries_check是
#!/bin/sh if hash rapidquilt 2> /dev/null ; then scripts/sequence-patch.sh -q --rapid --dry-run || exit 1 else scripts/sequence-patch.sh -q --fast > /dev/null 2>&1 || exit 1 fi
它将在需要刷新补丁时将您放入 shell。 刷新后,运行
- git reset HEAD^
- ./scripts/log
- git rebase --continue
构建内核包
scripts/tar-up.sh
这将在 kernel-source 子目录中创建一个源包。 您可以使用 rpmbuild 构建内核 RPM,或者如果您有 构建服务 帐户,请使用 osc_wrapper 脚本
scripts/osc_wrapper # local build scripts/osc_wrapper kernel-source/kernel-debug.spec # locally build a flavor other than "default" scripts/osc_wrapper upload home:$login:kernel # remote build
将您的更改提交给内核团队
请记住,将补丁包含在 openSUSE 内核中的推荐方法是将其推送到上游(对于 master,Linus 的树;对于已发布的产品,v5.x.y)。 如果您想更改打包、脚本或配置文件中的内容,请将您的补丁发送到