summaryrefslogtreecommitdiff
path: root/md/writeup/kernel_hello_world.md
diff options
context:
space:
mode:
Diffstat (limited to 'md/writeup/kernel_hello_world.md')
-rw-r--r--md/writeup/kernel_hello_world.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/md/writeup/kernel_hello_world.md b/md/writeup/kernel_hello_world.md
new file mode 100644
index 0000000..efad275
--- /dev/null
+++ b/md/writeup/kernel_hello_world.md
@@ -0,0 +1,54 @@
+# Kernel compile "Hello world"
+
+Compile minimal linux kernel module.
+
+## Files
+
+You need to create to files __Makefile__ and __hello_world.c__.
+
+__Makefile__
+```
+obj-m += hello_world.o
+
+KDIR ?= /lib/modules/$(shell uname -r)/build
+
+all:
+ make -C $(KDIR) M=$(PWD) modules
+
+clean:
+ make -C $(KDIR) M=$(PWD) clean
+```
+
+
+__hello_world.c__
+```
+//http://www.tldp.org/LDP/lkmpg/2.4/html/c147.htm
+#include <linux/module.h> /* Needed by all modules */
+#include <linux/kernel.h>
+
+int hello_world_init( void )
+{
+ printk(KERN_DEBUG "Hello World!\n");
+ return 0;
+}
+
+void hello_world_exit( void )
+{
+ printk(KERN_DEBUG "Exit Hello World!\n");
+}
+
+module_init( hello_world_init );
+module_exit( hello_world_exit );
+
+MODULE_LICENSE("GPL");
+```
+
+
+
+##Compile
+
+Now if you havent done so ... install kernel headers of kernel that your system have now. And everything should be there.
+
+```
+make
+```