阅读更多

4顶
0踩

开源软件

转载新闻 成为Linux内核高手的4个方法

2014-01-08 14:36 by 副主编 WnouM 评论(2) 有18300人浏览
本文原作者是Julia Evans,他之前在CUSEC网站上发表了一篇关于“内核并不可怕”的文章,本文是后续。

我曾经问别人如何开始内核编程的学习,他们基本上都说:

  1. 如果你不需要了解内核是如何为你工作的,你为何要尝试呢?
  2. 你应该订阅Linux内核邮件列表,然后努力去理解。
  3. 如果你不去编写针对Linux内核的代码,你就是在浪费时间。

这些对我一点儿帮助都没有。所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是怎样在你的项目里工作的,而且还很有趣。虽然我知道得并不多,但至少比我做这些之前了解了更多。

对于下面这几个途径,你只需要了解一些C语言和汇编语言(至少要会复制粘贴)。我会写一些小的C程序,还会用汇编来上课,虽然这些我都忘得差不多了。

方法1:编写你自己的操作系统

这看起来是一个相当可怕的方法。但事实上并不是!我是从rustboot这个项目开始的,重要的是它已经可以工作了。然后我会做一些简单的事情,比如让屏幕由红色变为蓝色,打印字符到屏幕,持续获取键盘中断来工作。

MikeOS是我另一个有趣的开始。请记住,你的操作系统没有必要做得很大很专业——如果你能够让它把屏幕颜色由红色变为紫色或者让它打印一首视,你就算成功了。

你一定会想使用一个仿真器去运行你的操作系统,比如qemuOSDev wiki同样是一个很有用的网站——上面有很多你会碰到的常见的问题。

方法2:编写一些内核模块

如果你已经准备运行Linux了,那么再写一些内核模块就会是相当相当容易的,即使他们什么都不会做。

这里有一个能够打印“Hello, hacker school!”到内核日志的模块源代码。它只有18行代码。基本上你只需要编写一个init进程和一个cleanup函数就可以了。我并不知道__init和_exit这两个宏命令做了些什么,但是我会使用他们!

编写一个有一定功能的内核模块是比较难的。我做这个的时候,都是先决定要完成的功能(比如打印一个信息给每一个经过内核的数据包),然后回去阅读一些Kernel Newbies上的东西,再大量地使用谷歌来搜索,再复制和粘贴大量的代码来搞明白究竟该怎样去编写它。这里有几个内核模块的例子,我把他们放在了kernel-module-fun项目里。

方法3:参加一次Linux内核实习

Linux内核团队参与了GNOME女性拓展实习项目。它是惊人、奇妙并且令人非常愉快的一个活动。这意味着,如果你是一个女人并且愿意花费三个月时间在内核开发上,你就能参与内核的开发,并且不需要任何的经验,还能得到一些报酬(5000美元)。在Kernel Newbies上有关于它的介绍。

如果你对此感兴趣,那会是非常值得去申请的——你能够为内核做一个格式化的补丁,这非常有趣。Sarah Sharp是一个Linux内核开发人员,她在协调这个活动而且她本人也是非常热心的。你可以阅读她的这篇博客文章,讲述了在第一轮里137个补丁是怎样被允许加入到内核中去的。这些补丁也将会是你提供的!查看申请说明

方法4:阅读内核源码

这听起来像是最糟糕的建议——“想要去了解内核是如何工作的就去看源代码,太蠢了”。

但事实上这个方法是非常有趣。你并不需要了解一切东西。当遇到无法理解的东西时,我就会感到无能为力,但是我告诉人们的时候,每个人都会说:“嗯,这就是传说中的Linux内核,你不能理解很正常!”

我的朋友Dave最近给了我一个网站LXR,在里面你可以阅读到内核的资源,而且还提供了大量有用的引用链接。比如,如果你想要了解chmod这个命令的系统调用,你可以在the chmod_common definition页面看到有关于它在Linux内核里的定义!

这里是部分chmod_common的部分代码,其中有一些我写的注释:

我觉得这个过程是很有趣的,而且也帮助了我阐明了内核的意义。我发现我所阅读的代码大多都是生涩难懂的,但是也有一些(比如chmod的代码)是可以理解的。

