在觉得自己内功已经很强的前提下想参与到linux内核的开发一共有两个重要的工作要做,如果没有接触过内核源码,本文也可以看看,因为几乎所有的开源代码都遵循本文所提到的这种方式。这两个工作是:
1.用git下载源码树,建立自己的开发分支,修改/添加代码,生成补丁
2.配置一个支持透明纯文本的邮件客户端,用于向maillist发送邮件
第一个工作的配置很简单,主要就是几条命令,但是能否修改代码或者说能否看懂内核取决于多日的修炼。这里仅介绍如何环境的配置和使用。
1.安装git,安装即可,不需要阅读其文档,因为我们不必自己建立工作环境,所有一切都是克隆的。
2.克隆一个开发环境,这是linus的源码树
git-clone http://www.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (有的公司会封掉不常用的端口,因此使用熟知的http是比较合适的)
3.建立一个自己的分支,在master之外建立自己的开发分支my,master作为基准分支,在my分支上所作的修改需要以master为基准生成补丁文件
git-branch my
4.切换到自己的my分支
git-checkout my
5.对my分支进行随意的修改,添加新功能等操作,随意的check in/out,不必担心损坏原始文件,不用担心受到别人的影响,因为所有的操作都是本地进行的,别忘了,这是git,而不是svn/cvs
6.插一个问题:难道不需要更新源码吗?我怎样才知道有新的功能加入或者别人修正了bug,而我需要更新(再来一个git-clone?)
回答:一般是不需要频繁更新的,这不是svn/cvs,这是git。git的所有正式归并动作都由专人并且在专有时间进行,经常浏览maillist和kernel.org获取最新消息,并且一定要熟悉linux内核版本号的意义,然后再根据自己的情况更新,不用git-clone,而是git-pull。git和svn/cvs最大的不同我觉得在于其归并方式,svn/cvs几乎都是公司内部使用的,链路都是局域网或者起码也是VPN,每个用户之间的访问都是对等的,并且人们很容易访问到一个中心服务器,然后都把工作提交到那里,提交即签入(check in),而git就不同了,大家所在地的网络环境均不同,个人之间几乎无法共享信息(比如无法像局域网用户那样轻易共享一个磁盘等等),中心服务器的位置以及管理都是问题,因此git的提交方式使用标准email的方式--maillist,提交并不是签入,签入由专人进行,签入之前需要maillist成员的共同检验。
7.生成补丁。这个补丁生成为一个纯文本文件,然后你自己添加一些说明之后就可以直接向maillist发送email了,我们在maillist上看到的主题为[patch x/y] XXX:...的邮件正文其实就是补丁加入描述后的文本
git-format-patch master
8.发送email。注意,这个工作可不是简单的,maillist有严格的规定,不光对补丁的质量,就连邮件的格式都有严格规定,因此最好是在linux下发送,要知道,kernel hacker那帮家伙是不用其它系统的,并且他们对linux的感情可能以及到了哲学的高度,如果让他们看到你的邮件中有windows的影子,...。因此下面主要说一下邮件客户端的设置。
第二个工作的配置相对复杂一些,不过如果理解邮件协议的话还是很简单的,而且和第一个工作正好相反,一旦配置好了,以后就可以一劳永逸了,而第一个工作,配置好git和内核源码树仅仅是一个开始。邮件系统简单的说就是两个大模块,一个是发信,另一个是收信,和日常的平信一样,普通电子信件对发送没有什么要求,你可以随意填写一个发送人的邮箱,哪怕就是假的也无所谓,可以随便填写一个收件人的邮箱,存不存在也无所谓(《凡卡》中的凡卡茹科夫给爷爷写信,虽然投递了,但是爷爷永远都不会收到),但是对于收信要求就高了,必须认证通过的才能打开信箱,信息流动从来就是单向的,说什么是没有人管的,但是谁能听却必须严格控制,信息接收者必须确保这个信息是发给自己的。电子邮件系统的这两大模块由smtp和pop协议完成(还有其它的协议,但是这两个是最基本和最简单的),简单说,smtp协议完成信件从发出至到达收件人邮箱的过程,是一个推的过程,而pop协议完成邮件从收件人邮箱到收件人的过程,是一个拉的过程。类比日常平信,几乎都是在写好后直接送到邮局,而收信人却无法保证信件到达的第一时间被通知到,因此几乎每座公寓或者学校都有有邮箱,需要每个人自己决定什么时候打开邮箱查看是否有邮件,有个前提,邮箱基本都是上锁的,你必须有钥匙。
我本人使用的操作系统是linux,邮件客户端自然也就选择mutt了。mail客户端也是可以的,它的配置和使用方式要比mutt简单的多,比如使用mail发信,很简单,mail -v 收件人地址,然后交互输入内容即可
1.建立一个工作目录
mkdir /root/kernel-hack-mail
mkdir /root/kernel-hack-mail/mail
#mkdir /root/kernel-hack-mail/cert #如果需要认证的话
cd /root/kernel-hack-mail
2.编辑mutt的配置文件
vi mutt.conf
其内容中最重要的是两方面的内容,发信和收信:
发信--委托给邮件传输代理(sendmail/msmtp...)(类似委托给邮局)
set sendmail="/usr/bin/msmtp" #指示邮件传输代理程序
set use_from=yes
set from=mimiran@gmail.com #指示发信人地址,当然也可以在msmtp的配置文件中指示
set envelope_from=yes
收信--自己从邮箱中取
set pop_user=mimiran@gmail.com #自己的邮箱标识
set pop_pass="123456" #自己邮箱的钥匙
set pop_host=pop://X.Y.Z.K #自己邮箱所在地
3.编辑邮件传输代理msmtp的配置文件
vi sndmail.conf
其内容是
host X.Y.P.Q #相当于对端的邮局
port 25 #这个都知道
4.运行mutt吧
mutt -F mutt.conf
5.按shift-G可以收邮件,按m可以发邮件,很快捷,并且完全基于文本,编辑邮件时使用的是vim,很快捷地可以使用:.!cat命令将文本文件作为邮件正文。反正有很多快捷键,UI上都说明了,下面是一个刚进入mutt后的界面顶部:
q:Quit d:Del u:Undel s:Save m:Mail r:Reply g:Group ?:Help
按下m键,开始发送吧(个人认为help没有用,自己摸索更好些,再说好的软件根本不需要help)
最后,git和email的结合,完美地将互联网组织成了一个巨型开发团队
分享到:
相关推荐
Linux内核的开发是一个开源项目,任何人都可以参与其中。开发者可以通过提交补丁、报告Bug和参与讨论来贡献自己的力量。 Linux内核资源 Linux内核有多种资源可供参考,包括官方文档、开发者社区、在线手册等。这些...
"Linux内核兼容Windows应用.pdf" Linux 操作系统的发展历程中,出现了一个重要的开源项目,即 Linux 兼容内核项目,该项目旨在将 Linux 内核扩展成一个既支持 Linux 应用、也支持 Windows 应用的兼容内核。该项目的...
本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。 如果你是一名Linux内核爱好者,本书的内容可以帮助你大显身手。如果 你是一名普通程序员,本书的内容将会拓宽你...
本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。 如果你是一名Linux内核爱好者,本书的内容可以帮助你大显身手。如果 你是一名普通程序员,本书的内容将会拓宽你...
本书将 Linux 内核的学习分为四个层次:全面了解,掌握基本功;...融入社区,参与开发做贡献;坚持,坚持,再坚持。总结起来,就是“全面了解 抓基本,兴趣导向深钻研;融入社区做贡献,坚持坚持再坚持。”
本书将Linux内核的学习分为四个层次,让你全面了解,掌握基本功,以兴趣为导向,选择重点深度专研,参与开发。
你将了解各种各样常被Linux开发人员使用的工具——编译器、调试器和软件配置管理工具,以及这些工具是如何用来构建应用软件、工具甚至Linux内核自身的。你将学习到Linux系统中使其与其他类UNIX系统真正区分开来的...
中断是指 CPU 在执行程序的过程中,出现了某些突发事件,需要 CPU 暂停当前的工作,转而处理该事件。DMA 是一种无须 CPU 的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。Linux 设备驱动程序中,可以...
本文由TinyLab.org原创,作者自2004年在校二年级开始学习和使用Linux,至今有十年的经验,在校时创建学校开源社区,并参与官方Linux内核开发,其开发和维护过多个开源项目。 他通过其自身学习的经历,在本文中充分...
1993年,大约有100余名程序员参与了Linux内核代码的编写和修改工作,核心小组5人,此时Linux0.99的代码大约有10万行,用户大约有10万左右。 1994.3,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布...
我国的自由软件运动也在不断发展,很多人开始参与自由软件的开发和使用。自由软件的发展对我国的经济信息化建设和技术创新产生了非常重要的影响。 自由软件的概念和Linux操作系统的发展对我国的经济信息化建设和...
参与了Multics项目的开发, 在开发之余改写了小型机 的操作系统,于是UNIX雏形诞生了。人们称肯·汤普森 (KenThompson)为UNIX之父。 LINUX的前世—UNIX LINUX的前世—UNIX 谭邦宁(AndewTaenbaum) MINI操作系统 ...
Linux 驱动程序的兼容性问题需要开源社区的共同参与和维护,以确保 Linux 驱动程序的兼容性和稳定性。 Linux 驱动程序的兼容性问题是一个非常重要的问题,需要我们对其进行深入的分析和研究,以确保 Linux 驱动程序...
Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护...
绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制 系统 BitKeeper 来管理和维护代码。 到 2005 年的时候,开发 BitKeeper ...
然而,AuthentiCode签名也存在一些不足之处,例如需要第三方机构的参与和费用支出,需要网络连接和PKI基础设施的建立,数字签名不是程序集名称的一部分等。 因此,本文档还讨论了AuthentiCode签名和强命名的联合...
Git起源:Git诞生于一个极富纷争大举创新的年代,Linux内核开源项目有着为数众广的参与者。绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2021年间)。到2021年,整个项目组开始启用...
SBID算法首先从理论角度分析了EDF算法的可调度性,然后对Linux 2.6系统内核进行了修改,最后通过实验数据对比表明了SBID算法在保证重要任务顺利运行方面具有较好的优越性。 SBID算法的核心思想是将任务的重要性和...