在android的内核启动信息中添加git提交信息

场景:公司使用git进行版本管理,发给客户的android固件反馈有问题,查问题

工作中,会遇到一些比较恶心的问题. 比如说,某个从我们手上出去的机器或者固件,过了一个多月之后反馈说有xx问题,然而,这时候我们已经很难想起这个机器里面的固件的具体状态了. 虽然内核启动信息中可以看到编译者和编译时间,但是你还是无法知道这个固件编译的时候,工程代码准确的状态,不方便定位代码排查问题.

所以,可以在内核启动信息上增加git的提交信息,目的是以后编译出来的固件都能知道最后的代码提交者是谁,这样就能更好地利用git的版本管理功能来协助排查问题了.

正常情况下,内核启动时的前几行会是类似以下这样的(别的机器上抓的):



留意到linux version开头的这一行,我们可以看到的是linux的内核版本号是3.2.0,编译者是build@roseapple,编译器的版本是gcc 4.6.3,编译时间是Oct 23 09:20:45等等

而修改之后,会类似地变成这样:


会看到linux version那一行是类似的,这里的编译者就是leung,gcc版本是4.6,编译时间是2013年11月30号,跟上面略有不同是因为截图时的机器不同,但是这不是重点。重点是下面一行,commit后面跟着一串字符,这个就是我们经常用到的git的提交号,是一串hash码,利用这一串码就能在git服务器上定位到具体提交点,然后还有提交者的名字,提交时间等等.

这样,我们已经能准确地知道,某个固件是谁在什么时候编译出来的,而他在编译这个固件的时候git上最后的提交者是谁!


实现过程

实现这个特性还是比较简单的,只要在内核里面进行两处修改即可. 下面用patch的形式展示修改过程. 首先是要修改version.c,这里是内核init的时候的版本信息来源,我们给它增加一个COMMIT _ INFO

+++ b/kernel/init/version.c
@@ -40,7 +40,7 @@ EXPORT_SYMBOL_GPL(init_uts_ns);
/* FIXED STRINGS! Don't touch! */
const char linux_banner[] =
    "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
    -       LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
    +       LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n" "(" COMMIT_INFO ")" "\n";

然后修改mkcompile _ h文件,为COMMIT _ INFO定义具体的内容,我这里是取git log的前三行,当然这里写入的内容是也可以任意的

+++ b/kernel/scripts/mkcompile_h
@@ -77,6 +77,7 @@ UTS_TRUNCATE="cut -b -$UTS_LEN"
echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"

echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
    +   echo \#define COMMIT_INFO \"`git log | head -3`\"
) > .tmpcompile

重新编译一下内核,ok.

--------------------------------------------------邪恶的分割线--------------------------------------------------


当然了,上面提到的作用只是普通的说法。更深层的用法是发现固件出问题时,一看内核log就能知道编译者是谁,最后提交者是谁,然后就可以照着名字去抓人了,嘿.

Author:leung





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Git提交代码时,我们应该遵循规范的提交信息格式,以便让其他人更好地理解这次代码提交的目的和内容。通常,我们可以使用一些工具来约束开发者编写符合规范的提交说明。一个常用的工具是Commitizen,它可以帮助我们生成符合规范的提交信息。 为了使用Commitizen,我们首先需要在项目安装cz-conventional-changelog包,并将其配置为Git提交时的默认工具。具体操作是在项目的package.json文件添加以下内容: ``` "scripts": { "cm": "git-cz" }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } ``` 然后,在我们提交代码时,可以使用以下命令替代"git commit": ``` npm run cm ``` 这样,Commitizen就会弹出一个交互式的界面,要求我们填写符合规范的提交信息。通过这种方式,我们可以更好地规范我们的提交信息,提高代码审查、信息查找和版本回退的效率和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Git 提交规范](https://blog.csdn.net/fd2025/article/details/124543690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值