Linuxデバイスドライバ開発 はじめの一歩

何もしないデバイスドライバを書いてみる。
ソースファイル名は skel_drv.c


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

MODULE_LICENSE("GPL v2");

static int skel_init(void)
{
	pr_info("%s\n", __FUNCTION__);
	return 0;
}

static void skel_exit(void)
{
    pr_info("%s\n", __FUNCTION__);
}

module_init(skel_init);
module_exit(skel_exit);

Makefileはシンプルに1行だけ


obj-m := skel_drv.o

Makeの仕方は


$ make -C /lib/modules/`uname -r`/build M=`pwd` modules

クリーンする方法は


$ make -C /lib/modules/`uname -r`/build M=`pwd` modules clean

デバイス出来上がったデバイスドライバのロードは


$ sudo insmod skel_drv.ko

アンロードは


$ sudo rmmod skel_drv

実行確認


$ dmesg | tail
 :
[472924.981255] skel_drv: loading out-of-tree module taints kernel.
[472924.984092] skel_drv: module verification failed: signature and/or required key missing - tainting kernel
[472925.004224] skel_init
[472936.566017] skel_exit
これだけで、デバイスドライバを作った気になれる。

ソースコード ダウンロード


目次

このページは言多の備忘録を元に再構成しています。