linux如何卸载内核模块,Linux内核模块的加载和卸载实验

linux提供了module机制,能够动态的加载内核模块。本实验在centOS7下执行。

hello kernel代码

hello.c

#include

#include

#include

static int __init hello_init(void)

{

printk("<1>Hello Kernel!\n"); /*立即输出信息*/

return 0;

}

static void __exit hello_cleanup(void)

{

printk("<1>See you,Kernel!\n");

}

module_init(hello_init); /*进入内核的时候,调用hello_init */

module_exit(hello_cleanup); /*离开内核的时候,调用hello_cleanup */

MODULE_LICENSE("GPL"); /*协议*/

Makefile

obj-m += hello.o #由此目标文件生成模块

CURRENT_PATH := $(shell pwd) #当前所在的路径

LINUX_KERNEL := $(shell uname -r) #内核的版本号

#内核代码所在的路径

LINUX_KERNEL_PATH := /usr/src/kernels/$(LINUX_KERNEL)

#编译

all:

make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules

#清除编译生成的文件

clean:

make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

执行make

[root@controller hello]# make

make -C /usr/src/kernels/3.10.0-514.10.2.el7.x86_64 M=/usr/src/kernels/3.10.0-514.10.2.el7.x86_64/hello modules

make[1]: Entering directory `/usr/src/kernels/3.10.0-514.10.2.el7.x86_64'

CC [M] /usr/src/kernels/3.10.0-514.10.2.el7.x86_64/hello/hello.o

Building modules, stage 2.

MODPOST 1 modules

CC /usr/src/kernels/3.10.0-514.10.2.el7.x86_64/hello/hello.mod.o

LD [M] /usr/src/kernels/3.10.0-514.10.2.el7.x86_64/hello/hello.ko

make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.10.2.el7.x86_64'

执行insmod加载内核模块

sudo insmod hello.ko

lsmod 可以查看到自己的模块

lsmod | grep hello

dmesg可以看到打印的log

[root@controller hello]# dmesg | tail -1

[88012.521835] <1>Hello Kernel!

执行rmmod卸载内核模块

sudo rmmod hello.ko

dmesg可以看到打印的log

[root@controller hello]# dmesg | tail -1

[88108.264491] <1>See you,Kernel!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值