[RHEL6] 커널 명령어 1탄(depmod, insmod, lsmod, modinfo)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 커널 명령어 1탄(depmod, insmod, lsmod, modinfo)

by 찬찬이 아빠 2020. 3. 24.
반응형
  1. depmod(modules.dep 파일)

 1) 경로 : /sbin/depmod

 2) 요약 : modules.dep와 맵 파일을 생성

 3) 사용 방법 : depmod [옵션] 모듈명

 4) 옵션

 -a, --all : /etc/modules.conf 에 있는 모든 모듈의 의존성을 생성

 -A, --quick : modules.dep 파일보다 새롭게 추가된 모듈이 있으면 이를 검색하여 출력

 -b, --basedir basedir : 모듈 이미지 디렉터리(basedir)를 지정

 -C, --config 파일 or 디렉터리 : 기본 설정 파일(/etc/depmod.conf)나 디렉터리(/etc/depmod.d/)를 지정한 파일이나 디렉터리로 변경

 -e, --errsym : -F  옵션과 조합으로 커널이나 모듈에서 제공하지 않는 모듈이 필요한 경우(심볼 에러일 때)를 출력

 -F, --fulesyms System.map : 현재 커널 심볼 파일 대신 지정한 System.map을 지정하고, -e 옵션과 함께 "unresolved symbols" 목록을 출력

 -h, --help : 사용법 출력

 -n, --dry-run : modules.dep와 map 파일 결과를 출력

 -v, --verbose : 상세한 정보를 출력

 -V, --version : 버전 정보 출력

 

 5) 추가 설명

depmod 명령어는 커널 모듈의 의존성을 다루는 명령어로 /lib/modules/커널버전/modules.dep 파일과 관련이 있습니다. 아래 예제와 같이 depmod -a 명령으로 modules.dep 파일과 맵 파일을 새롭게 생성합니다. 생성된 파일은 아래와 같습니다.

# depmod -a
# cat modules.dep
kernel/arch/x86/kernel/cpu/mcheck/mce-xeon75xx.ko:
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko:
kernel/arch/x86/kernel/cpu/cpufreq/e_powersaver.ko:
kernel/arhc/x86/kernel/cpu/cpufreq/p4-clockmod.kr:
kernel/arch/x86/kernel/msr.kr:
kernel/arch/x86/kernel/cpuid.ko:

 

그 중 modules.dep 파일은 /lib/modules/커널버전/ 디렉터리를 루트 디렉터리로 생각하고, 하위 커널 모듈 파일의 위치르르 정리해 놓은 파일입니다.

 

modprobe 멸영어는 depmod 명령어로 생성된 modules.dep 파일에서 해당 모듈의 위치를 파악하고 모듈을 메모리에 적재합니다. modinfo 명령어도 파일에서 해당 모듈의 위치를 파악하고 모듈의 정보를 출력합니다. 그러므로 개인이 개발한 드라이버를 해당 시스템에 설치할 경우는 depmod 명령어 사용을 권장합니다.

 

 

 

  2. insmod(커널 모듈 로딩)

 1) 경로 : /sbin/insmod

 2) 요약 : 메모리에 커널 모듈을 로딩

 3) 사용 방법 : insmod [옵션] 모듈파일 [symbol=value]

 4) 옵션

 -f : 커널 버전이 다르더라도 강제로 모듈을 로딩

 -h : 사용법 출력

 -k : 모듈을 자동으로 삭제할 수있게 함

 -L : 같은 모듈을 한 번 이상 로딩하지 못하게 함

 -m : 로드맵을 생성

 -n : 모듈을 로딩하지 않고 보여주기만 함

 -p : 모듈이 커널과 매치가 되는지 확인

 -s : 터미널 대신 syslog에 에러를 출력

 -v : 에러를 상세히 출력

 -V : 버전 정보 출력

 -o(오) NAME : 모듈 이름(NAME)을 설정

 -p prefix : 커널이나 모듈을 찾을 디렉터리를 지정

 

 5) 추가 설명

modprobe 명령어와 함께 insmod 명령어는 커널에 모듈을 적재할 때 사용합니다. 대부분은 사용하기 편리한 modprobe 명령어를 추천합니다. 시스템에서 로딩할 수 있는 모듈의 목록은 /lib/modules/커널 버전 디렉터리 아래에 kernel 디렉터리에서 확인할 수 있습니다. 참고로 uname -r 명령으로 현 시스템의 커널 버전을 확인할 수 있습니다.

 

아래의 명령으로 하위 디렉터리에서 .ko로 끝나는 모듈 파일들을 찾을 수 있습니다.

