首页 > 代码库 > HelloWorld 模块

HelloWorld 模块

helloworld.c 代码

#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){        printk(KERN_ALERT "Hello world\n");        return 0;}static void hello_exit(void){        printk(KERN_ALERT "goodbye,cruel world\n");}module_init(hello_init);module_exit(hello_exit);

Makefile 代码

 1 obj-m := helloworld.o 2  3 CURRENT_DIR :=$(shell pwd) 4  5 KERNEL_DIR := /usr/src/linux-headers-$(shell uname -r) 6  7 all: 8         $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules 9 10 clean:11         rm -rf %.o

执行make

1 ryan@Ryan-pc:/data1/Ryan/demo/helloworld$ make 2 make -C /usr/src/linux-headers-3.13.0-32-generic  M=/data1/Ryan/demo/helloworld modules3 make[1]: Entering directory `/usr/src/linux-headers-3.13.0-32-generic4   Building modules, stage 2.5   MODPOST 1 modules6 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$ demsg
 1 [178401.813566] sr 0:0:0:0: [sr0] Device not ready 2 [178401.813570] sr 0:0:0:0: [sr0]   3 [178401.813571] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE 4 [178401.813572] sr 0:0:0:0: [sr0]   5 [178401.813573] Sense Key : Not Ready [current]  6 [178401.813575] sr 0:0:0:0: [sr0]   7 [178401.813577] Add. Sense: Medium not present - tray closed 8 [178401.813579] sr 0:0:0:0: [sr0] CDB:  9 [178401.813580] Read(10): 28 00 00 00 02 2f 00 00 01 0010 [178401.813584] end_request: I/O error, dev sr0, sector 223611 [179614.794066] helloworld: module verification failed: signature and/or  required key missing - tainting kernel12 [179614.794552] Hello world13 [180458.268623] goodbye,cruel world14 [180514.941519] Hello world15 [180549.136795] goodbye,cruel world16 [181244.193514] Hello world

卸载模块

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

 

HelloWorld 模块