이것이 점프 투 공작소

커널 모듈 만들고 적재하는법 본문

리눅스

커널 모듈 만들고 적재하는법

겅겅겅 2023. 5. 31. 21:53

간단한 커널 코드를 만들어서 빌드 후에 insmod로 커널에 적재하려고 합니다.

원래 도커 우분투 컨테이너를 사용해서 진행하려했는데 우분투 컨테이너에 맞는 커널 헤더를 못찾아서 결국 vm을 받아서 진행하였습니다..

1. 커널 헤더 다운받기

apt search linux-headers | grep $(uname -r) 을 통해 우분투에 맞는 커널 헤더를 다운받습니다.

설치된 커널 헤더는 ls -l /lib/modules 명령어로 확인 가능합니다.

2.  커널 코드 작성

간단한 문자열을 출력하는 hello.c 파일을 작성하였습니다.

module_init 에는 모듈이 시작될때 실행할 코드를, module_exit에서는 모듈이 종료될떄 동작하는 코드를 작성해주시면됩니다.

3. Makefile 

소스파일을 실행파일로 만들기 위한 Makefile을 작성합니다.

Makefile은 Make로 실행하기 위한 쉘 명령어들을 작성한 파일입니다.

 

4. Make로 모듈 빌드하기

make 명령어로 hello.c 파일을 빌드합니다.

빌드가 성공하면 아래와 같은 파일들이 생성됩니다.

modinfo 명령어로 모듈에 적재할 hello.ko 파일에 대한 정보를 확인 할 수 있습니다.

빌드된 파일의 vermagic버전과 현재 리눅스의 커널 버전이 맞지 않으면 적재가 실패 할 수 있습니다.

 

 

5. 빌드한 모듈 커널에 적재하기

sudo insmod hello.ko 명령어로 커널에 모듈을 적재합니다.

lsmod 명령어로 적재된 모듈들을 확인 할 수 있습니다.

작성한 printf 의 로그들은 cat /var/log/syslog 파일에서 확인 할 수 있습니다!