본문 바로가기

리눅스/강의

[17. 모듈]

모듈 (Module)


설명

리눅스 커널은 컴파일 할 떄 시스템에서 기본적으로 사용하는 요소는 하나의 덩어리로 묶여

커널 파일을 만들며 , 자주 사용하지는 않지만 사용할 가능성이 있는 부분은 모듈로 만들어 사용한다.

리눅스에서 모듈은 우주선의 경우와 비슷하다.

우주선의 모체는 커널 이미지이고 , 소선이 커널 모듈이다.

커널 모듈이 필요 할 떄는 커널 이미지에 모듈이 합류하고 , 필요하지 않을 때에는 커널에서 빠져나와 

독립적인 모듈형태로 존재하므로 시스템의 메모리를 절약 할 수 있다.


관련 디렉터리 

/lib/modules/커널버전/kernel 디렉터리 하위에 시스템에서 사용 가능한 모듈이 생성되어 있다.

[root@localhost test]# ls  /lib/modules/2.6.32-431.el6.x86_64/kernel/

arch  crypto  drivers  fs  kernel  lib  mm  net  sound


시스템에서 사용가능한 모듈이 들어있는 디렉터리 경로


[root@localhost test]# ls -l /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/acpi/

합계 160

-rwxr--r--. 1 root root 36104 2013-11-22 13:18 acpi_pad.ko

drwxr-xr-x. 2 root root  4096 2017-10-17 21:05 apei

-rwxr--r--. 1 root root 23808 2013-11-22 13:18 power_meter.ko

-rwxr--r--. 1 root root 28184 2013-11-22 13:18 sbs.ko

-rwxr--r--. 1 root root 13232 2013-11-22 13:18 sbshc.ko

-rwxr--r--. 1 root root 50512 2013-11-22 13:18 video.ko


모듈의 확장자는 C 파일러로 만들어진 오브젝트 파일로서 .ko 형태로 생성된다. 

modules.dep (모듈 의존성 파일)
- 모듈 간의 의존성을 기록한 파일로 /lib/modules/커널버전 디렉터리에 위치한다.
- 해당 파일에는 모듈 파일명이 기록되고 , 클론(:) 이후에 의존성 있는 모듈 파일명이 차례로 나열된다.
- 모듈간의 의존성이 변경되면 modules.dep 파일의 내용이 변경되어야 modprobe 명령이 정상으로 작동됨.
- 파일을 갱신하고 관리해주는 명령어는 depmod 이다.

[root@localhost module]# ls /lib/modules/2.6.32-431.el6.i686/ | grep modules.dep
modules.dep

관련 명령어
lsmod
- 리눅스 커널에 적재된 모듈 정보를 출력하는 명령어.
- 모듈명 , 크기 , 다른모듈에서 사용 중인 수 , 사용 중인 모듈 순으로 출력한다.

[root@localhost test]# lsmod
Module                  Size    Used  by
nls_utf8                1455      1 
autofs4               26513      3 
8021q                 25349     0 
garp                    7152      1    8021q


insmod

- 커널에 모듈을 적재하는 명령으로 모듈을 자동으로 검색하고 삽입된다.

- 해당 모듈 파일이 존재하는 디렉터리로 이동해야 명령 수행이 가능하다.

- 의존성이 있는 모듈인 경우에는 적재할 수 없다.


insmod [모듈 파일명]

insmod ip_tables.ko


rmmod

- 커널에서 모듈을 제거하는 명령어.

- 다른 모듈에 의해 사용 중인 모듈은 제거할 수 없다. (다른 모듈부터 제거하고 해당 모듈을 제거 해야됨)


rmmod [모듈]

rmmod ip6table_filter


modprobe

- 커널에 모듈을 적재 하거나 제거하는 명령어.

- 다른 명령어와는 다르게 의존성이 있는 모듈이나 단일 모듈 등의 모든 모듈을 적재 및 삭제할 수 있다.

- 적재할 모듈이 다른 모듈에 의존하고 있는 경우 의존 된 모듈부터 적재한다.

- 최상위 모듈 디렉터리에 존재하는 mudules.dep 파일을 참조해 모듈간의 의존성을 해결한다.


modprobe [option] 모듈 [기호=값]


[option]


[root@localhost rds]# modprobe -l | head -3

kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko

kernel/arch/x86/kernel/cpu/cpufreq/powernow-k8.ko

kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko


사용 가능한 모듈 정보중 맨 위 3줄만 출력.


modinfo

- 모듈 파일에 대한 정보를 출력하는 명령어.


modinfo [option] 모듈 파일명 or 모듈


[root@localhost module]# modinfo ip_tables

filename:       /lib/modules/2.6.32-431.el6.i686/kernel/net/ipv4/netfilter/ip_tables.ko

description:    IPv4 packet filter

author:         Netfilter Core Team <coreteam@netfilter.org>

license:        GPL

srcversion:     DC18D42211BCD06DB350605

depends:        

vermagic:       2.6.32-431.el6.i686 SMP mod_unload modversions 686 


ip_tables 모듈에 대한 정보가 출력된다.

모듈 이름이 아닌 파일명으로도 확인이 가능하다. (예. /모듈파일 경로~/ip_tables.ko)


depmod

- 의존성을 검사 한뒤 modules.dep 파일을 갱신한다.

- kerneld , modprobe 명령어를 실행하기 전에 depmod -a를 먼저 사용해서 모듈파일을 갱신해야 한다.


depmod [option]


추가

커널 2.4 버전에서는 모듈을 부팅시 자동으로 로드되게 할려면 /etc/modprobe.conf 파일에 등록해서 사용한다.

커널 2.6 버전부터는 /etc/modprobe.d 디렉터리 안에 .conf 로 끝나는 모든 파일이 부팅시 자동 로드된다.

커널 2.6 버전에선 modprobe.conf 파일 자체가 사라짐.


[root@localhost module]# ls -l /etc/modprobe.d/

합계 32

-rw-r--r--. 1 root root   52 2016-10-22 02:54 anaconda.conf

-rw-r--r--. 1 root root  884 2013-11-23 23:26 blacklist.conf

-rw-r--r--. 1 root root  382 2013-06-20 21:24 dist-alsa.conf

-rw-r--r--. 1 root root  473 2013-06-20 21:24 dist-oss.conf

-rw-r--r--. 1 root root 5596 2013-06-20 21:24 dist.conf

-rw-r--r--. 1 root root   30 2009-10-10 12:38 openfwwf.conf

-rw-r--r--. 1 root root  139 2016-10-24 12:54 vmware-tools.conf


'리눅스 > 강의' 카테고리의 다른 글

[19. 하드디스크 간단정리]  (0) 2017.11.09
[18. 커널]  (0) 2017.11.09
[16. RPM]  (0) 2017.11.08
[15. 프로세스]  (0) 2017.11.05
[14. LVM]  (0) 2017.11.05