Linux 에서 커널 모듈이 로드되었는지 확인하는 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 커널 모듈의 상태를 확인하는 방법을 배우게 됩니다. lsmod를 사용하여 현재 로드된 모듈을 나열하는 방법, modprobe --dry-run을 사용하여 실제로 로드하지 않고 모듈이 로드될 수 있는지와 종속성을 확인하는 방법, 그리고 modinfo를 사용하여 특정 모듈에 대한 자세한 정보를 보는 세 가지 필수적인 방법을 탐구할 것입니다. 이러한 기술은 시스템에서 어떤 커널 구성 요소가 활성화되어 있는지 이해하고 모듈 종속성을 관리하는 데 매우 중요합니다.

lsmod 로 로드된 모듈 목록 확인

이 단계에서는 lsmod 명령을 사용하여 현재 로드된 커널 모듈을 나열하는 방법을 배우게 됩니다.

Linux 커널은 운영 체제의 핵심입니다. 시스템의 리소스를 관리하고 하드웨어와 소프트웨어 간의 다리를 제공합니다. 커널 모듈은 필요에 따라 커널에 로드 및 언로드될 수 있는 코드 조각입니다. 시스템 재부팅 없이 커널의 기능을 확장합니다. 이는 새로운 하드웨어 또는 파일 시스템에 대한 지원을 추가하는 데 특히 유용합니다.

현재 커널에 로드된 모듈을 확인하려면 터미널을 열고 다음 명령을 입력하십시오.

lsmod

Enter 키를 누르십시오.

모듈 목록, 크기 및 다른 모듈이 얼마나 사용하고 있는지 확인할 수 있습니다. 출력은 다음과 유사하게 보일 것입니다 (정확한 목록은 시스템 및 로드된 드라이버에 따라 다릅니다).

Module                  Size  Used by
fuse                  143360  3
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            40960  1 snd_seq_midi
snd_seq                77824  3 snd_seq_midi,snd_seq_midi_event,snd_rawmidi
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
... (many more lines)

열을 자세히 살펴보겠습니다.

  • Module: 커널 모듈의 이름입니다.
  • Size: 바이트 단위의 모듈 크기입니다.
  • Used by: 현재 이 모듈을 사용하고 있는 다른 모듈의 수입니다. 이 숫자가 0 이면, 해당 모듈은 현재 다른 모듈에서 사용되지 않고 있습니다.

이 명령은 시스템에서 어떤 드라이버와 커널 구성 요소가 활성화되어 있는지 이해하는 데 필수적입니다.

이제 터미널에서 lsmod 명령을 실행해 보십시오.

다음 단계로 진행하려면 **계속 (Continue)**을 클릭하십시오.

modprobe --dry-run 으로 모듈 상태 확인

이 단계에서는 modprobe 명령을 --dry-run 옵션과 함께 사용하여 실제로 로드하지 않고 모듈이 로드될 수 있는지와 어떤 다른 모듈에 종속되는지 확인하는 방법을 배우게 됩니다.

modprobe 명령은 Linux 커널에서 모듈을 추가하거나 제거하는 데 사용됩니다. 이전의 insmodrmmod 명령보다 더 정교하며, 모듈 종속성을 이해합니다. modprobe로 모듈을 로드하려고 하면 요청된 모듈에 필요한 다른 모듈을 자동으로 로드합니다.

--dry-run 옵션은 테스트에 매우 유용합니다. modprobe에게 종속성을 해결하고 모듈을 로드할 수 있는지 확인하는 과정을 거치도록 지시하지만, 실제로 모듈을 커널에 로드하지는 않습니다. 이를 통해 실행 중인 시스템을 변경하기 전에 문제가 있는지 또는 누락된 종속성이 있는지 확인할 수 있습니다.

일반적인 모듈, 예를 들어 사용자 공간 파일 시스템에 자주 사용되는 fuse 모듈의 상태를 확인해 보겠습니다.

터미널에 다음 명령을 입력하십시오.

modprobe --dry-run fuse

Enter 키를 누르십시오.

fuse 모듈과 해당 종속성을 사용할 수 있는 경우 다음과 유사한 출력을 볼 수 있습니다.

modprobe: INFO: could not insert 'fuse': File exists