# cd /lib/modules/'uname -r'/kernel/
# ls
arch  crypto  drivers  fs  kernel  lib  mm  net  sound  virt

 

lsmod 명령어는 현재의 메모리에 로딩된 모듈들을 확인할 수 있습니다. ip_tables, 사운드, 이더넷 카드, ext3, usb 관련 모듈 등을 확인할 수 있습니다.

# lsmod
Module                  Size  Used by
xt_CHECKSUM            12549  1 
iptable_mangle         12695  1 
ipt_MASQUERADE         12678  3 
nf_nat_masquerade_ipv4    13430  1 ipt_MASQUERADE
iptable_nat            12875  1 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26583  2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack_ipv4      15053  2 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
xt_conntrack           12760  1 
nf_conntrack          139224  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
tun                    32026  1 
bridge                151336  0 
stp                    12976  1 bridge
llc                    14552  2 stp,bridge
ebtable_filter         12827  0 
ebtables               35009  1 ebtable_filter
ip6table_filter        12815  0 
ip6_tables             26912  1 ip6table_filter
devlink                60067  0 
iptable_filter         12810  1 
sunrpc                354099  1 
dm_mirror              22289  0 
dm_region_hash         20813  1 dm_mirror
dm_log                 18411  2 dm_region_hash,dm_mirror
dm_mod                124501  2 dm_log,dm_mirror
intel_powerclamp       14451  0 
iosf_mbi               15582  0 
crc32_pclmul           13133  0 
snd_intel8x0           38199  1 
ghash_clmulni_intel    13273  0 
snd_ac97_codec        130479  1 snd_intel8x0
ac97_bus               12730  1 snd_ac97_codec
aesni_intel           189456  0 
lrw                    13286  1 aesni_intel
gf128mul               15139  1 lrw
snd_seq                62571  0 
snd_seq_device         14356  1 snd_seq
glue_helper            13990  1 aesni_intel
ablk_helper            13597  1 aesni_intel
snd_pcm               105777  2 snd_ac97_codec,snd_intel8x0
cryptd                 21190  3 ghash_clmulni_intel,aesni_intel,ablk_helper
snd_timer              29912  2 snd_pcm,snd_seq
sg                     40721  0 
snd                    83941  8 snd_ac97_codec,snd_intel8x0,snd_timer,snd_pcm,snd_seq,snd_seq_device
soundcore              15047  1 snd
i2c_piix4              22401  0 
video                  24538  0 
ip_tables              27126  3 iptable_filter,iptable_mangle,iptable_nat
xfs                   993020  3 
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
sr_mod                 22416  0 
sd_mod                 46281  5 
cdrom                  42556  1 sr_mod
crc_t10dif             12912  1 sd_mod
crct10dif_generic      12647  0 
ata_generic            12923  0 
pata_acpi              13053  0 
vmwgfx                291993  1 
drm_kms_helper        186531  1 vmwgfx
syscopyarea            12529  1 drm_kms_helper
sysfillrect            12701  1 drm_kms_helper
sysimgblt              12640  1 drm_kms_helper
fb_sys_fops            12703  1 drm_kms_helper
ttm                    96673  1 vmwgfx
ahci                   34056  4 
drm                   456166  4 ttm,drm_kms_helper,vmwgfx
ata_piix               35052  0 
libahci                31992  1 ahci
libata                243133  5 ahci,pata_acpi,libahci,ata_generic,ata_piix
e1000                 137624  0 
crct10dif_pclmul       14307  1 
crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
crc32c_intel           22094  1 
serio_raw              13434  0 
drm_panel_orientation_quirks    17180  1 drm

 

위의 모듈 중 lp 모듈을 rmmod 명령어로 메모리에서 제거해 봅니다.

# rmmod lp

 

제거한 lp 모듈은 modprobe 명령이나 insmod 명령으로 다시 로딩할 수 있습니다.

# lnsmod /lib/modules/'uname -r'/kernel/drivers/char/lp.kr
또는
# modprobe lp
# lsmod | grep lp
lp			8964	0
parport		35340	3	lp,ppdev,parport_pc

 

이렇게 insmod, rmmod, lsmod 명령어로 자유롭게 모듈들을 관리할 수 있습니다.

 

 

 

  3. lsmod(로드된 모듈 보기)

 1) 경로 : /sbin/lsmod

 2) 요약 : 현재 동작하고 있는 모듈 출력

 3) 사용 방법 : lsmod

 4) 추가 설명

lsmod 명령어는 시스템에서 현재 동작하고 있는 모듈을 살펴볼 수 있습니다.

# lsmod
Module                  Size  Used by
xt_CHECKSUM            12549  1 
iptable_mangle         12695  1 
ipt_MASQUERADE         12678  3 
nf_nat_masquerade_ipv4    13430  1 ipt_MASQUERADE
iptable_nat            12875  1 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26583  2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack_ipv4      15053  2 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
xt_conntrack           12760  1 
nf_conntrack          139224  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
tun                    32026  1 
bridge                151336  0 
stp                    12976  1 bridge
llc                    14552  2 stp,bridge
ebtable_filter         12827  0 
ebtables               35009  1 ebtable_filter
ip6table_filter        12815  0 
ip6_tables             26912  1 ip6table_filter
devlink                60067  0 
iptable_filter         12810  1 
sunrpc                354099  1 
dm_mirror              22289  0 
dm_region_hash         20813  1 dm_mirror
dm_log                 18411  2 dm_region_hash,dm_mirror
dm_mod                124501  2 dm_log,dm_mirror
intel_powerclamp       14451  0 
iosf_mbi               15582  0 
crc32_pclmul           13133  0 
snd_intel8x0           38199  1 
ghash_clmulni_intel    13273  0 
snd_ac97_codec        130479  1 snd_intel8x0
ac97_bus               12730  1 snd_ac97_codec
aesni_intel           189456  0 
lrw                    13286  1 aesni_intel
gf128mul               15139  1 lrw
snd_seq                62571  0 
snd_seq_device         14356  1 snd_seq
glue_helper            13990  1 aesni_intel
ablk_helper            13597  1 aesni_intel
snd_pcm               105777  2 snd_ac97_codec,snd_intel8x0
cryptd                 21190  3 ghash_clmulni_intel,aesni_intel,ablk_helper
snd_timer              29912  2 snd_pcm,snd_seq
sg                     40721  0 
snd                    83941  8 snd_ac97_codec,snd_intel8x0,snd_timer,snd_pcm,snd_seq,snd_seq_device
soundcore              15047  1 snd
i2c_piix4              22401  0 
video                  24538  0 
ip_tables              27126  3 iptable_filter,iptable_mangle,iptable_nat
xfs                   993020  3 
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
sr_mod                 22416  0 
sd_mod                 46281  5 
cdrom                  42556  1 sr_mod
crc_t10dif             12912  1 sd_mod
crct10dif_generic      12647  0 
ata_generic            12923  0 
pata_acpi              13053  0 
vmwgfx                291993  1 
drm_kms_helper        186531  1 vmwgfx
syscopyarea            12529  1 drm_kms_helper
sysfillrect            12701  1 drm_kms_helper
sysimgblt              12640  1 drm_kms_helper
fb_sys_fops            12703  1 drm_kms_helper
ttm                    96673  1 vmwgfx
ahci                   34056  4 
drm                   456166  4 ttm,drm_kms_helper,vmwgfx
ata_piix               35052  0 
libahci                31992  1 ahci
libata                243133  5 ahci,pata_acpi,libahci,ata_generic,ata_piix
e1000                 137624  0 
crct10dif_pclmul       14307  1 
crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
crc32c_intel           22094  1 
serio_raw              13434  0 
drm_panel_orientation_quirks    17180  1 drm

 

 

 

  4. modinfo(모듈 정보 확인)

 1) 경로 : /sbin/modinfo

 2) 요약 : 커널 모듈의 정보를 출력

 3) 사용 방법 : modinfo [옵션] 모듈명 또는 모듈 파일

 4) 옵션

 -0(숫자영), --null : 각 정보릐 필드 구분을 띄어쓰기로 함. 기본적인 구분은 줄바꿈

 -F 필드명, --field 필드명 : 지정한 정보 필드명의 값만 출력. author, description, license, filename, parameters, depends 등의 필드명 중 하나를 쓰면 해당 정보만을 출력

 -k kernel : 지정한 커널에 설치된 모듈의 정보를 가져옴

 -V, --version : 버전 정보 출력

 -h, --help : 사용법 출력

 -a, --author : 개발자 정보 출력

 -d, --description : 모듈 설명 출력

 -l(엘), --license : 모듈의 라이선스 정보 출력

 -n, --filename : 모듈의 파일명과 경로 출력

 -p, --parameters : 모듈의 파리미터 정보 출력

 

 5) 추가 설명

modinfo는 시스템 관리 명령어로서 커널 모듈에 대한 상세한 정보를 보여줍니다. 이 정보는 모듈 파일 안의 태그 이름에서 읽어 모듈의 파일명, 경로, 개발자, 라이선스, 파라미터 정보를 출력합니다.

 

lsmod 명령으로 출력되는 커널에 등록된 모듈명은 짧은 약어로 되어 있습니다. 이 때문에 시스템에 설치된 모듈 목록을 한 눈에 알 수 있지만 어떤 모듈인지 알아 보기 힘든 때도 많습니다.

# lsmod
Module                  Size  Used by
xt_CHECKSUM            12549  1 
iptable_mangle         12695  1 
ipt_MASQUERADE         12678  3 
nf_nat_masquerade_ipv4    13430  1 ipt_MASQUERADE
iptable_nat            12875  1 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26583  2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack_ipv4      15053  2 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
xt_conntrack           12760  1 
nf_conntrack          139224  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
tun                    32026  1 
bridge                151336  0 
stp                    12976  1 bridge
llc                    14552  2 stp,bridge
ebtable_filter         12827  0 
ebtables               35009  1 ebtable_filter
ip6table_filter        12815  0 
ip6_tables             26912  1 ip6table_filter
devlink                60067  0 
iptable_filter         12810  1 
sunrpc                354099  1 
dm_mirror              22289  0 
dm_region_hash         20813  1 dm_mirror
dm_log                 18411  2 dm_region_hash,dm_mirror
dm_mod                124501  2 dm_log,dm_mirror
intel_powerclamp       14451  0 
iosf_mbi               15582  0 
crc32_pclmul           13133  0 
snd_intel8x0           38199  1 
ghash_clmulni_intel    13273  0 
snd_ac97_codec        130479  1 snd_intel8x0
ac97_bus               12730  1 snd_ac97_codec
aesni_intel           189456  0 
lrw                    13286  1 aesni_intel
gf128mul               15139  1 lrw
snd_seq                62571  0 
snd_seq_device         14356  1 snd_seq
glue_helper            13990  1 aesni_intel
ablk_helper            13597  1 aesni_intel
snd_pcm               105777  2 snd_ac97_codec,snd_intel8x0
cryptd                 21190  3 ghash_clmulni_intel,aesni_intel,ablk_helper
snd_timer              29912  2 snd_pcm,snd_seq
sg                     40721  0 
snd                    83941  8 snd_ac97_codec,snd_intel8x0,snd_timer,snd_pcm,snd_seq,snd_seq_device
soundcore              15047  1 snd
i2c_piix4              22401  0 
video                  24538  0 
ip_tables              27126  3 iptable_filter,iptable_mangle,iptable_nat
xfs                   993020  3 
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
sr_mod                 22416  0 
sd_mod                 46281  5 
cdrom                  42556  1 sr_mod
crc_t10dif             12912  1 sd_mod
crct10dif_generic      12647  0 
ata_generic            12923  0 
pata_acpi              13053  0 
vmwgfx                291993  1 
drm_kms_helper        186531  1 vmwgfx
syscopyarea            12529  1 drm_kms_helper
sysfillrect            12701  1 drm_kms_helper
sysimgblt              12640  1 drm_kms_helper
fb_sys_fops            12703  1 drm_kms_helper
ttm                    96673  1 vmwgfx
ahci                   34056  4 
drm                   456166  4 ttm,drm_kms_helper,vmwgfx
ata_piix               35052  0 
libahci                31992  1 ahci
libata                243133  5 ahci,pata_acpi,libahci,ata_generic,ata_piix
e1000                 137624  0 
crct10dif_pclmul       14307  1 
crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
crc32c_intel           22094  1 
serio_raw              13434  0 
drm_panel_orientation_quirks    17180  1 drm

 

위 모듈 목록 중 e100 ext3 모듈의 정보를 보기 위해 modinfo에 -F 옵션으로 모듈의 설명 필드 만을 확인해 봅니다.

# modinfo -F description e100
Intel(r) PRO/100 Network Driver

 

모듈이 설치된 경로와 파일명을 알 수 있으며 파일로부터 정보를 얻어 올 수 있습니다.

# modinfo -F filename e100
/lib/modules/2.6.9-42.7AXsmp/kernel/drivers/net/e100.ko

# modinfo /lib/modules/2.6.9-42.7AXsmp/kernel/drivers/net/e100.ko
fileneme: /lib/modules/2.6.9-42.7AXsmp/kernel/drivers/net/e100.ko
parm:			debug:Debug level (0=none,...,16=all)
version:		3.5.10-k2-NAPI 6481838CE42D9570A7D35AF
license:		GPL
author:			Copyright(c) 1999-2005 Intel Corporation
description:	Intel(r) PRO/100 Network Driver
depends:		mii
vermagic:		2.6.9-42.7AXsmp SMP gcc-3.4
반응형

댓글