Linux kernel 模块 hello 测试

原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html

hello.c 文件:

#include <linux/kernel.h> /*Needed by all modules*/
#include <linux/module.h> /*Needed for KERN_* */
#include <linux/init.h> /* Needed for the macros */

MODULE_LICENSE("GPL");

static int year=2014;

static int hello_init(void)
{
  printk(KERN_WARNING "Hello kernel, it‘s %d!\n",year);
  return 0;
}

static void hello_exit(void)
{
  printk("Bye, kernel!\n");
}

/* main module function*/
module_init(hello_init);
module_exit(hello_exit);

Makefile文件:

obj-m := hello.o

all :
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

测试结果:

[[email protected] test]# make CONFIG_STACK_VALIDATION=
make -C /lib/modules/3.10.0-693.el7.x86_64/build M=/root/test modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64‘
  CC [M]  /root/test/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/test/hello.mod.o
  LD [M]  /root/test/hello.ko
make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.el7.x86_64‘

查看编译后文件:

[[email protected] test]# ll
total 204
-rw-r--r-- 1 root root   441 Nov  2 14:28 hello.c
-rw-r--r-- 1 root root 93768 Nov  2 14:30 hello.ko
-rw-r--r-- 1 root root   787 Nov  2 14:30 hello.mod.c
-rw-r--r-- 1 root root 52872 Nov  2 14:30 hello.mod.o
-rw-r--r-- 1 root root 44016 Nov  2 14:30 hello.o
-rw-r--r-- 1 root root   166 Nov  2 14:29 Makefile
-rw-r--r-- 1 root root    27 Nov  2 14:30 modules.order
-rw-r--r-- 1 root root     0 Nov  2 14:30 Module.symvers

原文地址:https://www.cnblogs.com/wangjq19920210/p/11782330.html

时间: 2024-10-12 10:53:58

Linux kernel 模块 hello 测试的相关文章

Linux Kernel 模块内存泄露查找 (2)

在之前的一篇博文<<Linux Kernel模块内存泄露的一种查找思路>>中,我介绍了一种查找内核内存泄露的一种方法.这不才几个月,又有客户埋怨:使用了产品5天左右后,Suse服务器由于内存耗尽而Crash.O My God,不会吧,在我机器上跑的好好的哇(程序员常用名言 嘿嘿). 那么就让我们一起来看看,苦逼的博主是如何确定问题并且找到问题的.... 一. 确定问题 第一步,我们要做的是,确定这个问题和产品的Kernel模块有关系.首先根据客户描述,如果停止我们产品,则不会出现内

linux kernel 模块多文件编译

/*************************************************************************** * linux kernel 模块多文件编译 * 声明: * 本文主要是记录在调试驱动的阶段,我们可能会更倾向于使用模块插入的方式 * 来进行驱动调试,这样可以大大缩短调试时间.之前在调试gt9xx Touch的时候也 * 是采用这种方式,这里还是记录一下,日后方便查找. * * 2016-2-2 深圳 南山平山村 曾剑锋 **********

CentOS启动流程、Grub legacy配置、linux kernel模块管理、伪文件系统介绍

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 启动相关基础概念汇总 ● 启动流程 ● init程序类型     /etc/rc.d/rc     chkconfig     /etc/rc.d/rc.sysinit ● GRUB legacy     命令行接口     配置文件 ● Linux Kernel     内核模块查看与管理         lsmod         modinfo         modprob

Linux kernel模块管理相关详解

一.Linux内核模块化设计 1.Linux内核设计:单内核.模块化(动态装载和卸载) (1 )Linux:单内核设计,但充分借鉴了微内核体系的设计的优点:为内核引入了模块化机制: (2) 内核的组成部分: kernel:内核核心,一般为bzImage格式,通常位于/boot目录,名称为vmlinuz-VERSION-release: 当系统启动之后该文件就不在使用,因为已经加载到内存,放置/boot下方便管理 kernel object:内核模块,一般放置于/lib/modules/VERSI

从Cts测试testCheckForDuplicateOutput到linux kernel中Thread消耗PID

最近折腾CTS android.security.cts testCheckForDuplicateOutput项,单项测试很容易过,但是联测就挂了. 源码:http://xdecay.com/docs/android-sdk/cts/tests/tests/security/d0/db5/_cloned_secure_random_test_8java_source.php 测试的原理是:不停的创建和关闭进程,测试Pass的前提是出现两个Pid相同的进程.. 循环过程如下: a). 创建进程A

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

Linux Kernel Module(LKM) Init、Delete Code Principle Learning

目录 1. Linux模块(LKM)简介 2. 使用Linux模块 3. LKM模块加载原理 4. LKM模块卸载原理 1. Linux模块(LKM)简介 模块是一种向linux内核添加"设备驱动程序"."文件系统"."其他组件"的有效方法,而无须重新编译内核或重启系统,这消除了许多限制,同时带来了很多的优点 1. 通过使用模块,内核程序员能够预先编译大量驱动程序,而不会致使内核映像的尺寸发生膨胀.在自动检测硬件或用户提示后,安装例程会选择适当的

Linux Kernel(Android) 加密算法总结(cipher、compress、digest)

1. Linux内核支持哪些加密算法 ? 内核支持的加密算法很多,包括: 对称加密算法,如AES: 摘要算法,如sha1,md5: 压缩算法,如deflate. 不过内核好像不支持非对称加密算法. 2. 加密算法源文件位置 这些算法作为加密函数框架的最底层,提供加密和解密的实际操作.这些函数可以在内核crypto文件夹下,相应的文件中找到. 3.  配置编译选项将加密算法作为模块编入内核 Cryptographic options 加密选项 Cryptographic API 提供核心的加密AP

如何进行Linux Kernel 开发

转自:http://www.cppblog.com/flyonok/archive/2011/04/15/144316.html 如何进行Linux Kernel 开发? (Take 3) 译者序:这是一篇很重要的文档,它介绍了内核开发的方方面面.这篇文档已被加入到内核源码树的Documentation文档里(名字为HOWTO),你可以在最新的内核树里找到它.尽管已经有网友翻译过这篇文档,但是我还是决定自己再翻译一遍.翻译完之后,我的感触是如果依靠翻译来进行学习,速度太慢了.以后的技术文档直接看