리눅스 모듈 따로 컴파일 - 따라하기

(인터넷을 보고 따라해 봄)

환경

w00t@ubuntu32svr:~/module/hello-1$ uname -a

Linux ubuntu32svr 3.16.35 #1 SMP Tue May 3 14:21:22 KST 2016 i686 i686 i686 GNU/Linux


우분투 모듈 컴파일 환경 구축

인터넷 참조 


소스코드

- init_hello 함수는 모듈이 시스템에 로드될때 동작
- exit_hello 함수는 모듈이 시스템에서 제거될때 동작

- printk() : dmesg 명령어로 확인 가능

w00t@ubuntu32svr:~/module/hello-1$ cat hello-1.c

#include <linux/module.h>

#include <linux/kernel.h>

int init_module(void) {

    printk(KERN_INFO "Hello, World 1\n");

    return 0;

}

void cleanup_module(void) {

    printk(KERN_INFO "Good bye world 1.\n");

}


Makefile (인터넷 참조)

- make -C 앞에 탭이 중요함

w00t@ubuntu32svr:~/module/hello-1$ cat Makefile

obj-m += hello-1.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


모듈 등록 및 삭제

 sudo ismod hello-1.ko

 sudo rmmod hello-1.ko


결과 확인 : 명령어 (dmesg)

[125734.809084] Hello, World 1

[125813.587657] Good bye world 1.

[125834.278316] Hello, World 1


참조

1. http://funnyksoo.blogspot.kr/2014/11/linux-kernel-module-programing-1.html

'module' 카테고리의 다른 글

리눅스 커널 3.16에 sys_upper() 등록하기  (1) 2016.05.16
Posted by goldpapa
,