728x90
lsmod
- 리눅스 커널에 적재된 모듈 정보를 출력하는 명령
- 다음의 정보를 순서대로 출력
- 모듈명
- 크기
- 다른 모듈에서 사용 중인 수
- 사용 중인 모듈
사용법
lsmod
insmod
- 커널에 모듈을 적재하는 명령
- 해당 모듈은 자동으로 검색되고 삽입된다.
- 이 명령을 사용하기 위해서는 해당 모듈 파일이 존재하는 디렉터리까지 이동해야 한다.
- 의존성이 있는 모듈인 경우에는 적재할 수 없다.
사용법
# insmod 모듈파일명
사용 예
예
- ip_tables.ko 모듈을 커널에 적재함.
# insmod ip_tables.ko
rmmod
- 커널에서 모듈을 제거하는 명령
- 다른 모듈에 의해 사용 중인 모듈은 제거할 수 없다.
사용법
# rmmod 모듈
사용 예
예
- ip6table_filter 모듈을 제거함.
# rmmod ip6table_filter
modprobe
- 리눅스 커널에 모듈을 적재하거나 제거하는 명령
- insmod나 rmmod 명령은 다른 모듈에 의존되어 있는 경우에는 사용 불가능하다.
- modprobe는 단일 모듈, 의존성이 있는 여러 모듈, 특정 디렉터리의 모든 모듈들을 적재할 수 있다.
- 만약 모듈이 다른 모듈에 의존하고 있을 경우, 필요한 모듈을 먼저 적재한다.
- 최상위 모듈 디렉터리에 존재하는 modules.dep 파일을 참고해 모듈간의 의존성을 해결한다.
- modprobe는 단일 모듈, 의존성이 있는 여러 모듈, 특정 디렉터리의 모든 모듈들을 적재할 수 있다.
- 모듈에 '기호=값' 형식을 이용하여 매개 변수를 전달할 수 있다.
사용법
# modprobe [option] 모듈 [기호=값]
주요 옵션
옵션 | 설명 |
-l | 사용 가능한 모듈 정보 출력 |
-r | - 모듈을 제거할 때 사용하는 옵션 - 의존성이 있는 모듈을 찾아서 사용되지 않는다면 자동으로 제거함. |
-c | 모듈 관련 환경 설정 파일의 내용을 전부 출력 |
사용 예
예 1
- 사용 가능한 모듈 정보 출력
# modprobe -l
예 2
- ip6table_filter 라는 모듈을 제거하면서, 관련 모듈(ip6_tables)도 같이 제거함.
# modprobe -r ip6table_filter
예 3
- ip6table_filter 라는 모듈을 적재하면서, 의존 모듈(ip6_tables)도 같이 적재함.
# modprobe ip6table_filter
modinfo
- 모듈 파일에 대한 정보를 출력하는 명령
사용법
modinfo [option] 모듈파일명
사용 예
예
- 3c59x.ko 모듈에 대한 정보 출력
$ modinfo 3c59x.ko
depmod
- 커널 모듈 간의 의존성을 관리하는 명령
- /lib/modules/커널버전/modules.dep 파일과 맵 파일을 생성한다.
사용법
# depmod [option] [파일명]
주요 옵션
옵션 | 설명 |
-a | - modules.dep와 맵 파일을 새롭게 생성함. - (--all) |
-A | - 새롭게 추가된 모듈이 있는 경우에만 갱신함. - (--quick) |
-h | - 명령어의 사용법을 화면에 출력함. - (--help) |
사용 예
예 1
- modules.dep 파일의 정보를 갱신함.
# depmod
예 2
- modules.dep 파일과 같은 디렉터리 내에 있는 맵 파일들을 새롭게 갱신함.
# depmod -a
(참고) 모듈의 개요
더보기
- 모듈의 사전적 의미
- 프로그램이나 하드웨어 기능 단위
- 교환 가능한 구성 부분
- 우주선의 일부를 이루지만 독립적으로 행동할 수 있는 작은 소선
- 리눅스에서의 모듈은 우주선의 경우와 비슷함.
- 우주선의 모체 : 커널 이미지
- 작은 소선 : 커널 모듈
- 모듈을 사용하면 시스템 메모리를 절약할 수 있음.
- 커널 모듈이 필요할 때
- 커널 이미지에 합류
- 커널 모듈이 필요하지 않은 경우
- 커널에서 빠져 나와 모듈 형태로 존재
- 커널 모듈이 필요할 때
- 보통 모듈이 로드되었다는 것은 커널 밖에 존재하던 해당 드라이버가 커널의 일부로 되었다는 것을 의미함.
- 언로드하면 다시 커널과 별도로 존재함.
(참고) 모듈 관리
더보기
- 리눅스 시스템에서 시스템 장치를 제어하는 코드는 컴파일되어 커널에 포함될 수 있음.
- 기본적으로 커널은 모놀리식(Monolithic) 방식으로 구성됨.
- 모놀리식(Monolithic)
- 시스템 장치를 제어하는 기능을 내장하고, 하나의 덩어리 형태로 구성되는 방식
- 모놀리식(Monolithic)
- 커널이 시스템의 모든 하드웨어를 관리하지만, 융통성이 뛰어나지 못해 시스템에 새로운 장치가 추가될 경우 커널을 새롭게 만들어야 할 필요가 있음.
- 이러한 문제점을 해결하기 위해 모듈(Module)이 사용됨.
- 리눅스 커널 모듈
- C 컴파일러 로 만들어진 오브젝트 파일
- *.ko 형태로 생성됨.
- 각 시스템에서 가능한 모듈은 /lib/modules/커널버전/kernel 디렉터리 안에 생성되어 있음.
# ls /lib/modules/3.10.0-1160.el7.x86_64/
build modules.builtin modules.modesetting source extra modules.builtin.bin modules.networking updates kernel modules.dep modules.order vdso modules.alias modules.dep.bin modules.softdep weak-updates modules.alias.bin modules.devname modules.symbols modules.block modules.drm modules.symbols.bin
# ls /lib/modules/3.10.0-1160.el7.x86_64/kernel/
arch crypto drivers fs kernel lib mm net sound virt
# ls /lib/modules/3.10.0-1160.el7.x86_64/kernel/drivers/acpi
acpi_extlog.ko.xz acpi_pad.ko.xz custom_method.ko.xz nfit sbshc.ko.xz acpi_ipmi.ko.xz apei ec_sys.ko.xz sbs.ko.xz video.ko.xz
(참고) 모듈 관련 설정 파일
더보기
- 부팅 시 특정 모듈을 커널에 적재할 경우
- 리눅스 커널 2.4 버전
- /etc/modprobe.conf 파일에 등록해서 사용했음.
- 리눅스 커널 2.6 버전부터
- /etc/modprobe.d 디렉터리 안에 .conf로 끝나는 모든 파일을 인식함.
- 리눅스 커널 2.4 버전
- CentOS 7 버전부터는 /etc/modprobe.d 및 /lib/modprobe.d 디렉터리 내의 *.conf 파일 내용을 인식함.
# ls /etc/modprobe.d
dccp-blacklist.conf lockd.conf nvdimm-security.conf tuned.conf firewalld-sysctls.conf mlx4.conf truescale.conf
주요 항목
- alias : 특정 모듈에 별칭을 부여할 때 사용
- options : 특정 모듈에 특정한 값을 전달할 때 사용
- install
- 모듈을 적재할 때, 특정 명령을 지정할 경우에 사용
- 보통 첫 번째 모듈 적재 명령이 실패할 경우를 대비해서 두 번째 명령도 같이 지정할 때 사용
- remove : 특정 모듈을 제거할 때 여러 상황을 지정하여 사용
- blacklist : 특정 모듈을 제한할 때 사용
(참고) 모듈 의존성 파일 : modules.dep
더보기
- 모듈 간의 의존성 을 기록한 파일
- /lib/modules/커널버전 디렉터리 안에 위치함.
- 이 파일에는 다음이 기록됨.
- 모듈 파일명
- 콜론(:) 이후에 의존성 있는 모듈 파일명이 차례로 나열됨.
- 모듈 간의 의존성이 변경되면, modules.dep 파일의 내용이 변경되어야 modprobe 명령이 정상적으로 동작함.
- 이 파일을 갱신하고 관리해 주는 명령 : depmod
# cat modules.dep | more
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko.xz: kernel/arch/x86/crypto/ablk_helper.ko.xz: kernel/crypto/cryptd.ko.xz kernel/arch/x86/crypto/glue_helper.ko.xz: kernel/arch/x86/crypto/camellia-x86_64.ko.xz: kernel/crypto/xts.ko.xz kernel/cry pto/lrw.ko.xz kernel/crypto/gf128mul.ko.xz kernel/arch/x86/crypto/glue_helper.ko .xz kernel/arch/x86/crypto/blowfish-x86_64.ko.xz: kernel/crypto/blowfish_common.ko.x z kernel/arch/x86/crypto/twofish-x86_64.ko.xz: kernel/crypto/twofish_common.ko.xz kernel/arch/x86/crypto/twofish-x86_64-3way.ko.xz: kernel/arch/x86/crypto/twofish -x86_64.ko.xz kernel/crypto/twofish_common.ko.xz kernel/crypto/xts.ko.xz kernel/ crypto/lrw.ko.xz kernel/crypto/gf128mul.ko.xz kernel/arch/x86/crypto/glue_helper .ko.xz kernel/arch/x86/crypto/salsa20-x86_64.ko.xz: kernel/arch/x86/crypto/serpent-sse2-x86_64.ko.xz: kernel/crypto/xts.ko.xz kernel /crypto/serpent_generic.ko.xz kernel/crypto/lrw.ko.xz kernel/crypto/gf128mul.ko. xz kernel/arch/x86/crypto/glue_helper.ko.xz kernel/arch/x86/crypto/ablk_helper.k o.xz kernel/crypto/cryptd.ko.xz kernel/arch/x86/crypto/aesni-intel.ko.xz: kernel/crypto/lrw.ko.xz kernel/crypto/ gf128mul.ko.xz kernel/arch/x86/crypto/glue_helper.ko.xz kernel/arch/x86/crypto/a blk_helper.ko.xz kernel/crypto/cryptd.ko.xz kernel/arch/x86/crypto/ghash-clmulni-intel.ko.xz: kernel/crypto/cryptd.ko.xz
728x90
'System Software > Linux' 카테고리의 다른 글
[리눅스 명령어] logrotate (0) | 2022.03.15 |
---|---|
[리눅스 명령어] 프린터(Printer) : lpadmin / lpr / lpq / lprm / lpc / lp / lpstat / cancel (0) | 2022.03.13 |
[리눅스 명령어] 디스크 확장 : fdisk, partprobe, reboot, mkfs.xfs (0) | 2022.03.13 |
[리눅스] 커널 컴파일(Kernel Compile) (0) | 2022.03.13 |
[리눅스 명령어] ldd (0) | 2022.03.13 |
[리눅스 명령어] ldconfig (0) | 2022.03.13 |
[리눅스 명령어] yum / yumdownloader (0) | 2022.03.13 |
[리눅스 명령어] rpm / rpmbuild (0) | 2022.03.13 |