Difference between revisions of "Operating Systems 2014F: Tutorial 7"

From Soma-notes
Jump to navigation Jump to search
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 16: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

  1. Download the source for this simple module, unpack, and build it by typing "make".
  2. Install the module using "sudo insmod simple.ko". The hello message is recorded in the kernel logs. How do you view the kernel logs?
  3. Check to see that the module has been loaded. How do you do this?
  4. 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