HelloWorld作成

HelloWorld作成

新しいプログラミング言語を覚えるとき、一番初めに書くプログラムは大抵「HelloWorld」だと思います。それはデバイスドライバ開発でも例外ではありません。

まずは新しいディレクトリを作成し、その中に、下記コードを記述した「hello.c」という名前のファイルを作成してください。

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

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
	printk(KERN_ALERT "driver loaded\n");
	printk(KERN_ALERT "Hello World\n");
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_ALERT "driver unloaded\n");
}

module_init(hello_init);
module_exit(hello_exit);

次にMakefileを作成します。

obj-m := hello.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean


これで、カレントディレクトリには「hello.c」と「Makefile」が存在していることになります。

# ls
hello.c   Makefile

あとは上記プログラムをビルドしてみましょう。


# make
make -C /lib/modules/2.6.18-238.el5/build M=/root/Desktop/kernel modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-238.el5-i686'
  CC [M]  /root/Desktop/kernel/hello.o
  Building modules, stage 2.
  MODPOST
  CC      /root/Desktop/kernel/hello.mod.o
  LD [M]  /root/Desktop/kernel/hello.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-238.el5-i686'

ビルド後、カレントディレクトリには、下記のようなファイルが作成されているはずです。

・Module.symvers
・hello.ko
・hello.mod.c
・hello.mod.o
・hello.o


# ls
hello.c   hello.mod.c  hello.o   Module.symvers
hello.ko  hello.mod.o  Makefile

ビルド後、上記のように5つのファイルが生成されていたらビルド成功です。

ソースコードの解説は後から行います。
まずは、ひととおりのドライバ作成手順を見ていきます。

タグ