320x100
320x100

모듈

: 리눅스 시스템의 일부를 이루지만, 독립적으로 존재할 수 있는 드라이버

: 커널 이미지에서 필요로 할 때 메모리에 로드되어 커널의 일부로 작동

: 드라이버가 필요 없어지면 언로드 되어 메모리를 절약

 

 

 

 

커널

: 시스템 자원을 소유하고 관리하는 도구

: 하드웨어 관리 및 스케줄링, 응용 프로그램의 하드웨어 자원에 대한 간접적 접근 지원

: uname -r 명령을 통해 커널 버전 확인

: 리눅스 커널은 www.kernel.org 에서 무료로 배포

 

 

 

 

 

모놀리식 커널

: 과거에는 커널안에 시스템 장치를 제어하는 기능을 내장하였는데, 이를 모놀리식(monolithic) 이라고 함

: 모놀리식의 커널은 시스템의 모든 하드웨어를 관리할 수 있으나, 새로운 장치의 추가나 

  기존 장치의 제거에 대해서 유연하게 대응하지 못함

: 실제 장착되지 않은 하드웨어에 대한 드라이버까지 포함할 수 있기 때문에 비대해지는 문제 존재

 

 

 

 

 

커널 모듈

: C 컴파일러로 만들어진 오브젝트 파일로써, .ko 파일로 생성

: 각 모듈은 /lib/modules/<kernel version>/kernel 디렉터리안에 커널 모듈들이 존재

 

 

 

 

 

모듈 관련 명령어

- lsmod

- insmod

- rmmod

- modprobe

- modinfo

- depmod

 

 

 

 

 

lsmod

: 리눅스 커널에 적재된 모듈 정보를 출력

: 모듈명, 크기, 다른 모듈에서 사용하는 수, 사용중인 모듈 순으로 출력

 

 

 

 

 

insmod

: 커널에 모듈을 적재. 특정한 모듈을 자동으로 검색하고 삽입

 

- 형식

: insmod <module file>

 

 

 

 

 

rmmod

: 커널에서 모듈을 제거. 다른 모듈에 의해 사용중인 모듈은 제거 불가

 

- 형식

: rmmod <module>

 

 

 

 

 

modprobe

: 리눅스 커널에 모듈을 적재하거나 제거

: 단일 모듀르 의존성이 있는 여러 모듈, 특정 디렉터리의 모든 모듈까지 적재 가능

: flag=value 형태로 매개변수 전달/가지 가능

: 모듈이 다른 모듈에 의존하고 있을 경우 필요한 모듈을 먼저 적재

: /lib/modules/<kernel version>/modules.dep 파일을 참조하여 모듈간 의존성 해결

 

- 형식

: modprobe [option] <module> [flag=value]

 

- 주요 옵션

: -l

 > 사용가능한 모듈 정보를 출력

: -r

 > 모듈 제거. 의존성이 있는 모듈들을 찾아서 사용되지 않는다면 자동으로 제거

: -c

 > 모듈 관련 환경 설정 파일의 내용 전부 출력

 

 

 

 

 

modinfo

: 모듈 파일에 대한 정보 출력

 

- 형식

: modinfo [option] <module file>

 

- 주요 옵션

: -k (--kernel)

 > 실행중이 아닌 커널에 대한 정보 출력

 

 

 

 

 

depmod

: 커널 모듈 간 의존성을 관리

: /lib/modules/<kernel version>/modules.dep 파일과 맵 파일을 생성

 

- 형식

: depmod [option] [file]

 

- 주요 옵션

: -a (--all)

 > modules.dep과 맵 파일을 새롭게 생성

: -A (--quick)

 > 새롭게 추가된 모듈이 있는 경우에 갱신

 

 

 

 

 

모듈 관리 관련 파일

- /etc/modprobe.d & /lib/modprobe.d

- /lib/modules/<kernel version>/modules.dep

 

 

 

 

 

/etc/modprobe.d & /lib/modprobe.d

: 부팅 시 특정 모듈을 커널에 적재하기 위해 등록하는 .conf 파일이 위치한 디렉터리

 

- 주요 항목

: <module>-alias.conf

 > 특정 모듈에 별칭 부여

: <module>-options.conf

 > 특정 모듈에 특정한 값 전달

: <module>-install.conf

 > 모듈을 적재할 때 실행할 특정 명령 지정

: <module>-remove.conf

 > 특정 모듈 제거 시 여러 상황을 지정

: <module>-blacklisk.conf

 > 특정 모듈 사용 제한

 

 

 

 

 

/lib/modules/<kernel version>/modules.dep

: 모듈 간의 의존성을 기록한 파일

: 모듈 파일명이 기록되고, 콜론(:) 이후에 의존성 있는 모듈 파일명이 차례로 나열됨

: 모듈간의 의존성이 변경되면 해당 파일이 변경되어야 modprobe 명령이 정상적으로 동작됨

: depmod 명령어로 갱신

 

 

 

 

 

커널 컴파일

: 커널 소스를 다운로드 받아 시스템에 최적화된 커널로 업데이트 하는 과정

: 불필요한 항목들을 제거하고 안정성과 성능향상을 꾀할 수 있음

: C 컴파일러인 gcc와 관련 라이브러리(ncurses, ncurses-devel 등), 링커, make 유틸리티 등의 개발도구가 필요

: /usr/src/kernels 디렉터리에 다운로드 후 컴파일 수행

 

- 커널 컴파일 과정

1) 커널 소스 압축 해제

 

2) 커널 소스의 설정 값 초기화

: make mrproper

 

3) 커널 컴파일 옵션 설정

: make menuconfig

 

4) 커널 이미지 파일 생성

: make bzimage

 > 커널 이미지를 bzip2로 압축하여 생성

 

5) 커널 모듈 생성을 위한 컴파일

: make modules

 > 커널 옵션 설정 시 m으로 선택한 항목들을 모듈로 생성

 

6) 커널 모듈 설치

: make modules_install

 > /lib/modules/<kernel version>에 모듈 설치

 

7) 커널 모듈 파일 복사 및 grub.conf 파일 수정

: make install

 

8) 재부팅 

 

 

 

 

 

Cleaning Target

: 커널 컴파일 전 기존에 설정된 값을 제거하는 과정

 

- make mrproper

: configure 작업을 통해 생성된 오브젝트 파일 뿐만아니라 config 및 백업 파일 등도 제거

 

- make distclean

: mrproper 작업과 더불어 편집된 백업 및 패치 파일도 제거

 

 

 

 

 

주요 커널 컴파일 도구

- make config

: 텍스트 기반 설정 도구로 터미널 환경에서 y(yes), m(module), n(no)로 설정

: yes = 커널에 포함

: module = 모듈로 생성

: no = 선택하지 않음

 

- make manuconfig

: 가장 보편적인 도구

: 텍스트 기반의 컬러메뉴 제공. 커서를 이용한 이동 가능

 

- make nconfig

: 텍스트 기반의 컬러메뉴 제공. 커서와 F1 ~ F9 까지의 기능키 제공

 

- make xconfig

: X윈도 Qt 기반의 설정 도구

 

- make gconfig

: X윈도 Gtk+ 기반의 설정 도구

 

 

 

 

 

Refference

 

리눅스마스터 1급 2차 실기 정복하기 | 정성재 - 교보문고

리눅스마스터 1급 2차 실기 정복하기 | 출제 경향을 반영하여 핵심 내용만 요약 정리 시험대비를 위한 최신 기출문제를 해설과 함께 수록본 교재는 독자들이 최근 출간 요구가 많았던 리눅스마

product.kyobobook.co.kr

 

300x250
728x90