2-内核开发-第一个内核Hello模块开发案例
目录
课程简介:
Linux内核开发入门是一门旨在帮助学习者从最基本的知识开始学习Linux内核开发的入门课程。该课程旨在为对Linux内核开发感兴趣的初学者提供一个扎实的基础,让他们能够理解和参与到Linux内核的开发过程中。
课程特点:
1. 入门级别:该课程专注于为初学者提供Linux内核开发的入门知识。无论你是否具有编程或操作系统的背景,该课程都将从最基本的概念和技术开始,逐步引导学习者深入了解Linux内核开发的核心原理。
2. 系统化学习:课程内容经过系统化的安排,涵盖了Linux内核的基础知识、内核模块编程、设备驱动程序开发等关键主题。学习者将逐步了解Linux内核的结构、功能和工作原理,并学习如何编写和调试内核模块和设备驱动程序。
3. 实践导向:该课程强调实践,通过丰富的实例和编程练习,帮助学习者将理论知识应用到实际的Linux内核开发中。学习者将有机会编写简单的内核模块和设备驱动程序,并通过实际的测试和调试来加深对Linux内核开发的理解。
4. 配套资源:为了帮助学习者更好地掌握课程内容,该课程提供了丰富的配套资源,包括教学文档、示例代码、实验指导和参考资料等。学习者可以根据自己的学习进度和需求,灵活地利用这些资源进行学习和实践。
无论你是计算机科学专业的学生、软件工程师还是对Linux内核开发感兴趣的爱好者,Linux内核开发入门课程都将为你提供一个扎实的学习平台,帮助你掌握Linux内核开发的基础知识,为进一步深入研究和应用Linux内核打下坚实的基础。
这一讲主要讲述如何开发第一个Linux驱动程序模块,动手开发代码,运行加载卸载模块
课程内容和目标:
- 编写实现最简单的内核模块- hello
- 如何加载内核模块hello
- 如何卸载内核模块hello
先从安装所需依赖、然后以创建基础内核模块hello 进行展开。
1.安装环境检查及准备
Linux 内核开发环境没有搭建好的,需要看第一讲内容 1-内核开发环境ubuntu+virtualbox+mobaXterm搭建-优快云博客
现在默认你已经搭建好环境。请检查以下项是否已经ready。
VirtualBox
Ubuntu:20.04.1-Ubuntu
mobaXterm personal editon
Ubuntu网络环境设置好可以访问外部网络,方便 mobaXterm 可以通过ssh 连接
VirtualBox 软件设置详细信息如下:
上节课已经安装好常用软件
sudo apt install net-tools
sudo apt install vim
sudo apt-get install gcc
2. 安装依赖项目
进行内核模块开发,需要安装对应的headers 文件,编译优c,Makefile 文件需要编译环境。
安装build-essential 和 kernel headers,执行以下命令:
$apt-get install linux-headers-$(uname -r)
build-essential
软件包提供了在基于 Debian 的系统上编译和构建软件所需的基本工具。
linux-headers-$(uname -r)
软件包提供了当前正在运行的内核的头文件。
为啥需要安装linux-headers? 在进行内核模块开发时需要安装 Linux headers 的原因如下:
- 内核头文件声明:Linux headers 包含内核中使用的所有数据结构、函数和宏的声明。这些声明对于编写与内核交互的模块至关重要。
- 编译模块:编译内核模块时,编译器需要知道内核中使用的符号的类型和大小。这些信息在 Linux headers 中提供。
- 符号解析:当内核加载模块时,它需要解析模块中使用的符号。这些符号在 Linux headers 中定义。
- 避免内核和模块之间的不匹配:Linux headers 对于确保内核和模块之间的兼容性非常重要。如果内核和模块的版本不匹配,则模块可能无法正常工作或可能导致系统不稳定。
安装header 文件后,安装kernel build 工具,以便进行代码编译。
安装的输出结果如下,说明安装成功
peach@peach-VirtualBox:~$ sudo apt-get instal