Linux Kernel Module 관리란? lsmod, modprobe, insmod, rmmod 명령어 완벽 정리

Linux에서는 다양한 하드웨어와 기능을 지원하기 위해 Kernel Module(커널 모듈) 을 사용합니다. 대부분의 드라이버와 파일 시스템, 네트워크 기능은 Kernel Module 형태로 제공되며 필요할 때 메모리에 로드됩니다.

Kernel Module은 시스템을 재부팅하지 않고도 추가하거나 제거할 수 있어 매우 유용합니다. 하지만 모듈을 잘못 관리하면 장치가 정상적으로 동작하지 않거나 시스템이 불안정해질 수 있습니다.

이번 글에서는 Linux에서 Kernel Module을 관리하는 주요 명령어인 lsmod, modprobe, insmod, rmmod, modinfo, depmod의 사용법과 차이점을 자세히 알아보겠습니다.

Kernel Module 관리란?

Kernel Module 관리는 현재 로드된 모듈을 확인하고, 새로운 모듈을 추가하거나 필요 없는 모듈을 제거하는 작업을 의미합니다.

대표적인 작업은 다음과 같습니다.

  • 현재 로드된 Module 확인
  • Module 정보 조회
  • Module 로드
  • Module 제거
  • Module 의존성 관리
  • 자동 로드 설정

실무에서는 새로운 드라이버를 설치하거나 장애를 분석할 때 자주 수행합니다.

현재 로드된 Module 확인 – lsmod

현재 메모리에 로드된 Kernel Module을 확인하려면 lsmod 명령을 사용합니다.

lsmod

출력 예시

Module                  Size   Used by

kvm                    98304   1

nf_tables             327680   2

usb_storage            86016   1

각 항목의 의미는 다음과 같습니다.

  • Module : 모듈 이름
  • Size : 메모리 사용량
  • Used by : 다른 모듈에서 사용 중인 횟수

Module 상세 정보 확인 – modinfo

특정 모듈의 상세 정보를 확인하려면 modinfo를 사용합니다.

modinfo usb_storage

출력 예시

filename:

/lib/modules/.../usb_storage.ko

license:

GPL

description:

USB Mass Storage Driver

author:

Linux Kernel Developers

확인 가능한 정보

  • 파일 위치
  • 라이선스
  • 작성자
  • 설명
  • 지원 장치
  • Kernel 버전

Module 로드 – modprobe

가장 많이 사용하는 명령이 modprobe입니다.

sudo modprobe usb_storage

장점

  • 의존성 자동 해결
  • 필요한 Module 함께 로드
  • 권장 방식

예를 들어 USB Storage Module이 다른 Module을 필요로 하면 자동으로 함께 로드합니다.

Module 직접 로드 – insmod

insmod는 Module 파일을 직접 로드합니다.

sudo insmod usb_storage.ko

하지만 의존성을 자동으로 처리하지 않습니다.

따라서 필요한 Module이 없다면 오류가 발생할 수 있습니다.

실무에서는 대부분 modprobe를 사용하는 것이 좋습니다.

Module 제거 – rmmod

특정 Module을 제거할 때 사용합니다.

sudo rmmod usb_storage

현재 사용 중인 Module은 제거되지 않을 수 있습니다.

예를 들어 USB 저장장치를 사용 중이라면 다음과 같은 오류가 발생할 수 있습니다.

Module is in use

이 경우 먼저 해당 장치를 분리하거나 사용 중인 프로세스를 종료해야 합니다.

Module 제거 – modprobe -r

modprobe를 이용해 제거할 수도 있습니다.

sudo modprobe -r usb_storage

이 방식은 의존성까지 함께 처리하므로 rmmod보다 안전합니다.

Module 의존성 관리 – depmod

새로운 Module을 설치했다면 의존성 정보를 다시 생성해야 합니다.

sudo depmod

특정 Kernel 버전

sudo depmod 6.8.0-52-generic

이 명령은 /lib/modules 아래의 의존성 정보를 다시 생성합니다.

Kernel Module 파일 위치

Kernel Module은 다음 경로에 저장됩니다.

/lib/modules/$(uname -r)/

확인

ls /lib/modules/$(uname -r)

모듈 파일 확장자는 대부분 .ko입니다.

예를 들어

usb_storage.ko

kvm.ko

nf_tables.ko

와 같은 파일이 존재합니다.

modprobe와 insmod의 차이

항목modprobeinsmod
의존성 처리자동직접 처리
사용 편의성높음낮음
권장 여부권장특별한 경우만
파일 지정이름만 사용.ko 파일 직접 지정

실무에서는 대부분 modprobe를 사용합니다.

Module 자동 로드

부팅 시 특정 Module을 자동으로 로드하려면 다음 파일에 추가합니다.

/etc/modules

또는

/etc/modules-load.d/

예시

kvm

usb_storage

vfat

부팅 시 자동으로 해당 Module이 로드됩니다.

실무에서 자주 사용하는 명령어

현재 Module 확인

lsmod

Module 정보

modinfo 모듈명

Module 로드

sudo modprobe 모듈명

Module 제거

sudo modprobe -r 모듈명

의존성 생성

sudo depmod

Kernel 버전 확인

uname -r

자주 묻는 질문

modprobe와 insmod 중 어떤 것을 사용해야 하나요?

대부분의 경우 modprobe를 사용하는 것이 좋습니다. 의존성을 자동으로 처리하므로 오류가 적고 관리가 편리합니다.

사용 중인 Module을 제거할 수 있나요?

사용 중인 Module은 제거되지 않는 경우가 많습니다. 먼저 해당 장치나 서비스를 종료한 후 제거해야 합니다.

새로운 드라이버를 설치하면 depmod를 실행해야 하나요?

새로운 Kernel Module을 수동으로 추가했다면 depmod를 실행하여 의존성 정보를 갱신하는 것이 좋습니다.

마무리

Kernel Module 관리는 Linux 서버 운영에서 매우 중요한 관리 작업입니다. lsmod로 현재 모듈을 확인하고, modprobe를 이용해 안전하게 로드하거나 제거하며, modinfodepmod를 활용하면 모듈의 정보와 의존성까지 효과적으로 관리할 수 있습니다. 이러한 명령어를 익혀두면 드라이버 설치와 시스템 장애 대응 시 큰 도움이 됩니다.

댓글 남기기