如何加入linux内核驱动开发开发社区进行内核开发

成为Linux内核高手的四个方法 - 文章 - 伯乐在线
& 成为Linux内核高手的四个方法
(之前我在网站发表了关于内核并不可怕的一篇文章,本文是后续。)
我曾经问别人如何开始内核编程的学习,他们基本上都说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅,然后努力去理解。③如果你不去编写针对Linux内核的代码,你就是在浪费时间。
这些对我一点儿帮助都没有。所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是怎样在你的项目里工作的,而且还很有趣。虽然我知道得并不多,但至少比我做这些之前了解了更多。
对于下面这几个途径,你只需要了解一些C语言和汇编语言(至少要会复制粘贴)。我会写一些小的C程序,还会用汇编来上课,虽然这些我都忘得差不多了。
方法一:编写你自己的操作系统
这看起来是一个相当可怕的方法。但事实上并不是!我是从这个项目开始的,重要的是它已经可以工作了。然后我会做一些简单的事情,比如让屏幕由红色变为蓝色,打印字符到屏幕,持续获取键盘中断来工作。
是我另一个有趣的开始。请记住,你的操作系统没有必要做得很大很专业——如果你能够让它把屏幕颜色由红色变为紫色或者让它打印一首视,你就算成功了。
你一定会想使用一个仿真器去运行你的操作系统,比如。同样是一个很有用的网站——上面有很多你会碰到的常见的问题。
方法二:编写写一些内核模块!
如果你已经准备运行Linux了,那么再写一些内核模块就会是相当相当容易的,即使他们什么都不会做。
这里有一个能够打印“Hello, hacker school!”到内核日志的。它只有18行代码。基本上你只需要编写一个init进程和一个cleanup函数就可以了。我并不知道__init和_exit这两个宏命令做了些什么,但是我会使用他们!
编写一个有一定功能的内核模块是比较难的。我做这个的时候,都是先决定要完成的功能(比如打印一个信息给每一个经过内核的数据包),然后回去阅读一些上的东西,再大量地使用谷歌来搜索,再复制和粘贴大量的代码来搞明白究竟该怎样去编写它。这里有几个内核模块的例子,我把他们放在了项目里。
方法三:参加一次Linux内核实习!
Linux内核团队参与了。它是惊人、奇妙并且令人非常愉快的一个活动。这意味着,如果你是一个女人并且愿意花费三个月时间在内核开发上,你就能参与内核的开发,并且不需要任何的经验,还能得到一些报酬(5000美元)。在上有关于它的介绍。
如果你对此感兴趣,那会是非常值得去申请的——你能够为内核做一个格式化的补丁,这非常有趣。是一个Linux内核开发人员,她在协调这个活动而且她本人也是非常热心的。你可以阅读她的这篇,讲述了在第一轮里137个补丁是怎样被允许加入到内核中去的。这些补丁也将会是你提供的!查看!
如果你不是一个女生,那么可以选择Google Summer of Code这个相似的活动。(编注:这句话可能会引起女程序员的反感)
方法四:阅读内核源码
这听起来像是最糟糕的建议——“想要去了解内核是如何工作的就去看源代码,太蠢了”
但事实上这个方法是非常有趣。你并不需要了解一切东西。当遇到无法理解的东西时,我就会感到无能为力,但是我告诉人们的时候,每个人都会说:“嗯,这就是传说中的Linux内核,你不能理解很正常!”
我的朋友Dave最近给了我一个网站,在里面你可以阅读到内核的资源,而且还提供了大量有用的引用链接。比如,如果你想要了解chmod这个命令的系统调用,你可以在页面看到有关于它在Linux内核里的定义!
这里是部分chmod_common的部分代码,其中有一些我写的注释:
static int chmod_common(struct path *path, umode_t mode)
struct inode *inode = path-&dentry-&d_
// 不知道这是在干什么
error = mnt_want_write(path-&mnt);
if (error)
// 互斥锁!避免出现冲突现象!=D
mutex_lock(&inode-&i_mutex);
// 我猜这是在检查是否能使用chmod
error = security_path_chmod(path, mode);
if (error)
// 我猜这是在改变mode的值
newattrs.ia_mode = (mode & S_IALLUGO) | (inode-&i_mode & ~IALLUGO);
newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
error = notify_change(path-&dentry, &newattrs);
out_unlock:
mutex_unlock(&inode-&i_mutex); // 完成时就解除互斥锁
mnt_drop_write(path-&mnt); // ???
123456789101112131415161718192021222324252627
static int chmod_common(struct path *path, umode_t mode){&&&&struct inode *inode = path-&dentry-&d_inode;&&&&struct iattr newattrs;&&&&int error;&&&&&// 不知道这是在干什么&&&&error = mnt_want_write(path-&mnt);&&&&if (error)&&&&&&&&return error;&&&&&// 互斥锁!避免出现冲突现象!=D &&&&mutex_lock(&inode-&i_mutex);&&&&&// 我猜这是在检查是否能使用chmod&&&&error = security_path_chmod(path, mode);&&&&if (error)&&&&&&&&goto out_unlock;&&&&// 我猜这是在改变mode的值&&&&newattrs.ia_mode = (mode & S_IALLUGO) | (inode-&i_mode & ~IALLUGO);&&&&newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;&&&&error = notify_change(path-&dentry, &newattrs);out_unlock:&&&&mutex_unlock(&inode-&i_mutex); // 完成时就解除互斥锁&&&&mnt_drop_write(path-&mnt); // ???&&&&return error;}
我觉得这个过程是很有趣的,而且也帮助了我阐明了内核的意义。我发现我所阅读的代码大多都是生涩难懂的,但是也有一些(比如chmod的代码)是可以理解的。
总结几个链接:
在上的博客文章
是这样描述它自己的,我发现还是有点用。
“这本书会教你怎样编写你自己的驱动和怎样入侵与内核相关的地方”
如果你在写一个操作系统,是一个不错的网站
有一些给内核开发新手的资源,虽然在它的聊天室里我有一些不爽的经历。
是一个内核开发人员,负责Linux内核的对外服务,是非常好的一个女人。
关于作者:
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线您的位置:
Fedora Project日前满怀自豪的宣布,旗下免费的LINUX操作系统-代号为“Beefy Miracle.”的Fedora 17可以提供与LINUX整合在一起的最新开源技术,任何人都可以免费下载,使用,修改和重新发布。
作者:厂商投稿
发布于:04-19
TheeMahn 于3月16日宣布,Ultimate Edition 3.2 开放下载。Ultimate Edition 3.2 是基于 Ubuntu 11.10 (Oneiric Ocelot) 的开源操作系统。包括 Unity interface 界面和 GNOME 3.2 桌面环境和 Fallback 模块。
作者:ugmbbc
发布于:03-19
来自LinuxQuestions.org的2011 成员选择奖给KDE 社区冠以了“年度最佳桌面环境”的荣誉。此外,技术雷达(Tech Radar ,网站)报道,KDE 工作空间是最佳的桌面环境。KDE 的创新、性能和稳定性对用户有着特殊的吸引力。
作者:youyoulan
发布于:03-12
本文简要介绍了在Linux内核中添加自己的驱动代码的原理和方法 ,其本质是修改kconfig和makefile两个文件。
作者:yongan1006
发布于:08-17
面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的特性
作者:刘洪涛
发布于:08-03
日,Linus亲自发布了Linux Kernel 3.0版本。虽然从内核的更新内容上跟普通的2.6.40没什么两样,不过版本号的修改,无疑在Linux内核20周年之际,被赋予了特殊的意义。
作者:杨赛
发布于:07-29
模块机制给Linux 的发烧友们带来了方便,因为模块机制意味着人们可以把庞大的Linux内核划分为许许多多个小的模块。
作者:《开源时代》任桥伟
发布于:06-12
Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上,Linux内核中每一个目录下边都会有一个 Kconfig文件和一个Makefile文件。对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放
作者:开源时代
发布于:05-12
Fedora下内核编译与安装
作者:IT168 JsuFcz
发布于:12-04
中国Linux内核开发者大会,是中国Linux内核领域里最高规格的技术盛会。大会前身为2006年开始举办的AKA Linux内核开发者大会,由AKA阿卡信息技术小组、英特尔公司开源技术中心、清华大学、亚嵌教育共同发起,历经2006
作者:IT168技术频道
发布于:10-23
Linux内核2.6.30已经放出,与上一版本相比具有数百个变化,其中包括一个新的挂起/恢复(suspend/resume)体系架构,Linux之父李纳斯?托沃兹(Linus Torvalds)称,该功能将让内核迎来“新世界秩序”。
作者:IT168 东方蜘蛛译
发布于:06-15
更多热点:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 linux内核驱动开发 的文章

 

随机推荐