如何高效化学习Linux内核?

  • 回答 (7)
  • 关注 (0)
  • 查看 (337)

目前懂得linux一些基础知识和命令,目前对Linux内核非常感兴趣,对于一个刚接触linux内核的新手来说,如何高效化学习linux内核的知识?

袁弋雯袁弋雯提问于
MyLove回答于

题主可以看看由Robert Love与O'Reilly编写的《Linux内核开发》书籍,不过目前尚未发现有中文的翻译版,不过要学习linux内核开发的话,熟练和习惯阅读英文是必须的。Robert Love的书到目前为止来说,我认为是最好的,易于理解,既注重理论又注重实践。并且具有非常好的书写风格。

你还可以通过购买一些嵌入式设备(树莓派和数字采集卡等)来编写Linux设备驱动程序,来深入了解到内核代码。

还有就是,我建议你可以参与一些开源项目,虽然这些项目大部分都是公益性的,无任何报酬可言。比如:linux-kernel-module-cheat

还可以加入一些关于linux内核的社区,在那里。你可以认识到关于linux内核的专业人员,或者爱好者,此类论坛,我目前感觉较为好的是Kernelnewbies论坛,Kernelnewbies是一个致力于改进linux代码内核和与Linux内核开发人员分享他们的知识的社区。并且上面有关于linux内核新手入门的系统化教程,对于一个无头苍蝇来说吗,在好不过了。

说句实话,学习linux开发,是一项非常艰巨和非常枯燥的学习过程。以下是我的学习过程,不过我已经放弃了,把时间花费在更有意义的事情来说,对我更重要一点。

  1. 学习操作系统基础知识
  2. 学习linux相关的编程语言,C语言,汇编语言等
  3. 学习理论。并将概念与Linux操作系统关联起来,可以通过画图来做到这一点。
  4. 学习Linux的所有子系统内核,并阅读内核的源代码。最好选择一个较为简单的子系统入手
  5. 构建内核模块,以便在内核编码方面更深入理解。

最后我还建议你,养成良好的收集资料,和良好的提问习惯,这非常有助于学习。

人生的旅途辣鸡前端回答于

除非你打算帮助开发linux内核,否则其实无需学习Linux内核。

如果你只是想使用Linux,并为此找一份可靠,福利高的工作,只需要学习通用发行版的命令行工具就好。

如果你想编写Linux程序,已经连接linux内核,我觉得你可以先学习Unix / POSIX编程等知识。这样你就可以编写不仅在Linux上运行的程序,而且还可以在其他Unix上运行程序。然后了解通用的Unix系统管理,这是必须的。

然后在开始学习一些关于内核的知识,至于如何高效学习,只有阅读文档,阅读mail列表,阅读源代码,等等,没有别的办法,最捷径,最高效的办法,就是勤奋。虽然也要考一点点天赋。不过问题不大。以下是学习步骤建议,我就是这么学习的:

  1. 在你的电脑上安装一些Linux发行版系统。无论是双启动还是单一的Linux系统都行。CentOS,SuSE,Ubuntu都是一些不错的选择。
  2. 下载最新的tar内核源码t。
  3. 购买,或者收集Robert Love的书籍和内容,阅读关于Linux内核开发。
  4. Linux内核源文件目录是Vast 。它由开发人员直接编写的。
  5. 用可插入的模块支持编译内核。
  6. 然后编写一些简单的内核模块。然后一直持续下去

通过这个学习过程来了解所有子系统。

林岑影let bio = '这家伙真懒, 什么都没留下...'回答于

内核源码比较多,应该有条理的,系统的、全局的角度来阅读源码。

angel_郁回答于

书籍推荐:《深入理解Linux内核》,这本书内核编程看;

搞UNIX/Linux环境下的应用程序编程,看《UNIX环境高级编程》;

做Linux下设备驱动程序开发,《Linux设备驱动》这几本都是很经典的书

纪风夜影来,给我写个bug回答于

这···

你非说要学习内核的话,我建议你看系统源码。。。

一步回答于
陈树丶回答于

语言基础需要扎实,所以先把C语言巩固好在说,对于题主来说,现在搞这个,太过着急了

扫码关注云+社区

领取腾讯云代金券