转:http://www.groad.net/bbs/read.php?tid-1006.html

通过以下命令加载上面编译生成的模块

引用
linux-beyes:/home/beyes/C/kernel # insmod ./hello.ko

注意的是,如果使用在图形系统下的虚拟终端,那不会看到输出信息,但是这些信息一般被保存在 /var/log/messages 文件里:

引用
linux-beyes:/home/beyes/C/kernel # cat /var/log/messages | grep hello
Aug  7 01:55:35 linux-beyes kernel: hello linux kernel

卸载模块使用 rmmod 命令

引用
rmmod hello

卸载模块时,如果是是在图形系统下的虚拟终端,那么退出信息同样保存在 /var/log/messages 文件里:

引用
linux-beyes:/home/beyes/C/kernel # cat /var/log/messages | grep bye
Aug  7 02:02:56 linux-beyes kernel: bye..lwave from the kernel
如果编译时出现:

引用
ERROR: Kernel configuration is invalid.
         include/linux/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.

可以尝试:

引用
make oldconfig
make prepare

make oldconfig    : 基于已有的.config进行配置, 若有新的符号, 它将询问用户.

这时候再编译,可能会出现:

引用
/bin/sh: scripts/mod/modpost: 没有那个文件或目录
make[1]: *** [__modpost] 错误 127
make: *** [modules] 错误 2

再使用下面命令:

引用
make scripts

最后编译成功。

如果出现

引用
insmod:error inserting 'hello.ko': -1 Invalid module format

错误,则查看日志文件tail /var/log/messages 文件,若是提示 "no symbol version for module_layout" 错误,则使用以下语句编译:

引用
make -C /lib/modules/`uname -r`/build M=`pwd` modules

而不是直接在 -C 参数后填上 /usr/src/linux-.2.6.xxx 这样的路径直接指向内核源码树,因为按照错误提示,应该是找不到 modules.symbols 文件所致。


关于 /lib/modules 目录的说明:

该目录包含了内核模块及其他文件. 注意, modules中一般会有多个目录: 系统自带的内核模块在这里, 你编译自己的内核模块后, 它们也会被安装到这里. 不同的目录由内核版本号来区分. 即modules里目录的名称是内核版本号. (使用$ uname -r 可知当前系统内核所用的模块位于哪个目录).

/lib/modules/<kernel-version>/build
储存为该版本的内核编译新模块所需的文件. 包括Makefile, .config, module.symVers(模块符号信息), 内核头文件(位于include/, include/asm/中)

/lib/modules/<kernel-version>/kernel
储存内核目标文件(以.ko为后缀). 它的目录组织和内核源代码中kernel的目录组织相同.

/lib/modules/<kernel-version>/中:
modules.alias       : 模块别名定义. 模块加载工具使用它来加载相应的模块.
modules.dep        : 定义了模块间的依赖关系.
modules.symbols : 指定符号属于哪个模块.

这些文件都是文本文件, 可以查看它们.

转载于:https://blog.51cto.com/jkers/670176

在用户空间加载和卸载驱动相关推荐

  1. Linux驱动3:驱动模块加载与卸载

    目录 一.环境配置 1.开发板环境 2.uboot环境 ①设置bootargs ②设置bootcmd 二.加载驱动与卸载驱动 1.加载命令选择 2.创建目录环境以及驱动文件复制 3.加载驱动 提示①& ...

  2. 基于PsSetLoadImageNotifyRoutine实现监控模块加载并卸载已加载模块(卸载DLL、EXE和sys等加载)

    背景 对于内核层实现监控模块的加载,包括加载DLL模块.内核模块等.你也许会想到 HOOK 各种内核函数来实现.确定,在内核层中的 HOOK 已经给人留下太多深刻的印象了,有 SSDT HOOK.In ...

  3. C#中动态加载和卸载DLL

    在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载.在C#中我们也能使用Assembly.LoadFile实 ...

  4. C# 动态加载 动态卸载

    代码 using System; using System.Collections.Generic; using System.Text; using System.Threading; using  ...

  5. 《Windows驱动开发技术详解》之编程加载NT式驱动

    之前我们加载驱动都是利用INSTDRV这个应用,其原理是在注册表中写入相应的字段,这一节我们手动编写代码去加载驱动,其原理类似: 设备驱动程序的动态加载主要由服务控制管理程序(Service Cont ...

  6. 7. Oracle数据加载和卸载

    在日常工作中:经常会遇到这样的需求: Oracle 数据表跟文本或者文件格式进行交互:即将指定文件内容导入对应的 Oracle 数据表中:或者从 Oracle 数据表导出. 其他数据库中的表跟Orac ...

  7. 正确使用AssetBundle加载和卸载

    在使用Unity开发项目时,AssetBundle是必须使用的,对资源进行打包加载,因为移动端游戏包体的大小对用户体验非常重要,对内存的使用更加重要,下面我们就介绍一下关于AssetBundlle的使 ...

  8. AssetBundle加载和卸载

    https://blog.csdn.net/qq_33337811/article/details/73849019 转载 Unity5的AssetBundle管理(加载.卸载) 一.获取AssetB ...

  9. Linux如何加载与卸载U盘

    Linux如何加载与卸载U盘   第一:以root用户登陆 先加载USB模块 modprobe usb-storage 用fdisk -l 看看U盘的设备 假如U盘是sda1   第二:确定在 目录 ...

最新文章

  1. C++资源之不完全导引(上)
  2. C# OO(初级思想)
  3. kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
  4. gSoap客户端调用WebService完成后注意内存释放顺序
  5. 怪物猎人ol服务器维护,《怪物猎人OL》5月11日1:30全区全服维护内容公告
  6. js new Date()
  7. 新基建东风下,程序员这样乘风破浪!
  8. 一秒钟世界上会发生多少事_再多涂改,人性也总会醒来,也总会主动去追寻那一秒钟...
  9. java 线程池_Java 线程池 ThreadPoolExecutor 八种拒绝策略浅析
  10. Ubuntu18如何阻止自动切换程序多个窗口的顺序
  11. 软件工程-UML画图
  12. SM3算法的C++实现(代码)
  13. ffplay常用命令
  14. MAC OS系统如何使用动态远程桌面
  15. 泛泰android phone下载,这里泛泰手机全系列驱动和刷机临时RECVOVERY下载,自测全部好用...
  16. QNX系统获取PPS属性值
  17. 华为开启管理员模式_华为设备管理员级别与其对应的权限
  18. 给char赋超过范围的值会发生什么
  19. 帆软报表写switch函数
  20. Egret实现显示对象放大缩小(Scale改变)锚点坐标(anchorOffset)对应改变

热门文章

  1. mysql备份脚本 shell_MySQL数据库备份Shell脚本
  2. 大连交通大学计算机网络作业,计算机网络题库(大连交通大学)chapter4
  3. PAT甲级1115 DFS和BST
  4. 虚拟现实建模语言VRML
  5. data 谷歌浏览器更改user 路径_chrome修改默认用户目录
  6. python复制文件夹不阻塞_11.python并发入门(part14阻塞I/O与非阻塞I/O,以及引入I/O多路复用)...
  7. pytorch-数据增强的trick
  8. 图像数集据增广的15+种功能总结和Python代码实现
  9. PubLayNet:36万文档图像版面分析数据集
  10. CPU实时人脸检测,各种朝向、侧脸都检出来