带来一篇成为Linux内核妙手的四个办法
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。(之前我在CUSEC网站宣布了关于内核其实不可骇的一篇文章,本文是后续。)
我已经问他人怎样入手下手内核编程的进修,他们基础上都说:①假如你不必要懂得内核是怎样为你事情的,你为什么要实验呢?②你应当定阅Linux内核邮件列表,然后勉力往了解。③假如你不往编写针对Linux内核的代码,你就是在华侈工夫。
这些对我一点儿匡助都没有。以是我在这里枚举了一些可行的办法,他们是有关操纵体系和Linux内核是如何在你的项目里事情的,并且还很风趣。固然我晓得得其实不多,但最少比我做这些之前懂得了更多。
关于上面这几个路子,你只必要懂得一些C言语和汇编言语(最少要会复制粘贴)。我会写一些小的C程序,还会用汇编来上课,固然这些我都忘得差未几了。
办法一:编写你本人的操纵体系
这看起来是一个相称可骇的办法。但现实上并非!我是从rustboot这个项目入手下手的,主要的是它已能够事情了。然后我会做一些复杂的事变,好比让屏幕由白色变成蓝色,打印字符到屏幕,延续猎取键盘中止来事情。
MikeOS是我另外一个风趣的入手下手。请记着,你的操纵体系没有需要做得很年夜很专业——假如你可以让它把屏幕色彩由白色变成紫色大概让它打印一首视,你就算乐成了。
你必定会想利用一个仿真器往运转你的操纵体系,好比qemu。OSDevwiki一样是一个很有效的网站——下面有良多你会碰着的罕见的成绩。
办法二:编写写一些内核模块!
假如你已筹办运转Linux了,那末再写一些内核模块就会是相称相称简单的,即便他们甚么都不会做。
这里有一个可以打印“Hello,hackerschool!”到内核日记的模块源代码。它只要18行代码。基础上你只必要编写一个init历程和一个cleanup函数就能够了。我其实不晓得__init和_exit这两个宏命令做了些甚么,可是我会利用他们!
编写一个有必定功效的内核模块是对照难的。我做这个的时分,都是先决意要完成的功效(好比打印一个信息给每个经由内核的数据包),然后归去浏览一些KernelNewbies上的器材,再大批地利用谷歌来搜刮,再复制和粘贴大批的代码来弄分明事实该如何往编写它。这里有几个内核模块的例子,我把他们放在了kernel-module-fun项目里。
办法三:列入一次Linux内核练习!
Linux内核团队介入了GNOME女性拓展练习项目。它是惊人、奇奥而且使人十分兴奋的一个举动。这意味着,假如你是一个女人而且乐意消费三个月工夫在内核开辟上,你就可以介入内核的开辟,而且不必要任何的履历,还能失掉一些待遇(5000美圆)。在KernelNewbies上有关于它的先容。
假如你对此感乐趣,那会长短常值得往请求的——你可以为内核做一个格局化的补钉,这十分风趣。SarahSharp是一个Linux内核开辟职员,她在和谐这个举动并且她自己也长短常热情的。你能够浏览她的这篇博客文章,报告了在第一轮里137个补钉是如何被同意到场到内核中往的。这些补钉也将会是你供应的!检察请求申明!
假如你不是一个女生,那末能够选择GoogleSummerofCode这个类似的举动。(编注:这句话大概会引发女程序员的恶感)
办法四:浏览内核源码
这听起来像是最糟的倡议——“想要往懂得内核是怎样事情的就往看源代码,太蠢了”
但现实上这个办法长短常风趣。你其实不必要懂得统统器材。当碰到没法了解的器材时,我就会感应力所不及,可是我告知人们的时分,每一个人城市说:“嗯,这就是传说中的Linux内核,你不克不及了解很一般!”
我的伴侣Dave比来给了我一个网站LXR,在内里你能够浏览到内核的资本,并且还供应了大批有效的援用链接。好比,假如你想要懂得chmod这个命令的体系挪用,你能够在thechmod_commondefinition页面看到有关于它在Linux内核里的界说!
这里是部分chmod_common的部分代码,个中有一些我写的正文:
staticintchmod_common(structpath*path,umode_tmode){structinode*inode=path->dentry->d_inode;structiattrnewattrs;interror;//不晓得这是在干甚么error=mnt_want_write(path->mnt);if(error)returnerror;//互斥锁!制止呈现抵触征象!=Dmutex_lock(&inode->i_mutex);//我猜这是在反省是不是能利用chmoderror=security_path_chmod(path,mode);if(error)gotoout_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);//???returnerror;} 我以为这个历程是很风趣的,并且也匡助了我分析了内核的意义。我发明我所浏览的代码年夜多都是生涩难明的,可是也有一些(好比chmod的代码)是能够了解的。
总结几个链接:
[*]JessicaMcKellar在Kspliceblog上的博客文章
[*]《LinuxDeviceDrivers》是如许形貌它本人的,我发明仍是有点用。
“这本书会教你如何编写你本人的驱动和如何进侵与内核相干的中央”
[*]假如你在写一个操纵体系,OSDevwiki是一个不错的网站
[*]KernelNewbies有一些给内核开辟老手的资本,固然在它的谈天室里我有一些不爽的履历。
[*]SarahSharp是一个内核开辟职员,卖力Linux内核的对外服务,长短常好的一个女人。
原文链接:JuliaEvans翻译:伯乐在线-haofly
只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。 直到学习Linux这门课以后,我才知道,原来我错了。? 说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。? 任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统. 尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。 如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。 以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。 对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。 首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
页:
[1]