我一直被内核黑客和嵌入式系统所吸引 开始乱搞这些东西有没有人有很好的教程(+容易获得的硬件)? 像写作驱动程序等的工具包,有很好的文档,而且价格合理吗?
谢谢!
答案 0 :(得分:33)
如果您对内核开发完全不熟悉,我建议不要从硬件开发开始,到一些“仅软件”内核模块(如proc文件/ sysfs)或更复杂的文件系统/网络开发示例,在uml上开发/ vmware / virtualbox / ...机器因此崩溃你的机器不会受到太大伤害:)对于嵌入式开发,你可以选择小型ARM开发套件或小型Via C3 / C4机器,或任何你可以刻录的旧PC使用自制USB / PCI /任何设备。
一个好的起点可能是Kernelnewbies.org - 它为内核开发人员提供了许多链接和有用信息,还提供了一系列易于实现的任务,可以为初学者解决。
有些书要读:
Understanding the Linux Kernel - 一个非常好的参考,详细说明了内核子系统的设计
Linux Device Drivers - 更像是一个包含大量示例代码的教程,专注于让您前进并解释Linux内核的关键方面。它介绍了构建过程和内核模块的基础知识。
Linux Kernel Module Programming Guide - 更多介绍性材料
如前所述,查看linux代码总是一个好主意,特别是因为Linux内核API往往会经常更改... LXR通过非常好的浏览界面帮助很多 - lxr.linux.no
要了解内核构建过程,此链接可能会有所帮助:
Linux Kernel Makefiles (kbuild)
最后但并非最不重要的,浏览内核源代码发行版的Documentation目录!
以下是从内核开发类中无意中窃取的一些有趣的练习:
答案 1 :(得分:5)
鲁比尼的绝对必须是this本书。 (可用作硬拷贝或免费软拷贝)
他提供了几个虚拟驱动程序的实现,这些驱动程序不需要您拥有除PC之外的任何硬件。因此,对于内核开发的入门,这是最简单的方法。
至于嵌入式工作,我建议购买众多SBC(单板计算机)中的一台。其中有很多基于x86处理器,通常带有PC / 104接口(电气PC / 104与ISA总线标准相同,但基于可堆叠连接器而非边缘连接器 - 非常容易与定制硬件接口)
它们通常具有vga连接器,可以更容易地进行调试。
答案 2 :(得分:3)
对于嵌入式Linux黑客攻击,您可以随处购买的简单Linksys WRT54G路由器是一个独立的开发平台http://en.wikipedia.org/wiki/Linksys_WRT54G_series:
WRT54G值得注意的是,它是第一个发布其固件源代码以满足GNU GPL义务的消费级网络设备。这允许程序员修改固件以更改或向设备添加功能。多个第三方固件项目为公众提供了WRT54G的增强固件。
答案 3 :(得分:3)
对于初学者来说,最好的方法是阅读大量代码。由于Linux是开源的,你会发现很多驱动程序。找一个在某些方面有效的方法,比如你想写的东西。你会发现一些不错的,相对容易理解的代码(环回设备,ROM fs等)。
您还可以使用lxr.linux.no,这是交叉引用的Linux代码。如果您必须了解某些内容是如何工作的,并且需要查看代码,那么这是一种简单易行的方法。
还有一本O'Reilly的书(了解Linux内核,第3版是关于2.6内核),或者如果你想要免费的东西,你可以使用高级Linux编程书(http://www.advancedlinuxprogramming.com/)。还有很多关于文件系统,网络等的特定文档。
答案 4 :(得分:1)
有些事情需要准备:
Linksys NSLU2是一种低成本的方式来获得真正的嵌入式系统,并有一个USB端口来添加外围设备。也可以使用任何一个无线接入点,请参阅OpenWrt compatibility page.请注意,您在商店中找到的Linksys WRT54G的当前型号不能再用于Linux:它们具有较少的RAM和闪存为了降低成本。 Cisco / Linksys现在在WRT54G上使用vxWorks,内存占用更少。
如果你真的想进入它,嵌入式CPU的评估套件起价几百美元。我建议不要花这些钱,除非你需要专业的工作或咨询合同。
答案 5 :(得分:1)
我是内核黑客的初学者:)我决定购买两本书“Linux程序开发:练习指南”和“编写Linux设备驱动程序:练习指南”它们写得很清楚,并提供了良好的基础进一步学习。