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
'IT 이야기 > Linux 명령어' 카테고리의 다른 글
[RHEL6] 터미널 명령어 1탄(chvt, clear, deallocvt, dircolors) (0) | 2020.03.25 |
---|---|
[RHEL6] 커널 명령어 2탄(modprobe, rmmod, sysctl, update_drv) (0) | 2020.03.24 |
[RHEL6] 일반 명령어 6탄(sync, touch, xargs, zdump) (0) | 2020.03.24 |
[RHEL6] 일반 명령어 5탄(readonly, rm, rmdir, sudo) (0) | 2020.03.24 |
[RHEL6] 일반 명령어 4탄(mv, printf, pd, readlink) (0) | 2020.03.23 |
댓글