Well, in linux, a kernel module is a piece of kernel object code which can extend the functionality of a running kernel, on demand! Isn't it awesome, being able to get inside a running kernel! Here is a module which is over-simplistic and does nothing, well what else can you expect from 'hello world'.
Compiling a kernel module can be cumbersome. Here is a Makefile to compile the module.
This process can create a spectrum of files (I try to remove most of the useless ones'). The linux kernel module object code is in hello_world.ko.
Install the module with the command...
Look at the list of all modules currently in the kernel with the command...
Remove the module with the command...
You can have a look at the kernel output, which also contains the output of printk()
#include <linux/module.h>
int init(void) {
printk("Hello world!\n");
return 0;
}
void exit(void) {
printk("Goodbye world!\n");
}
MODULE_LICENSE("GPL");
module_init(init);
module_exit(exit);
Compiling a kernel module can be cumbersome. Here is a Makefile to compile the module.
ifneq ($(KERNELRELEASE),)
obj-m := hello_world.o
else
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
rm -r -f .tmp_versions *.mod.c .*.cmd *.o *.symvers
endif
This process can create a spectrum of files (I try to remove most of the useless ones'). The linux kernel module object code is in hello_world.ko.
Install the module with the command...
$ sudo insmod hello_world.ko
Look at the list of all modules currently in the kernel with the command...
$ lsmod
Remove the module with the command...
$ sudo rmmod hello_world
You can have a look at the kernel output, which also contains the output of printk()
$ dmesg | tail -2
[435766.953016] Hello world!
[435766.953017] Goodbye world!
Nice Article .In short description good explanation about the Linux. Thanks For sharing the informative news.
ReplyDeleteRegards,
Linux Online Training
hotmail sign up login
ReplyDelete