Operating Systems 2014F: Tutorial 7: Difference between revisions
| No edit summary | |||
| Line 1: | Line 1: | ||
| In this tutorial you will be learning about the basics of Linux kernel modules and character devices. | In this tutorial you will be learning about the basics of Linux kernel modules and character devices. | ||
| # Download the source for [this simple module]. | ===Building and running your first module=== | ||
| # Download the source for [http://homeostasis.scs.carleton.ca/~soma/os-2014w/code/ this simple module], unpack, and build it by typing "make". | |||
| # Install the module using "sudo insmod simple.ko".  The hello message is recorded in the kernel logs.  How do you view the kernel logs? | |||
| # Check to see that the module has been loaded.  How do you do this? | |||
| # Remove the module from the kernel.  What did you do? | |||
| ===Devices=== | |||
Revision as of 20:14, 11 November 2014
In this tutorial you will be learning about the basics of Linux kernel modules and character devices.
Building and running your first module
- Download the source for this simple module, unpack, and build it by typing "make".
- Install the module using "sudo insmod simple.ko". The hello message is recorded in the kernel logs. How do you view the kernel logs?
- Check to see that the module has been loaded. How do you do this?
- Remove the module from the kernel. What did you do?
Devices
Source
simple.c
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
static int __init simple_init(void)
{
        printk ("Hello kernel world!\n");
        return 0;
}
static void __exit simple_exit(void)
{
        printk ("Goodbye kernel world.\n");
        return;
}
module_init(simple_init);
module_exit(simple_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Anil Somayaji <soma@scs.carleton.ca>");
MODULE_DESCRIPTION("A simple module");
Makefile (for simple)
obj-m := simple.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules