百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

"HelloModule.ko"内核模块编程

ahcoder 2025-06-09 19:44 1 浏览

1. "HelloModule.ko"内核模块编程

1.1 实验目的

· 掌握Linux内核驱动模块的编写、编译和加载过程

· 掌握带参数的内核模块的编写、编译和加载过程

· 掌握基于X86平台和ARM 平台掌握Linux内核模块更加灵活的特性

1.2 实验原理

· 本实验通过编写一个简单的内核模块,实现模块的初始化和卸载函数,并在加载时传入控制参数,用printk能够在后台打印加载和卸载信息。使用Makefile为当前运行的Linux内核编译驱动模块,最后通过insmod命令加载模块运行。

· 内核模块流程图。

SHAPE \* MERGEFORMAT

1.3 步骤与现象

· X86平台不带参数的内核模块

1. 编写hellomodule.c和Makefile文件

编译

执行,第一步无hellomodule 模块

2. 插入hellomodule模块

3. 卸载模块

· 分析代码执行现象

1. 我们在ubuntu图形界面gnome下的控制台不能显示我们的printk输出,printk函数是系统内核调用,在init进程启动后就申请不到控制台,所以调用它就没能在图形界面下的控制台输出,通过查看日志文件。

先查看/var/log/syslog 文件,在加载模块,再查看/var/log/syslog 文件。

2. 卸载模块

3. 分析加载的模块以及模块间的依赖关系

4. lsmod命令实际上读取并分析/proc/modules文件

5. 内核中已加载模块的信息也存在于/sys/module目录下,加载hellomodule.ko后,内核将包含/sys/module/hellomodule目录,查看该目录树。

6. 获取模块的信息,包含模块的作者、模块的说明、模块所支持的参数以及vermagic

· X86平台带参数的内核模块,雷同不带参数的部分就不列出

1. 编译

2. 查看日志文件

3. 带参数加载

· ARM平台不带参数的内核模块, 雷同X86平台就不列出

1. copy x86 平台的hellomodule.c和Makefile文件

2. 修改Makefile

3. 编译,验证

4. Copy到SD卡

5. 开发板SD卡插入,上电,查看运行结果

· ARM平台带参数的内核模块, 雷同X86平台就不列出

1. 源码准备

2. 编译

3. COPY到SD卡

4. 开发板SD卡插入,上电,查看运行结果

1.4 关键代码分析

· X86平台

1. 无参数

C文件

Makefile文件:

2. 有参数

C文件:

Makefile文件:

· ARM平台

1. 无参数

C文件: 雷同x86 平台无参数部分

Makefile文件:

1. 有参数

C文件:雷同x86平台有参数部分

Makefile文件:

相关推荐

Linux 5.17网络子系统方面的变化相当令人兴奋

正在开发的5.17内核的Linux网络子系统的更新是相当令人兴奋的,因为Linux在云中的大型服务器和企业网络设备上的运行以及小型物联网硬件上的Linux都是如此多产。新版不仅像往常一样有大量的硬件驱...

12 个流行的 Linux 网络命令及其使用方法

在Linux系统中,网络管理是系统管理员和开发者的核心技能之一。无论是排查网络问题、监控流量,还是配置网络接口,Linux提供了众多强大的命令行工具。这些工具功能强大且灵活,能够帮助用户高效地完成网络...

Linux集群自动化监控系统Zabbix集群搭建到实战

自动化监控系统Cacti特点:将监控到的数据,绘制成各种图形基于SNMP协议(网络管理协议)的监控软件,强大的绘图能力Nagios特点:状态检查和报警机制(例如:内存不足或CPU负载高时,及时的...

Linux超简单入门开箱篇(linux怎么入门)

此篇文章主要会带你介绍Linux操作系统,包括Linux本身、Linux如何使用、以及系统调用和Linux是如何工作的。Linux简介UNIX是一个交互式系统,用于同时处理多进程和多...

新手教程,Linux系统下MySQL的安装

看了两三个教程。终于在哔哩哔哩找到一个简单高效的教程,成功安装,up主名叫bili逍遥bili,感兴趣可以去看看。下面这个是我总结的安装方法环境:CentOS764位1.下载安装包,个人觉得在...

Windows 11 + WSL2 打造轻量级 Linux 本地开发环境实战教程

一、前言在2025年,越来越多开发者希望在不安装双系统的前提下体验Linux开发的强大能力,而微软的WSL2(WindowsSubsystemforLinux2)正好提供了这一可能。...

linux系统奔溃之vmcore:kdump 的亲密战友 crash

转自https://blog.csdn.net/yuanfang_way/article/details/77987399crash是目前广泛使用的linux内核崩溃转储文件的分析工具,掌握c...

音视频开发为什么要学SRS流媒体服务器

1SRS是什么官方定义:SRS是一个流媒体集群,支持RTMP/HLS/HTTP-FLV/RTSP/DASH/WebRTC/SRT/GB28181,高效、稳定、易用,简单而快乐。2SRS能够解决什么...

77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了

前言之前在实习时,听了OOM的分享之后,就对Linux内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今...

Linux 上利用Nginx代理uWSGI处理Flask web应用

一、介绍最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask的一个结构。下面是一些记录,在Centos系统上使用Flask架构部署一个简单的Python应用。然后使用Nginx作...

C++ TinyWebserver 部署到Linux下,并运行

C++TinyWebserver部署到Linux下,并运行(使用的是Vmware的虚拟机运行Ubuntu20.04)环境:Vmware+Ubuntu20.041.Tinywebserver项目...

SUSE Linux方案已在Amazon Web Services发布

近日,SUSE宣布已在亚马逊云服务(AWS)上发布SUSELinuxEnterpriseServerforSAPApplications。通过SUSE的“bring-your-own-s...

遨游于Linux的“老鸟想要一份学习pdf:鸟哥的Linux私房菜学习篇

您是准备学习Linux的“小菜鸟”,却不知道该如何下手?您是遨游于Linux的“老鸟想要一本案头必备的工具书?《鸟哥的Linux私房菜基础学习篇(第四版)》是您绝佳的选择!全新改版,提供您更新的技术...

Mdserver-web|一款简单Linux面板服务

可以说是宝塔面板的精简版,界面很相似,只是更加简洁些,没有那么臃肿官网:https://www.midoks.icu/项目开源地址:https://github.com/midoks/mdserver...

国内外比较知名常见的6个可视化WEB管理面板

Linux服务器的管理对于新手用户来说是一个挺头疼的问题,由于用作服务器的Linux主机通常都没有图形化界面(节省资源),与日常使用的Windows有着很大的差别,一些必备组件的安装或更新就...