lsmod 와 modinfo 를 이용한 커널 모듈 목록 확인 및 조사
이 단계에서는 현재 로드된 커널 모듈의 목록을 확인하고 상세 정보를 조사하는 방법을 배웁니다. Linux 커널은 모듈식 구조로 설계되어 있어, 필요에 따라 기능의 일부를 로드하거나 제거할 수 있습니다. 이렇게 동적으로 로드 가능한 부분을 커널 모듈이라고 하며, 주로 장치 드라이버, 파일 시스템 드라이버 또는 시스템 호출과 관련이 있습니다.
먼저 시스템 커널에 현재 로드되어 있는 모든 커널 모듈의 상태를 확인해 보겠습니다. lsmod 명령어를 사용하면 깔끔하고 읽기 쉬운 목록을 볼 수 있습니다. 목록이 길어질 수 있으므로 less 유틸리티로 출력을 전달하여 편리하게 탐색하겠습니다.
터미널에서 다음 명령어를 실행하세요:
lsmod | less
모듈 목록이 나타납니다. 출력 결과는 Module, Size, Used by 세 개의 열로 구성됩니다.
- Module: 커널 모듈의 이름입니다.
- Size: 모듈의 크기 (바이트 단위) 입니다.
- Used by: 현재 이 모듈을 사용 중인 다른 모듈이나 프로세스의 수이며, 그 뒤에 해당 모듈에 의존하는 모듈 목록이 표시됩니다.
출력 결과는 다음과 유사한 형태일 것입니다:
Module Size Used by
nls_iso8859_1 16384 1
nls_cp437 20480 1
vfat 20480 1
fat 69632 1 vfat
...
화살표 키를 사용하여 목록을 스크롤할 수 있습니다. q를 누르면 less 뷰어를 종료하고 명령 프롬프트로 돌아갑니다.
이제 모듈 목록을 확인하는 방법을 알았으니, 특정 모듈에 대한 자세한 정보를 얻어보겠습니다. modinfo 명령어는 커널 모듈의 파일 경로, 라이선스, 설명, 작성자 및 의존성과 같은 다양한 세부 정보를 표시합니다.
병렬 포트와 관련된 parport 모듈을 조사해 보겠습니다.
modinfo parport
명령어를 실행하면 parport 모듈에 대한 상세 정보가 표시됩니다.
filename: /lib/modules/x.x.x-xx-generic/kernel/drivers/parport/parport.ko
license: GPL
description: Parallel port driver
author: Philip Blundell, Tim Waugh, Grant Grundler
srcversion: <some_version_string>
depends:
retpoline: Y
intree: Y
vermagic: x.x.x-xx-generic SMP mod_unload
sig_id: ...
signer: ...
sig_key: ...
sig_hashalgo: ...
signature: ...
이 출력 결과는 모듈 파일 (.ko 파일) 의 정확한 위치, 라이선스, 간략한 설명 등을 알려줍니다. depends 필드가 비어 있는 것을 확인할 수 있는데, 이는 이 모듈이 다른 모듈에 의존하지 않음을 의미합니다.
모듈은 종종 다른 모듈에 의존하기도 합니다. depmod 명령어는 /lib/modules/$(uname -r) 디렉토리의 모듈을 분석하여 모듈 의존성 목록을 생성합니다. 이를 통해 시스템은 필요한 모듈을 자동으로 로드할 수 있습니다. 이 의존성 파일을 생성해 보겠습니다. 이 명령어는 루트 권한이 필요하므로 sudo를 사용합니다.
sudo depmod
이 명령어는 성공적으로 완료되면 보통 아무런 출력도 내보내지 않습니다. 커널의 모듈 디렉토리에 modules.dep라는 파일을 생성하거나 업데이트합니다. 경로의 $(uname -r) 부분은 현재 커널의 릴리스 버전을 삽입하는 명령어 치환 방식입니다.
이제 방금 생성한 의존성 파일을 확인해 보겠습니다.
less /lib/modules/$(uname -r)/modules.dep
이 파일에는 모듈과 그 의존성 목록이 포함되어 있으며, 모듈을 자동으로 관리하는 도구들이 이 파일을 참조합니다. q를 눌러 less를 종료할 수 있습니다.