to be a janitor(2)
kernel hacking的准备工作还是比较复杂的,特别是对于像我这种windows guy,手笨,命令参数快捷键也记不住的人。所以,还是要仔细阅读下面的链接,按照步骤一步一步的做一遍
https://kernelnewbies.org/FirstKernelPatch
https://kernelnewbies.org/OutreachyfirstpatchSetup?action=show&redirect=OPWfirstpatchSetup
订阅邮件列表之后,继续按照newbies里面的步骤进行准备
1, vim 插件
我安装了ctags,cscope,NERDTree,winmamager,omnicomplete等几个插件。
ctags使用命令ctags -R --C-kinds=+p --fields=+aS --extra=+q,否则omnicomplete找不到到patter,不知何故。
cscope -Rbkq
对我来讲,基本够用了
不过,我还是安装了wine和sourceinsight,以备不时之需。
2,IRC
xchat不知为什么在ubuntu软件中心找不到,我下载了kvirc,用着也还可以。
输入
/server irc.oftc.net,
/join #kernelnewbies
可以开始和其他的newbies交流了。我和一些人聊了几句,他们告诉我janitor这个项目基本已经死了。我想后面搭建好环境之后,看开staging里面有没有可以参与的项目。
3,git hook
以前没用过,我理解大概意思是在git某一个操作,根据hook的类型,在或前或后加上hook脚本里的操作。kernel开发要求使用checkpatch.pl来检查codes style,为了简便,在.git/hook中加入脚本post-commit,这样在git commit之后就可以直接运行checkpatch.pl来对patch进行检查。
post-commit内容如下:
#!/bin/sh exec git show --format=email HEAD | ./scripts/checkpatch.pl --strict --codespell
把post-commit拷贝到.git/hook中,然后修改文件属性
chmod a+x .git/hooks/pre-commit同时还要安装codespell
apt-get install codespell
这样,git-commit之后就可以看到codestyle是否有错误信息了。如果没有使用hook,可以直接运行上述命令,或
perl scripts/checkpatch.pl -f drivers/staging/android/* | less
4, git常用命令
1)修改文件
2)git add filename
git diff --cached可以查看修改
3)git commit -s -v
4)git commit --amend
修改comments就直接使用该命令,修改代码还要做git add
ctrl O, enter. ctrl X enter完成操作
git show --pretty=oneline --abbrev-commit HEAD查看修改
5)git format-patch -o ~/patches/ HEAD^ --subject-prefix="PATCH v2"
生成patch文件,--subject-prefix="PATCH v2"用于第二次review后的修改
5,发送patch
原本准备使用evolution,但格式上还是有些问题,尝试了一下mutt和esmtp, 还有git email,发邮件可以,其他操作就不会了。
1)mutt/esmtp
sudo apt-get install esmtp
sudo apt-get install mutt
home目录下创建.esmtprc,添加如下内容
identity "[email protected]" hostname smtp.gmail.com:587 username "[email protected]" password "ThisIsNotARealPassWord" starttls required
home目录下创建.muttrc,添加如下内容
set sendmail="/usr/bin/esmtp" set envelope_from=yes set from="Your Name <[email protected]>" set use_from=yes set edit_headers=yes
然后,运行命令mutt -H ~/patches/0001-staging-test-for-committing-my-first-patch.patch,发给自己,可以收到而且格式看起来正确。
(patchset还需要看开,回复使用evolution,但回复有星期几变成了汉字,回头看开怎么消除)
2)使用git send-email
首先安装sudo apt-get install git-email
然后在.gitconfig里增加
[sendemail] smtpserver = /usr/bin/esmtp
然后运行
git send-email ~/patches/0001-staging-test-for-committing-my-first-patch.patch
根据提示输入收件人信息,然后发送,OK。
注:使用下面命令可以查看这个patch需要发给谁。
git show HEAD | perl scripts/get_maintainer.pl --separator , --nokeywords --nogit --nogit-fallback --norolestats --nol
基本上配置工作完成了,patchset还需要再看开怎么组织和发送,还有不会使用mutt回复邮件和讨论问题,需要借助evolution。