linux - 在家学习内核黑客和嵌入式开发?

标签 linux kernel embedded

我总是被内核黑客和嵌入式系统的世界所吸引。
有没有人有关于开始弄乱这些东西的好教程(+容易获得的硬件)?
诸如用于编写驱动程序的工具包之类的东西,它们带有良好的文档并且价格合理?

谢谢!

最佳答案

如果您对内核开发完全陌生,我建议不要从硬件开发开始,而是使用一些“纯软件”内核模块,如 proc 文件/sysfs 或更复杂的示例文件系统/网络开发,在 uml 上开发/vmware/virtualbox/... machine 所以让你的机器崩溃不会有太大的伤害 :) 对于嵌入式开发,你可以使用小型 ARM 开发套件或小型 Via C3/C4 机器,或任何可以烧录的旧 PC使用您的自制 USB/PCI/任何设备。

一个好的起点可能是Kernelnewbies.org - 它为内核开发人员提供了大量链接和有用信息,还提供了一系列易于实现的任务,供初学者使用。

一些值得阅读的书:

Understanding the Linux Kernel - 一个很好的引用,详细介绍了内核子系统的设计

Linux Device Drivers - 写得更像是一个包含大量示例代码的教程,重点是让您了解并解释 linux 内核的关键方面。它介绍了内核模块的构建过程和基础知识。

Linux Kernel Module Programming Guide - 一些更多的介绍性 Material

如前所述,查看 linux 代码总是一个好主意,尤其是 Linux 内核 API 往往会经常更改... LXR 提供了非常好的浏览界面 - lxr.linux.no

要了解内核构建过程,此链接可能会有所帮助:

Linux Kernel Makefiles (kbuild)

最后但同样重要的是,浏览内核源代码分发的文档目录!

下面是一些从内核开发类(class)中偷来的有趣练习:

  • 编写一个内核模块,该模块创建文件/proc/jiffies,在每次读取访问时以 jiffies 报告当前时间。
  • 编写一个提供 proc 文件/proc/sleep 的内核模块。当应用程序将若干秒作为 ASCII 文本写入此文件时(“echo 3 >/proc/sleep”),它应该阻塞指定的秒数。写访问应该对文件的内容没有副作用,即,在读访问时,文件应该看起来是空的(参见 LDD3,第 6/7 章)
  • 编写一个 proc 文件,您可以在其中临时存储一些文本(使用 echo "blah">/proc/pipe)并再次将其取出(cat/proc/pipe),清除文件。注意同步问题。
  • 修改管道示例模块注册为字符设备/dev/pipe,为写请求添加动态内存分配。
  • 编写一个非常简单的文件系统。

关于linux - 在家学习内核黑客和嵌入式开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60763/

相关文章:

linux - 自动化需要用户交互的流程的最佳策略

linux - Find 命令在结果前面打印数字

linux - Linux中gdtr的地址

operating-system - 操作系统开发入门有哪些资源?

c - 按顺序向 EEPROM 写入和读取数据

linux - 为什么我的 crontab 不工作?

linux - 使用 .procmailrc 在 unix 系统上转发电子邮件

linux - 如何在 linux 模块中打开另一个设备?

c - 在 C 程序的 main() 函数中是否有充分的理由将变量声明为静态?

c - 嵌套开关盒不起作用