• 学习kernel编程的建议


    我把我学习kernel编程的过程介绍给大家,希望大家有个参考。

    学习kernel编程需要阅读大量的kernel方面的书籍,在此我列举一下我读过的kernel书籍(按时间先后顺序),并给一些建议。

    1. LDDv3(Linux Device Driver Program)linux设备驱动编程

    2. Linux内核情景分析,上,下

    3. ULK(Understanding Linux Kernel)v2, v3

    4. Linux 0.11内核完全注释

    5. ULN(Understanding Linux Networking) 

    以上是我阅读过的算是大部头的Linux Kernel编程方面的书籍。当然如果你刚开始学习Linux编程,并希望向底层发展,那么我建议你先阅读:

    1. C语言程序设计

    2. APUE(Advanced Programming in the UNIX Environment)Unix高级环境编程

    3. Unix网络编程,卷一,卷二

    4. TCP/IP详解,卷一、卷二、卷三

    5. C语言标准与实现(选读,强烈推荐你读一下,读完后会对C语言有很深入的了解)

    初学Linux,读完以上这3类书籍,你对Linux系统编程就会相当的了解了,建议还要至少读一本shell编程方面的书,原因就不用说了吧。

    好现在你有了一定的系统知识和C语言编程技能了,那么来说说你怎么读kernel的书籍。

    上面列出的5种书籍我都读过,建议你这样阅读。

    首先读LDDv3,读到内存映射部分,这时好多概念你不容易理解,可以等以后精度,到这以后可以先马虎的读一遍。

    然后读Linux内核情景分析,上,下,这两本书是我见过的最厚的书了,一定要坚持读下来,讲述的2.4内核的情景。(阅读时最好把代码打开,讲到哪你看到哪,我是这样的)

    再后可以读ULK v2或v3,ULKv2讲的是2.4的内核,ULKv3讲的是2.6的内核,直接读v3没有问题,要尽量的理解全部内容。

    这时如果以上你都读完了,那么可以把LDDv3内存映射开始章节和往后的章节重读一遍,你会完全理解了。

    关于0.11内核完全注释,这本书你可以现在读了,这本主要是锻炼你的基本编程知识,包括对一些ATT汇编也有了一些认识,对你看当今最新的内核原理方面没有什么帮助。

    但也推荐你看看,这本书会告诉你诸如printf是怎么实现的,还是很有意思的。(要打开代码同步阅读,最好)

    ULN是完全讲述的Linux网络子系统,当你对Linux Kernel编程有一定基础和概念了可以开始阅读了,我是最后阅读的,你会完全在概念上了解Linux网络子系统的实现。

    读了那么多的书,该行万里路了,写代码来实践是非常重要的,没有目标就自己想象一个,例如,读完怎样编写网络驱动后(LDD中),可以自己写个虚拟网卡,当你ping你虚拟网卡地址时,

    你在驱动中把IP地址对调,并修改协议为ICMP回显,然后再发回给kernel,这样ping命令就会有回显,好像你真ping到了那个地址,其实是你自己在kernel中做了点手脚。

    有实际的工作目标是最好的了,多实践还是硬道理。祝你成功!

  • 相关阅读:
    SDK 和 RunTime 的区别
    P7740[NOI2021]机器人游戏【dp,bitset】
    sql注入之盲注
    linux/windows自启动和行踪清理
    口令嗅探sniffe
    一句话木马
    php执行linux命令
    windows 防火墙和UAC
    msfvenom,转
    XSS最关键的一步
  • 原文地址:https://www.cnblogs.com/super-king/p/3599050.html
Copyright © 2020-2023  润新知