Linuxデバイスドライバ開発入門をやってみた
root@hostname:/home/shimizu/driver# cat /etc/debian_version 8.2 root@hostname:/home/shimizu/driver# uname -a Linux hostname 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux root@hostname:/home/shimizu/driver# aptitude install linux-headers-3.16.0-4-amd64 ... root@hostname:/home/shimizu/driver# cat 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); root@hostname:/home/shimizu/driver# cat 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 root@hostname:/home/shimizu/driver# make make -C /lib/modules/3.16.0-4-amd64/build M=/home/shimizu/driver modules make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64' Makefile:10: *** mixed implicit and normal rules: deprecated syntax make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64' CC [M] /home/shimizu/driver/hello.o Building modules, stage 2. MODPOST 1 modules CC /home/shimizu/driver/hello.mod.o LD [M] /home/shimizu/driver/hello.ko make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64' root@hostname:/home/shimizu/driver# ls Makefile Module.symvers hello.c hello.ko hello.mod.c hello.mod.o hello.o modules.order root@hostname:/home/shimizu/driver# insmod hello.ko root@hostname:/home/shimizu/driver# lsmod | grep hello hello 12458 0 root@hostname:/home/shimizu/driver# rmmod hello root@hostname:/home/shimizu/driver# lsmod | grep hello ### hello.cに記載している通り、モジュールロード時と削除時にsyslogに記載される ### root@hostname:/home/shimizu/driver# tail -n 3 /var/log/syslog Oct 25 17:29:44 hostname kernel: [4858346.340042] driver loaded Oct 25 17:29:44 hostname kernel: [4858346.340050] Hello World Oct 25 17:29:59 hostname kernel: [4858361.365712] driver unloaded