소프트웨어/공부예정] Android Kernel

kernel] 일반 linux 모듈 삽입

cs만두 2014. 7. 8. 07:34

안드로이드 커널 모듈을 만들기에 앞서서 리눅스를 기반으로 모듈을 만들어보자...


gedit hello.c

를 통해 c파일을 만든다.


그 후

아래의 소스를 작성한다.


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

static int hello_init(void) {
        printk("Hello******************\n");
        return 0;
}

static void hello_exit(void) {
        printk("Bye+++++++++++++++++++++++\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");



소스가 다 작성 되었다. Makefile을 만들자


gedit Makefile

로 파일을 생성한다.


# this
export ARCH=x86
export CROSS_COMPILE=
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
    rm -rf *.ko
    rm -rf *.mod.*
    rm -rf .*.cmd
    rm -rf *.o




ARCH를 따로 설정하는 이유는 혹시 안드로이드 커널을 컴파일하면서 ARCH를 arm으로 설정해놨을 수도 있기 때문




모든 파일이 만들어지면

make

명령을 통해 컴파일!!



그 후

insmod hello.ko

를 하면 모듈 적재!

rmmod hello.ko
를 하면 모듈 삭제!!