当前位置:七道奇文章资讯系统安全Linux安全
日期:2012-05-05 22:45:00  来源:本站整理

Ubuntu下编译的第一个内核模块[Linux安全]

赞助商链接



  本文“Ubuntu下编译的第一个内核模块[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  内核模块是Linux内核向外部供应的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块.Linux内核之所以供应模块机制,是因为它本身是一个单内核(monolithic kernel).单内核的最大长处是效率高,因为全部的内容都集成在一同,但其缺陷是可扩大性和可保护性相对较差,模块机制就是为了补偿这一缺陷.

  1、 什么是模块

  模块是具有独立功效的程序,它可以被单独编译,但不能独立运行.它在运行时被链接到内核作为内核的一部份在内核空间运行,这与运行在用户空间的进程是差别的.模块普通由一组函数和数据构造构成,用来实现一种文件系统、一个驱动程序或其他内核上层的功效.

  利用程序与内核模块的对比

  为了加深对内核模块的理解,表一给出利用程序与内核模块程序的对比.

  表一 利用程序与内核模块程序的对比

  

  从表一我们可以看出,内核模块程序不能调用libc库中的函数,它运行在内核空间,且只有超级用户可以对其运行.别的,模块程序必须通过module_init()和module-exit()函数来奉告内核“我来了”和“我走了”.

  2、 编写一个简单的模块

  模块和内核都在内核空间运行,模块编程在一定意义上说就是内核编程.因为内核版本的每次改变,此中的某些函数名也会呼应地发生改变,因此模块编程与内核版本密切相关.以下例子针对Ubuntu 9.10 内核2.6.31-14-generic

  1.程序举例

  #include

  #include

  #include

  MODULE_LICENSE("GPL");

  static int __init lkp_init(void)

  {

  printk(KERN_ALERT "Hello World!\n");

  return 0;

  }

  static void __exit lkp_cleanup(void)

  {

  printk(KERN_ALERT "Bye World!\n");

  }

  module_init(lkp_init);

  module_exit(lkp_cleanup);

  MODULE_AUTHOR("heyutao");

  MODULE_DESCRIPTION("hello");

  阐明

  全部模块都要利用头文件module.h,此文件必须包含进来.

  头文件kernel.h包含了常用的内核函数.

  头文件init.h包含了宏_init和_exit,它们答应释放内核占用的内存.

  lkp_init是模块的初始化函数,它必须包含诸如要编译的代码、初始化数据构造等内容.

  利用了printk()函数,该函数是由内核定义的,功效与C库中的printf()近似,它把要打印的信息输出到终端或系统日记.

  lkp_cleanup是模块的退出和清理函数.此处可以做全部终止该驱动程序时相关的清理工作.

  module_init()和cleanup_exit()是模块编程中最基本也是必须的两个函数.

  module_init()是驱动程序初始化的进口点.而cleanup_exit()注销由模块供应的全部功效.

  以上是“Ubuntu下编译的第一个内核模块[Linux安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • ubuntu下无法利用无线网络的办理办法
  • 三步搞定windows与ubuntu之间文件同享
  • Ubuntu和windows文件同享问题详解
  • 在 Ubuntu 12.04 Server 上安装 Rails 环境
  • ubuntu 12.04 安装 Nginx+PHP5 (PHP-FPM) +MySQL主机详解
  • Linux(ubuntu)下配置android环境
  • Ubuntu 10.04上搭建Ruby on Rails环境
  • Ubuntu 10.10中关闭按钮位置的改变
  • Ubuntu下检测CPU温度的工具
  • Ubuntu Server增添关机用户
  • Ubuntu 11.04安装火狐5
  • ubuntu 10.04下搭建samba文件服务器
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .