2025
01
18
2012
02
24
LinuxドライバでHello worldを表示
ソースコード
/* hello.c */ #include <linux/module.h> // absolutely necessary MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_INFO "[%s] Hello world\n", __func__); return 0; } static void hello_exit(void) { printk(KERN_INFO "[%s] driver unloaded.\n", __func__); } 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 ※タブ注意
コマンド
以下コピペ用 make insmod hello.ko lsmod | grep hello dmesg | tail -5 rmmod hello dmesg | tail -5 ※ su じゃないとダメかも (sudo付き版) make sudo insmod hello.ko lsmod | grep hello dmesg | tail -5 sudo rmmod hello dmesg | tail -5 実行環境 Ubuntu10.04 64bit Linux 2.6.32-33-generic #70-Ubuntu SMP x86_64 GNU/Linux (uname -aで確認)
makeで失敗する or insmodで失敗する
前者:Linuxのソースコードが入っていなかったり、パスが間違っている 後者:起動したLinuxカーネルとコンパイル時のソースでconfigが異なっていてモジュールを組み 込めない sudo付け忘れ insmodする権限がない などの原因が考えられます。 そんなときはこちら(Scientific Linux用)かこちら(Ubuntu用)のページへ
検索用タグ C言語 Linuxドライバ デバイスドライバ
PR
2012/02/24 (Fri.) Comment(0) Linuxデバイスドライバ
Comments