加载此模块时:

#include

#include

#include

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void) {

printk("<1> Hello world!\n");

return 0;

}

static void hello_exit(void) {

printk("<1> Bye,cruel world\n");

}

module_init(hello_init);

module_exit(hello_exit);

该模块在lsmod中被标记为[永久],不能卸载,在2.6.39-02063904-generic(从Ubuntu PPA).但它在默认的2.6.38内核上工作正常. (在Ubuntu 11.04 x86上).

2.6.39发生了什么变化?我的代码需要改变什么?

当我遇到这个问题时,我试图分离一个更复杂的问题.

编辑:

根据答案的建议,我编辑了添加__init和__exit(hello3.c)的代码:

#include

#include

#include

MODULE_LICENSE("Dual BSD/GPL");

static int __init hello_init(void) {

printk("<1> Hello world!\n");

return 0;

}

static void __exit hello_exit(void) {

printk("<1> Bye,cruel world\n");

}

module_init(hello_init);

module_exit(hello_exit);

构建输出:

make -C /lib/modules/2.6.39-02063904-generic/build M=/home/douglas/kernelmod modules

make[1]: Entering directory `/usr/src/linux-headers-2.6.39-02063904-generic'

Building with KERNELRELEASE = 2.6.39-02063904-generic

CC [M] /home/douglas/kernelmod/hello3.o

Building modules,stage 2.

Building with KERNELRELEASE = 2.6.39-02063904-generic

MODPOST 8 modules

CC /home/douglas/kernelmod/hello3.mod.o

LD [M] /home/douglas/kernelmod/hello3.ko

make[1]: Leaving directory `/usr/src/linux-headers-2.6.39-02063904-generic'

EDIT2:

hello3.mod.c:

#include

#include

#include

MODULE_INFO(vermagic,VERMAGIC_STRING);

struct module __this_module

__attribute__((section(".gnu.linkonce.this_module"))) = {

.name = KBUILD_MODNAME,.init = init_module,#ifdef CONFIG_MODULE_UNLOAD

.exit = cleanup_module,#endif

.arch = MODULE_ARCH_INIT,};

static const struct modversion_info ____versions[]

__used

__attribute__((section("__versions"))) = {

{ 0xbe4b3e92,"module_layout" },{ 0xb4390f9a,"mcount" },{ 0x5e3b3ab4,"printk" },};

static const char __module_depends[]

__used

__attribute__((section(".modinfo"))) =

"depends=";

MODULE_INFO(srcversion,"D2A869459874C22AB265981");

# grep CONFIG_MODULE_UNLOAD /boot/config-2.6.39-02063904-generic

CONFIG_MODULE_UNLOAD=y

EDIT3:

更有趣的是,我自己编译的香草内核不会发生这种情况

加载和卸载模块正常.

EDIT4:

我在虚拟机上安装了Oneiric beta 2内核,而3.0.0-11内核也没有任何问题.所以它似乎局限于Ubuntu香草PPA内核.这不是很有趣的解决.

linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久相关推荐

  1. linux内核版本指什么意思,Linux的内核版本是怎么回事

    Linux的内核版本编号有点像如下的样子: < 2.6.32-642.el6.x86_64 主版本.次版本.发布版本-修改版本 > 虽然编号就是如上的方式来编写,不过依据Linux内核的发 ...

  2. openwrt使用linux内核版本,openwrt更换原有Linux内核版本

    openwrt更换原有Linux内核版本 1:将openwrt14.07 中的内核版本从3.10.49 更换成 3.10.102 a:更改文件include/kernel-version.mk b:修 ...

  3. openwrt使用linux内核版本,降低OpenWRT的Linux内核版本

    不久前, 为了移植某驱动程序,笔者可谓绞尽脑汁,在4.1内核版本上,尝试了很多次都没能成功,后来仔细分析,才知道是内核版本过高导致的,本文给出降低内核版本的方法,具体编译环境的搭建,还请自行查阅其他文 ...

  4. 查看版本linux内核版本是多少,查看linux版本,内核及多少位

    1. 查看内核版本命令: 1) [root@q1test01 ~]# cat /proc/version Linux version 2.6.9-22.ELsmp (bhcompile@crowe.d ...

  5. linux查看tcl版本_查看Linux内核版本的方法有几个?你也是这样操作吗?

    请关注本头条号,每天坚持更新原创干货技术文章.如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 内核是操作系统的核心组件. 它管理系统的资源,是计算机硬 ...

  6. 如何查看docker的内核版本_查看Linux内核版本的方法有几个?你也是这样操作吗?...

    请关注本头条号,每天坚持更新原创干货技术文章.如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 内核是操作系统的核心组件. 它管理系统的资源,是计算机硬 ...

  7. 手机linux内核版本了解,Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...

  8. 【Linux】在命令行中查看Linux内核版本的几种方法

    如何知道自己的系统使用哪个Linux内核版本?以下是在Linux终端中检查内核版本的几种方法. 如何找到Linux内核版本 1.使用uname命令查找Linux内核 uname是用于获取系统信息的Li ...

  9. Linux 内核版本命名

    Linux 内核版本命名 标签: LinuxKernel 2013-11-13 09:25 12248人阅读 评论(0) 收藏 举报 分类: Linux内核(6) Linux(6) 版权声明:本文为博 ...

  10. linux3.14.57内核版本,CentOS和RedHat Linux内核版本的对应关系

    由于RedHat和CentOS的发行版本现在众多,所以我们应该知道CentOS和Redhat及Linux内核之间版本的对应关系对维护系统还是很有帮助的.对应的列表如下: Redhat 9.0----- ...

最新文章

  1. Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园
  2. matlab处理txt文件数据
  3. Jbuilder9 + WebLogic8.1的基本配置
  4. JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec();
  5. 蓝桥杯java第四届决赛第四题--九宫重排
  6. 盘点:2019年最赚钱的10种编程语言
  7. java.lang.OutOfMemoryError: PermGen space 问题解决
  8. Gartner 组织世界BI大会,PowerBI 与 Tableau 同台竞技
  9. 精读《setState 做了什么》
  10. knn算法python代码_在python中使用KNN算法处理缺失的数据
  11. ROS通过串口,读写STM32和HC-SR04超声波测距信息
  12. 利用POI导出excel
  13. fgo服务器维护补偿什么时候才有,FGO11月02日临时维护公告 补偿奖励一览
  14. 重点分析!转型中的好莱坞发生了哪些变局?
  15. Netty+WebSocket服务器完成Web聊天室(纯文字)
  16. range-coder使用
  17. 树莓派安装共享打印机HP LaserJet CP1025(foo2zjs)
  18. 2022-VS2015-ACE+TAO(7.0.5)+CIAO+OpenDDS 3.16 编译
  19. ALSA中PCM的使用
  20. BW项目随手记:SAP 采购单位和基本计量单位转换关系

热门文章

  1. 翻译器DIY它———算在英文文本中的单词数,字符和行数
  2. 剑指OFFER之从二叉搜索树的后序遍历序列(九度OJ1367)
  3. Jquery性能优化(转自蓝色理想)
  4. Hibernate 多对多映射实列
  5. 2019CCF自主可控计算机大会召开 中科院院士吁自力更生
  6. 利用74LS138实现4-16译码器,并在QuartusⅡ上进行仿真
  7. 里bl2和bl3为什么分开_施工现场乙炔瓶为什么必须直立?乙炔为什么不能用尽?........
  8. Spring AOP通知顺序
  9. java 二维数组的定义
  10. 2021贵州毕节高考成绩查询,2021贵州毕节选调生考试排名查询入口-时间(已开通)...