总结几个链接:

  • Jessica McKellarKsplice blog上的博客文章。
  • [url=http://blog.jobbole.com/54833/Linux Device Drivers]《Linux Device Drivers》[/url]是这样描述它自己的,我发现还是有点用。这本书会教你怎样编写你自己的驱动和怎样入侵与内核相关的地方。
  • 如果你在写一个操作系统,OSDev wiki是一个不错的网站。
  • Kernel Newbies有一些给内核开发新手的资源。
原文链接: Julia Evans   翻译: 伯乐在线 - haofly
译文链接: http://blog.jobbole.com/54833/
来自: 伯乐在线
4
0
评论 共 2 条 请登录后发表评论
2 楼 mars914 2014-01-10 16:25
1 楼 mars914 2014-01-10 16:25
翻译过来的

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 成为Linux内核高手的四个方法

    我曾经问别人如何开始内核编程的学习,他们基本上都说:①如果...所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是怎样在你的项目里工作的,而且还很有趣。虽然我知道得并不多,但至少比我做这些之

  • 成为Linux内核高手的四个方法[ZZ]

    本文由 伯乐在线 - haofly 翻译自 Julia Evans。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。 ...(之前我在CUSEC网站发表...②你应该订阅Linux内核邮件列表,然后努力去理解。③如果你不去编写针对Lin

  • 【转】成为Linux内核高手的四个方法

    我曾经问别人如何开始内核编程的学习,他们基本上都说:...所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是怎样在你的项目里工作的,而且还很有趣。虽然我知道得并不多,但至少比我做这些之前了...

  • 深入理解Linux内核(中文第3版)_linux_

    本书适用于渴望了解linux工作方式及其性能的读者,通过文中千行代码,你能成为真正的Linux高手。

  • 你想做一个Linux内核高手吗?

    Linux内核是使用最广泛的开源内核,在服务器和智能手机领域处于统治地位,物联网、...对于个人而言,从Linux内核中可以学习先进的设计方法和编程技术,为内核贡献代码可以证明自己的技术实力。 可是,当我们准备学习...

  • linux原理内核源代码,Linux内核源代码分析方法

    Linux内核源代码分析方法一、内核源代码之我见Linux内核代码的庞大令不少人“望而生畏”,也正由于如此,使得人们对Linux的了解仅处于泛泛的层次。假设想透析Linux,深入操作系统的本质,阅读内核源代码是最有效的...

  • 网络编程网络编程网络编程

    网络编程网络编程网络编程网络编程

  • setuptools-5.4.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 基于树莓派智能小车(H5页面操作移动+实时显示摄像头内容+各类传感器)源码+详细文档+全部资料齐全 高分项目.zip

    【资源说明】 基于树莓派智能小车(H5页面操作移动+实时显示摄像头内容+各类传感器)源码+详细文档+全部资料齐全 高分项目.zip基于树莓派智能小车(H5页面操作移动+实时显示摄像头内容+各类传感器)源码+详细文档+全部资料齐全 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • 2024-01-03-【办公自动化】Python执行Windows命令.md

    2024-01-03-【办公自动化】Python执行Windows命令

  • 基于FPGA的FS-FBMC调制器的设计源码+全部资料齐全.zip

    【资源说明】 基于FPGA的FS-FBMC调制器的设计源码+全部资料齐全.zip基于FPGA的FS-FBMC调制器的设计源码+全部资料齐全.zip 【备注】 1、该项目是高分课程设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11/linux测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • MySQL进阶篇学习笔记

    黑马MySQL课程总结的学习笔记

  • setuptools-41.1.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 张祖豪-软件工程师-职业规划.pdf

    张祖豪-软件工程师-职业规划.pdf

  • 智慧工地整体解决方案qy.pptx

    智慧工地整体解决方案qy.pptx

  • setuptools-49.1.1-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • setuptools-40.1.1.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 基于FPGA设计的电梯控制电路系统源码+全部资料齐全.zip

    【资源说明】 基于FPGA设计的电梯控制电路系统源码+全部资料齐全.zip基于FPGA设计的电梯控制电路系统源码+全部资料齐全.zip 【备注】 1、该项目是高分课程设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11/linux测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • 全系统实战营销课,从小白到营销高手

    课程内容: 将成功建立在问题基层上 不做第- 就做唯一 新切割营销 品牌4s战略-构建高效强势品牌 智慧底牌-成功背后的10大思维方式 切割营销将对手通向一侧的营销策略 营销绝对竞争力 品牌突破 切割营销 企业家修炼-第九届学习型中国世纪成功论坛 如何创造七种动力进行整合营销 营销品牌教材 林伟贤董进宇姜岚昕演讲-第八届学习型中国世纪成功论坛 内部报告:处理人生10种关系智慧 高效构建强势品牌 营销纲领(首部谋定未来的营销大典)1~4

Global site tag (gtag.js) - Google Analytics