【GNU/Linux kernel源码分析】刨根问底,速览,对初学者友好的底层理解,让你对内核不再迷茫

文章目录

    • 1. Linux kernel
      • 1. 源代码目录结构分析
      • 2. linux内核模块编程入门
      • 3. 如何编译内核模块
      • 4. 源码在线阅读的 站
    • 参考原文
    • 2. 内核常用数据结构
    • 3. TTY
    • 4. 晶振

??博主昵称:
博主主页面链接:博主主页传送门
博主专栏页面连接:专栏传送门–计算机考研
??创作初心:本博客的初心是每天分享记录自己学习的脚步,和各位技术友探讨交流,同时给同样感兴趣的朋友以参考;
博主研究方向:
??博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;
‘’

2. linux内核模块编程入门

这里的printk就是print kernal,意思是输出到内核,输出到日志文件

模块插入执行初始化lkp__init()函

模块卸载执行退出函数lkp__exit()
代码示例:

3. 如何编译内核模块

内核模块的编译需要与常规用户空间应用程序略有不同。 以前的内核版本要求我们关注这些设置,这些设置通常存储在Makefile中。 虽然按层次结构组织,但许多冗余设置在次级Makefile中累积并使它们变大并且难以维护。 幸运的是,有一种新方法可以做这些事情,称为kbuild,外部可加载模块的构建过程现在完全集成到标准内核构建机制中。 要了解有关如何编译不属于官方内核的模块的更多信息(例如本指南中的所有示例),请参阅文件
linux / Documentation / kbuild / modules.txt 。

那么,让我们看一个简单的Makefile来编译一个名为hello-1.c的模块

核心思想:告诉哪个头文件放在哪些地方

在这个文件里定义了三个变量

  1. 路径的变量

  2. 内核版本 变量

  3. 内核源代码所在路径变量

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8746 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月6日
下一篇 2022年9月7日

相关推荐