`
xitong
  • 浏览: 6158007 次
文章分类
社区版块
存档分类
最新评论

参与开发linux内核需要做的准备工作

 
阅读更多

在觉得自己内功已经很强的前提下想参与到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内核设计与实现 part2(第二版 中文PDF) Linux Kernel Development (2nd Edition)

    本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。  如果你是一名Linux内核爱好者,本书的内容可以帮助你大显身手。如果 你是一名普通程序员,本书的内容将会拓宽你...

    Linux内核设计与实现 part1(第二版 中文PDF) Linux Kernel Development (2nd Edition)

    本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格、注意事项等等。  如果你是一名Linux内核爱好者,本书的内容可以帮助你大显身手。如果 你是一名普通程序员,本书的内容将会拓宽你...

    嵌入式 -- Linux内核修炼之道

    本书将 Linux 内核的学习分为四个层次:全面了解,掌握基本功;...融入社区,参与开发做贡献;坚持,坚持,再坚持。总结起来,就是“全面了解 抓基本,兴趣导向深钻研;融入社区做贡献,坚持坚持再坚持。”

    《Linux内核修炼之道》精华版之方法论.pdf

    本书将Linux内核的学习分为四个层次,让你全面了解,掌握基本功,以兴趣为导向,选择重点深度专研,参与开发。

    linux高级程序设计

    你将了解各种各样常被Linux开发人员使用的工具——编译器、调试器和软件配置管理工具,以及这些工具是如何用来构建应用软件、工具甚至Linux内核自身的。你将学习到Linux系统中使其与其他类UNIX系统真正区分开来的...

    为什么计算机的学生要学习Linux开源技术

    本文由TinyLab.org原创,作者自2004年在校二年级开始学习和使用Linux,至今有十年的经验,在校时创建学校开源社区,并参与官方Linux内核开发,其开发和维护过多个开源项目。 他通过其自身学习的经历,在本文中充分...

    Linux常用命令汇总

    1993年,大约有100余名程序员参与了Linux内核代码的编写和修改工作,核心小组5人,此时Linux0.99的代码大约有10万行,用户大约有10万左右。 1994.3,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布...

    Linux操作系统:Linux的前世今生.pptx

    参与了Multics项目的开发, 在开发之余改写了小型机 的操作系统,于是UNIX雏形诞生了。人们称肯·汤普森 (KenThompson)为UNIX之父。 LINUX的前世—UNIX LINUX的前世—UNIX 谭邦宁(AndewTaenbaum) MINI操作系统 ...

    git整理笔记.docx

    Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护...

    git pro中文版

    绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制 系统 BitKeeper 来管理和维护代码。 到 2005 年的时候,开发 BitKeeper ...

    基于ARM Cortex-A8和Android 4.x的联动报警系统 (Android 、A8、Linux、驱动、NDK)

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    Linux教程:《 Java程序员眼中Linux》

    带动更多的人进入Linux世界,特别是做Java开发的人 Github项目地址,欢迎Fork , Star : : 文章中用到的一些安装包归纳整理: ://pan.baidu.com/s/1skAwrFn Gitbook在线阅读地址: ://youmeek.gitbooks.io/linux-...

    四种操作系统的区别.doc

    LINUX 特点 基本思想 Linux的基本思想有两点:第一,一切都是文件;...正是由于这一点,来自全世界的无数 程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变 ,这让Linu

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    了,这里可以做的事情就非常多了,各个社区,各个厂家都可以参与进来。难怪 Android 的 sdk 可以 Apache License 发布了,对企业和开发人员友好啊。 那么 Google 自己的东西在哪里呢?没错,就是右边那个 runtime, ...

    Linux操作系统课件

    因为不满课本上的Minix操作系统,还是大学生的Linus Torvalds根据从Minix学来的知识,从头写了一个内核,公布在网上,吸引了无数的内核爱好者参与开发。 内核加入了GNU项目,采用GPL协议发布 工程网站—...

    android系统原理及开发要点详解

    总部设在南加州、专注于Android平台并提供其移动应用开发及解决方案的迈奔无线(mAPPn Inc.)也投入技术和人力参与了本书的工作。  参与本书编写的还有于仕林、张宇、张超等人,赵家维、黄亮、沈桢、徐威特、杨钰等...

    操作系统课程设计

    现在,Linux内核已经发展到了2.5.X版,并还在以相当快的速度不断地发展着。据报道,它是一个很有发展前途的操作系统,也是为数不多可以与Microsoft旗下操作系统相竞争的操作系统。 为了打破这种受制于人的局面,...

    Ubuntu中为Android系统上编写Linux内核驱动程序实现方法

    随着Android系统逐步扩大市场占有率,终端设备的多样性亟需更多的移动开发人员的参与。据业内统计,Android研发人才缺口至少30万。目前,对Android人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用...

Global site tag (gtag.js) - Google Analytics