ssongk
ssongk
ssongk
전체 방문자
오늘
어제

공지사항

  • resources
  • 분류 전체보기 (626)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (13)
      • dreamhack (12)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk
background/linux kernel

[Lazenca][Development of Kernel Module] 01.Hello world!

[Lazenca][Development of Kernel Module] 01.Hello world!
background/linux kernel

[Lazenca][Development of Kernel Module] 01.Hello world!

2024. 3. 28. 13:58

이 예제는 ubuntu 18.10에서 진행된다.

여기서 다운받아서 vmware로 가상머신 하나 만들어줬다.

https://old-releases.ubuntu.com/releases/18.10/

 

gcc가 설치되어 있어야 한다.

lazenca0x0@ubuntu:~$ uname -a
Linux ubuntu 4.18.0-11-generic #12-Ubuntu SMP Tue Oct 23 19:22:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
 
lazenca0x0@ubuntu:~$ gcc --version
gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
lazenca0x0@ubuntu:~$

 

이후 커널 모듈 빌드를 위해 다음과 같 패키지를 설치한다.

sudo apt-get install build-essential make

 

패키지 설치에 약간의 이슈가 있어서 아래 글들을 참조했다.
https://superuser.com/questions/1527250/apt-update-error-with-ubuntu-18-10-cosmic-version

 

apt update error with ubuntu 18.10 cosmic version

Problem: error 404 code status http://archive.ubuntu.com/ubuntu cosmic InRelease Ubuntu 18.10 cosmic end of life since yesterday, apt install commands no longer work, I tried to upgrade my sy...

superuser.com

https://kkn1220.tistory.com/123

 

ubuntu에러(Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)

가끔 $sudo apt-get update를 할 때아래 메시지가 발생할 때가 있다. (우분투 14.04기준) Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) 간단하다. $sudo rm /var/lib/apt/lists/* -vf$sudo apt-get

kkn1220.tistory.com

 

라젠카에서 제일 간단한 Kernel Module 코드(simple.c)를 제공한다.

#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
 
int init_module(void) {
    printk(KERN_INFO "Hello world - Lazenca0x0.\n");
    return 0;
}
 
void cleanup_module(void) {
    printk(KERN_INFO "Goodbye world - Lazenca0x0.\n");
}

 

make 명령을 위한 Makefile를 작성한다.

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

 

주의할 점은 all:, clean: 다음 줄에 오는 것은 space가 아닌 tab으로 들여쓰기를 해줘야 한다.

들여쓰기를 space로 할 경우 인식하지 못해 오류 발생

 

이제 다음과 같이 make를 실행하면 Kernel module인 ".ko" 확장자를 가지는 파일이 생성된다.

 

 

modinfo 명령어를 이용하여 생성된 Kernel module의 정보를 확인 할 수 있다.

 

 

insmod 명령어를 이용하여 Linux Kernel에 Module을 등록할 수 있다.
이후 lsmod 명령어를 이용하여 Linux Kernel에 등록된 Module들을 확인 할 수 있다.

 

dmesg 명령어를 이용하여 Module에서 출력하는 메시지를 확인 할 수 있다.
("sample.ko" Module이 Kenel에 삽입된 후 "Hello world - Lazenca0x0." 메시지가 출력됨)

 

rmmod 명령어를 이용하여 Linux Kernel에 등록된 Module을 제거 할 수 있습니다.


("sample.ko" Module이 Kenel에 제거된 후 "Goodbye world - Lazenca0x0." 메시지가 출력됨)

처음에 제대로 출력이 안됐어서 지우고 다시 등록하니까 이렇게 메시지를 볼 수 있었다.

 


 

https://www.lazenca.net/pages/viewpage.action?pageId=23789735

 

01.Hello world! - TechNote - Lazenca.0x0

Excuse the ads! We need some help to keep our site up. List Hello world! OS Information lazenca0x0@ubuntu:~$ uname -a Linux ubuntu 4.18.0-11-generic #12-Ubuntu SMP Tue Oct 23 19:22:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux lazenca0x0@ubuntu:~$ gcc --versi

www.lazenca.net

 

'background > linux kernel' 카테고리의 다른 글

[Lazenca][Development of Kernel Module] 03.ioctl(Input/Output control)  (0) 2024.03.28
[Lazenca][Development of Kernel Module] 02.Character Device Drivers  (0) 2024.03.28
[Linux Kernel] Device Driver  (0) 2024.03.28
fork-exec  (1) 2022.10.11
시스템 호출(system call)  (0) 2022.09.06
    'background/linux kernel' 카테고리의 다른 글
    • [Lazenca][Development of Kernel Module] 02.Character Device Drivers
    • [Linux Kernel] Device Driver
    • fork-exec
    • 시스템 호출(system call)
    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.