HelloWorld 模块

本文介绍了一个简单的Linux内核模块示例,该模块在加载时打印“Hello World”,卸载时打印“Goodbye, cruel world”。文章展示了完整的源代码及Makefile配置,并通过命令行演示了模块的编译、加载与卸载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

helloworld.c 代码

 1 #include <linux/init.h>
 2 #include <linux/module.h>
 3 
 4 MODULE_LICENSE("Dual BSD/GPL");
 5 
 6 static int hello_init(void)
 7 {
 8 printk(KERN_ALERT "Hello world\n");
 9 return 0;
10 }
11 
12 static void hello_exit(void)
13 {
14 printk(KERN_ALERT "goodbye,cruel world\n");
15 }
16 
17 module_init(hello_init);
18 module_exit(hello_exit);

 

Makefile 代码

obj-m := helloworld.o

CURRENT_DIR :=$(shell pwd)

KERNEL_DIR := /usr/src/linux-headers-$(shell uname -r)

all:
        $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules

clean:
        rm -rf %.o

执行make

ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ make 
make -C /usr/src/linux-headers-3.13.0-32-generic  M=/data1/Ryan/demo/helloworld modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-32-generic'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-32-generic'

 

加载模块

1 ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ sudo insmod helloworld.ko 
2 ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ 

dmesg查看

1 ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ dmesg
[178401.813566] sr 0:0:0:0: [sr0] Device not ready
[178401.813570] sr 0:0:0:0: [sr0]  
[178401.813571] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[178401.813572] sr 0:0:0:0: [sr0]  
[178401.813573] Sense Key : Not Ready [current] 
[178401.813575] sr 0:0:0:0: [sr0]  
[178401.813577] Add. Sense: Medium not present - tray closed
[178401.813579] sr 0:0:0:0: [sr0] CDB: 
[178401.813580] Read(10): 28 00 00 00 02 2f 00 00 01 00
[178401.813584] end_request: I/O error, dev sr0, sector 2236
[179614.794066] helloworld: module verification failed: signature and/or  required key missing - tainting kernel
[179614.794552] Hello world
[180458.268623] goodbye,cruel world
[180514.941519] Hello world
[180549.136795] goodbye,cruel world
[181244.193514] Hello world

卸载模块

1 ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ sudo rmmod helloworld 
2 ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ 

 

 

 

转载于:https://www.cnblogs.com/xiaoxiaodewo/p/5621613.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值