이 출력은 fuse 모듈이 이미 로드되었을 가능성이 높으며 (이전 lsmod 단계에서 확인), modprobe가 이미 존재하기 때문에 다시 삽입할 수 없다고 보고하고 있음을 나타냅니다. --dry-run 옵션은 모듈이 이미 로드된 경우에도 종속성 검사를 수행합니다.

모듈이 로드되지 않았고 로드될 수 있는 경우, 출력은 비어 있거나 로드될 모듈을 나타낼 수 있습니다. 문제가 있는 경우 modprobe가 여기에 보고합니다.

--dry-run을 사용하는 것은 시스템 상태에 영향을 주지 않고 모듈 로딩을 테스트하는 안전한 방법입니다.

이제 modprobe --dry-run fuse 명령을 직접 실행해 보십시오.

다음으로 이동하려면 **계속 (Continue)**을 클릭하십시오.

modinfo 로 모듈 상세 정보 확인

이 단계에서는 modinfo 명령을 사용하여 특정 커널 모듈에 대한 자세한 정보를 얻는 방법을 배우게 됩니다.

lsmod가 어떤 모듈이 로드되었는지 보여주는 반면, modinfo는 로드되었는지 여부에 관계없이 모듈 파일에 대한 훨씬 더 많은 세부 정보를 제공합니다. 이 정보에는 모듈의 작성자, 설명, 라이선스, 매개변수 및 종속성이 포함됩니다.

modinfo를 사용하여 다시 fuse 모듈을 검사해 보겠습니다.

터미널에 다음 명령을 입력하십시오.

modinfo fuse

Enter 키를 누르십시오.

다음과 유사한 fuse 모듈에 대한 포괄적인 출력을 볼 수 있습니다.

filename:       /lib/modules/5.15.0-113-generic/kernel/fs/fuse/fuse.ko
license:        GPL
description:    Filesystem in Userspace
author:         Miklos Szeredi <miklos@szeredi.hu>
alias:          devname:fuse
alias:          char-major-10-229
alias:          fs-fuse
depends:
retpoline:      Y
intree:         Y
name:           fuse
vermagic:       5.15.0-113-generic SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Ubuntu Kernel Module Signing Authority
sig_key:        ...
sig_hashalgo:   sha512
signature:      ...
parm:           max_user_bgreq:Maximum number of pending background requests (uint)
parm:           max_user_cong_req:Maximum number of pending congested background requests (uint)
parm:           max_user_inline_write:Maximum size of inline write data (uint)

몇 가지 주요 필드를 살펴보겠습니다.

  • filename: 파일 시스템의 모듈 파일 경로입니다.
  • license: 모듈이 배포되는 라이선스 (예: GPL).
  • description: 모듈이 수행하는 작업에 대한 간략한 설명입니다.
  • author: 모듈 작성자입니다.
  • depends: 이 모듈이 종속된 다른 모듈 목록입니다.
  • parm: 모듈의 동작을 수정하기 위해 로드될 때 모듈에 전달할 수 있는 매개변수에 대한 정보입니다.

modinfo는 모듈 관련 문제를 해결하거나 Linux 커널의 구성 요소에 대해 자세히 알아보는 데 매우 유용한 도구입니다.

이제 modinfo fuse 명령을 직접 실행하여 fuse 모듈의 세부 정보를 확인해 보십시오.

이 랩을 완료하려면 **계속 (Continue)**을 클릭하십시오.

요약

이 랩에서는 Linux 에서 커널 모듈의 상태를 확인하는 방법을 배웠습니다. 먼저 lsmod 명령을 사용하여 현재 로드된 모든 커널 모듈을 나열하고, 모듈 이름, 크기 및 사용 횟수를 보여주는 출력 열을 이해했습니다.

그런 다음 --dry-run 옵션과 함께 modprobe 명령을 사용하여 실제로 로드하지 않고 모듈 로드를 시뮬레이션하고 종속성을 식별했습니다. 마지막으로, modinfo 명령을 사용하여 설명, 작성자, 라이선스 및 매개변수를 포함하여 특정 커널 모듈에 대한 자세한 정보를 보는 방법을 배웠습니다. 이러한 명령은 Linux 시스템에서 커널 모듈을 관리하고 문제 해결하는 데 필수적인 도구입니다.