Summarised from https://blog.sourcerer.io/writing-a-simple-linux-kernel-module-d9dc3762c234 ```bash apt-get install build-essential linux-headers-`uname -r` mkdir ~/src/lkm_example cd ~/src/lkm_example ``` and some C ```c #include #include #include 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 ```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 ```bash sudo insmod lkm_example.ko ``` and ```bash sudo dmesg ``` to see our little `"Hello, World!"` message.