Linuxmaster 1 - 모듈(Module)

2022. 5. 14. 23:47리눅스마스터1급 - 실기

리눅스 마스터 1급 필기 준비 시에 다뤘던 내용입니다. 장치 관리 - 모듈 (tistory.com)

리눅스 시스템 장치를 제어하는 커널은 하나의 덩어리 형태로 구성되며 시스템의 모든 하드웨어를 관리하지만 새로운 장치가 추가될 시 커널을 새로 만들어야 하는 모놀리식 방식으로 구성되어 있습니다. 이러한 단점을 보완하기 위해 모듈을 사용합니다.

커널 모듈은 필요할 때는 포함되었다가 필요 없을 때는 빠져나와 모듈 형태로 존재하기 때문에 시스템의 메모리를 줄일 수 있다는 장점이 있습니다.

 

리눅스 커널 모듈은 *.ko 형태로 생성되며 /lib/modules/커널버전/kernel 디렉터리 안에 생성 되어 있습니다.

 

 

모듈 관련 명령어

1. lsmod

리눅스 커널에 로드된 모듈들에 대한 정보를 출력합니다.

'모듈명' '크기' '다른 모듈에서 사용 중인 수' '사용중인 모듈' 순으로 출력됩니다.

 

 

2. insmod

커널에 모듈을 로드시키는 명령입니다. 모듈 위치까지 이동 해야 적재 시킬 수 있습니다.

* 의존성이 있는 모듈은 적재 시킬 수 없습니다.

 

 

 

3. rmmod

로드되어 있는 모듈을 제거하는 명령입니다. 

 

 

다른 모듈에 의해 사용중인 모듈은 제거 할 수 없습니다.

 

 

4. modprobe

리눅스 커널에 모듈을 로드하거나 제거 할 수 있는 명령입니다.

이 명령어는 insmod와 rmmod와는 달리 다른 모듈에 의존되어 있는 경우에도 사용 할 수 있습니다.

이 명령어는 최상위 모듈 디렉터리에 존재하는 modules.dep 파일을 참고해 모듈간의 의존성을 해결하기 때문입니다.

필요한 의존성이 있는 모듈들을 자동으로 함께 적재 시켜줍니다. 또한 기호=값 형식으로 모듈에 매개변수를 전달 할 수 있습니다.

 

옵션

4.1. l : 사용 가능한 모듈 정보를 출력합니다.

* 현재 이 옵션은 사용 할 수 없는 것으로 알고 있습니다. 버전이 업데이트되어서 사라진건지는 잘 모르겠습니다. 혹시 아시는 분들은 댓글 부탁드립니다.

 

 

4.2. r : 모듈을 제거 합니다.

 

 

insmod로 적재한 모듈을 modprobe로 제거 못했습니다. 또한 반대로 modprobe로 적재하는 방법 또한 insmod와 같은 방식으로는 못하는 것 같습니다. 혹시 방법을 아시는 분 계시면 댓글로 알려주시길 바랍니다.

 

다만 문제에서 특정 모듈을 modprobe로 제거 혹은 적재하라고 하면 다음과 같이 쓰시면 될 거 같습니다.

적재 : modprobe 모듈명

삭제 : modprobe -r 모듈명

 

4.3. c : 모듈 관련 환경 설정 파일의 내용을 전부 출력합니다.

 

 

5. modinfo

모듈에 대한 정보를 출력해줍니다.

 

 

6. 모듈 관련 설정 파일

CentOS 7 부터는 /etc/modprobe.d 와 /lib/modprobe.d 디렉터리 안에 .conf로 끝나는 모든 파일을 설정 파일로 인식합니다.

 

 

7. 모듈 의존성 파일

모듈 간의 의존성을 기록한 파일인 modules.dep 파일은 /lib/modules/커널버전 디렉터리 내부에 존재합니다.

 

 

이 파일에는 모듈 파일명 : 의존성 있는 모듈 파일명 순으로 저장되어 있습니다.

 

 

모듈 간의 의존성이 바뀌면 이 파일의 내용 또한 변경되어야 modprobe 명령을 정상적으로 사용 할 수 있습니다. 이 파일을 갱신하고 관리해주는 명령이 depmod입니다.