ZeroOne AI
← 返回文章列表

Linux 内核开发基础:常用命令与函数

👁 21
分类:工业互联网

Linux 内核模块开发入门必知:insmod/rmmod 加载卸载命令、module_init/module_exit 入口出口函数,以及 MODULE_LICENSE、MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_ALIAS 等模块描述宏的用法与含义。

Linux 内核开发基础:常用命令与函数

一、项目背景

内核模块(Kernel Module)是 Linux 驱动开发的核心形态:它允许开发者在不重新编译整个内核的情况下,动态地向内核添加设备驱动、文件系统、网络协议等功能代码。对于从事工业设备、嵌入式 Linux 开发的工程师来说,掌握内核模块的加载/卸载机制与模块描述宏,是入门驱动开发的第一课。

本篇文章梳理内核模块开发中最基础、最常用的命令与函数,为后续编写真正的字符设备驱动、平台驱动打下基础。

二、技术方案:内核模块的运行机制

内核模块与普通应用程序最大的区别在于运行空间与生命周期:

维度内核模块普通应用
运行空间内核空间(Ring 0)用户空间(Ring 3)
入口module_init 指定的函数main 函数
退出module_exit 指定的函数return / exit
加载方式insmod / modprobe执行可执行文件
依赖库内核符号表用户态动态库

三、系统架构:加载/卸载命令

# 加载内核模块
insmod xxx.ko

# 卸载内核模块
rmmod xxx.ko

需要说明的是,insmod 只做"插入"动作,不考虑模块依赖关系;若要自动解析依赖(如模块 A 依赖模块 B),应使用 modprobe 配合 /lib/modules/$(uname -r)/modules.dep 依赖数据库。

四、实施过程:模块入口/出口与描述宏

4.1 入口与出口函数

module_init(init_func);   // 加载模块时该函数自动执行,进行初始化操作
module_exit(exit_func);   // 卸载模块时该函数自动执行,进行清理操作

4.2 模块描述宏

MODULE_LICENSE("GPL");            // 声明模块遵循的软件许可协议
MODULE_AUTHOR("Your Name");       // 模块作者信息
MODULE_DESCRIPTION("A simple demo module");  // 模块功能简介
MODULE_ALIAS("alias-name");       // 为模块设置别名
宏作用
MODULE_LICENSE声明模块代码接受的许可协议。Linux 内核遵循 GPL V2 开源协议,模块声明保持一致可避免"污染"内核符号表问题;不声明或声明专有许可时,部分 GPL-only 符号将无法使用
MODULE_AUTHOR描述模块作者信息,便于维护者追溯代码来源
MODULE_DESCRIPTION对模块功能的简单介绍,可通过 modinfo 查看
MODULE_ALIAS给模块设置一个别名,常用于自动加载匹配(如 MODULE_ALIAS("platform:my-device"))

4.3 查看模块信息

modinfo xxx.ko    # 查看模块的 license、author、description、alias 等信息
lsmod             # 列出当前已加载的所有模块
dmesg             # 查看内核日志(模块加载/卸载时 printk 的输出)

五、应用价值

六、SEO关键词

Linux内核、内核模块、insmod、rmmod、module_init、module_exit、MODULE_LICENSE、驱动开发、内核编程、嵌入式Linux

推荐阅读

更多工业 AI、智能制造与技术实践文章

C#工业视觉平台结合YOLOv26与OpenVINO

从数据标注、自动训练到Intel NPU边缘推理的完整工业AI方案:C#工业软件平台 + YOLOv26训练框架 + OpenVINO模型转换 + Intel NPU边缘推理,实现图像采集、自动标注、模型训练到现场推理的完整AI视觉闭环。

工业互联网

IMX6ULL 裸机开发学习(二):C 语言点亮 LED

在汇编实验基础上,用 C 语言完成 IMX6ULL 裸机 LED 闪烁:start.S 启动文件(SVC模式+栈指针)、led.h/led.c 寄存器封装、链接脚本与 Makefile 编译,对比汇编方案体会工程化开发方式。

工业互联网

Linux系统篇(三)——指令篇(三):轻松拿捏入门级指令

基础指令收官篇:详解head、tail、date、find、grep、zip、tar、sz/rz、uname、su等12组高频命令,覆盖查看、查找、压缩、传输与身份切换全场景。

机器人自动化

海康机器人亮相 WRC 2026,开拓具身智能产业落地新边界

2026世界机器人大会上,海康机器人携工业物流、商业服务、智能巡逻三大场景实景方案亮相,展示 AI 与机器人深度融合的产业化落地成果。

机器人自动化

手把手做ROS2机器人系统开发(三):搭建VS Code编程环境

"工欲善其事,必先利其器。" 前两讲完成了系统环境与命令基础的学习,本章节搭建高效的代码开发环境。VS Code 凭借轻量、插件生态丰富、对 C++/Python/ROS 支持完善等优势,是 ROS2 开发的主流选择。

机器人自动化

手把手做ROS2机器人系统开发(一):开发环境搭建

机器人操作系统(ROS2)是当前机器人应用开发的主流平台,凭借分布式节点架构、丰富的生态组件和良好的实时性支持,被广泛用于工业机器人、移动机器人和智能装备的研发。本系列教程将带领大家从零开始,完成一套完整的ROS2机器人系统开发:以驱动常用工业机器人(SCARA)实现动态抓取目标为最终目标,既支持实

评论(0)