os/linux/ SummaryWritingASimpleLinuxKernelModule1


Summarised from https://blog.sourcerer.io/writing-a-simple-linux-kernel-module-d9dc3762c234

apt-get install build-essential linux-headers-`uname -r`
mkdir ~/src/lkm_example
cd ~/src/lkm_example

and some C

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“Robert W. Oliver II”);
MODULE_DESCRIPTION(“A simple example Linux module.”);
MODULE_VERSION(“0.01”);static int __init lkm_example_init(void) {
 printk(KERN_INFO “Hello, World!\n”);
 return 0;
}static void __exit lkm_example_exit(void) {
 printk(KERN_INFO “Goodbye, World!\n”);
}module_init(lkm_example_init);
module_exit(lkm_example_exit);

and we need a Makefile

obj-m += lkm_example.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

then to load it

sudo insmod lkm_example.ko

and

sudo dmesg

to see our little "Hello, World!" message.