Linux
カーネル

シンプルなカーネルモジュールメモ

前提

  • Ubuntu 16.04
  • Windows/VMWare
  • ロードしてログの出力をするだけ

メモ

simple_kernelmodule.c
#include <linux/module.h>
#include <linux/init.h>

MODULE_LICENSE("Dual BSD/GPL");

static int kure_init(void){
        printk("kure_init\n");
        return 0;
}

static void kure_exit(void){
        printk("kure_exit\n");
}

module_init(kure_init);
module_exit(kure_exit);
Makefile
KERNEL_DIR = /lib/modules/$(shell uname -r)/build
BUILD_DIR := $(shell pwd)
VERBOSE   := 0
obj-m := simple_kernelmodule.o
all:
        make -C $(KERNEL_DIR) SUBDIRS=$(BUILD_DIR) KBUILD_VERBOSE=$(VERBOSE) modules
clean:
        rm -rf  *.o *.ko *.mod.c *.symvers *.order .tmp_versions .helloworld.*

実行

# make
# insmod simple_kernelmodule.ko

実行結果(/var/log/syslog)

Aug 13 02:30:43 ubuntu kernel: [  109.905030] kure_init
Aug 13 02:30:48 ubuntu kernel: [  114.971318] kure_exit