모듈
: 리눅스 시스템의 일부를 이루지만, 독립적으로 존재할 수 있는 드라이버
: 커널 이미지에서 필요로 할 때 메모리에 로드되어 커널의 일부로 작동
: 드라이버가 필요 없어지면 언로드 되어 메모리를 절약
커널
: 시스템 자원을 소유하고 관리하는 도구
: 하드웨어 관리 및 스케줄링, 응용 프로그램의 하드웨어 자원에 대한 간접적 접근 지원
: 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
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 프린터 관리 (0) | 2022.10.10 |
---|---|
리눅스 디스크 용량 확장 (0) | 2022.10.10 |
리눅스 공유 라이브러리 관리 (0) | 2022.10.10 |
리눅스 파일 압축 (0) | 2022.10.10 |
리눅스 소스 파일 및 패키지 설치 (0) | 2022.10.10 |