[问题从askubuntu.com移入]
我想进入Ubuntu系统编程;具体来说——开发和调试设备驱动程序。然而,我不确定如何开始,尽管我之前有参与其他开源项目的经验。
我有相当多的Python编程技能/经验(但我想这在这里会毫无用处),中等的C编程技能,良好的调试技能(不过只有用户模式的程序),不错的静态反转技能(更多的是一种爱好),并在这里完成了一个简短的(但非常愉快的)内核模块编程教程。
我想问几个问题。
- 你想给我的任何特别的建议(你必须通过艰苦的方式学习)。一个抽象的问题,是的
- 我已经是Ubuntu的用户很长一段时间了,但我不确定从哪里开始帮忙。鉴于我对设备驱动程序的特殊兴趣,有什么建议吗?建议阅读材料?我目前正在阅读"Linux系统编程——与内核和C库对话"
- 与设备驱动程序调试相关的建议阅读材料
谢谢。
一些提示:
- C是Linux内核开发的核心。其他事情可能会帮助你自动化或测试,但你会做C
- 任何Linux操作系统都适合内核开发。有些可能会让构建和部署内核变得更容易,从内存中Ubuntu使用Debian的内核打包基础设施,这使得添加自己的模块并为新的内核版本自动构建模块变得更容易
- 从编写简单的模块开始
- 从玩内核构建过程开始,并进行配置和交友。重新启动并运行您自己编译的内核,这将给您信心。试着调整内核中的垃圾——这很有趣,你会了解到所有的子系统
- 我几年前读过这本书:http://www.amazon.com/Linux-Kernel-Primer-Top-Down-Architectures/dp/0131181637,还可以,但我当时在C也不太好
- 您问题中的教程链接已断开
你真的应该去http://kernelnewbies.org/。这是编写设备驱动程序等内核黑客攻击的好起点。kernelnewbies.org上有很多资源链接。我知道至少有一本关于设备驱动程序编程的免费电子书。