summaryrefslogtreecommitdiff
path: root/md/writeup/kernel_hello_world.md
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2016-08-22 18:12:37 +0100
committerFreeArtMan <dos21h@gmail.com>2016-08-22 18:12:37 +0100
commit8e04380436866e5d35fc674232774cb51faee9c7 (patch)
tree1d6acd31aacb6d958312c7d20c510abbb01d7a1c /md/writeup/kernel_hello_world.md
parent519253628e1847e60dca556221bbe0cda13f1172 (diff)
downloadmd-content-8e04380436866e5d35fc674232774cb51faee9c7.tar.gz
md-content-8e04380436866e5d35fc674232774cb51faee9c7.zip
Added kernel hello world compilation
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
+```