맨위로가기

Modprobe

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

`modprobe`는 리눅스 커널에 모듈을 추가, 삽입 또는 설치하는 데 사용되는 프로그램이다. insmod 및 rmmod보다 더 완전하고 다용도적인 기능을 제공하며, 모듈 의존성을 인식하고 재귀적으로 해결하며 모듈 별칭 정의, 모듈 로드/언로드 전후 프로그램 실행 등의 특징을 갖는다. 모듈 블랙리스트를 설정하여 특정 모듈의 로드를 막을 수도 있다.

더 읽어볼만한 페이지

  • 리눅스 커널 관련 소프트웨어 - Systemd
    systemd는 리눅스 운영 체제에서 시스템 및 서비스 관리를 담당하며 SysVinit을 대체하기 위해 설계되었지만, 중앙 집중형 설계 철학 등으로 인해 논란과 비판이 존재하고 대안도 등장했다.
  • 명령줄 소프트웨어 - 어드밴스트 패키징 툴
    어드밴스트 패키징 툴(APT)은 데비안 계열 리눅스 배포판에서 패키지를 관리하는 도구 모음으로, 패키지 설치, 삭제, 업데이트, 업그레이드 기능을 제공하며, 특히 패키지 간 의존성을 자동 관리하는 특징을 가진다.
  • 명령줄 소프트웨어 - FFmpeg
    FFmpeg은 오디오 및 비디오 데이터를 다루는 자유 소프트웨어 프로젝트로, 다양한 코덱과 형식을 지원하며 멀티미디어 응용 프로그램에 활용되고 2011년 Libav로 포크되기도 했으나 통합 과정을 거쳤다.
Modprobe
기본 정보
명령어modprobe
종류유닉스 명령어
사용모듈 추가 및 제거
설명
기능리눅스 커널 모듈을 추가하거나 제거하는 데 사용되는 명령어이다. 간단히 말해서, modprobe는 의존성과 싸우는 더 똑똑한 insmod이다.
위치/sbin/modprobe
사용법
모듈 추가modprobe [옵션] 모듈_이름 [모듈_매개변수]
모듈 제거modprobe -r 모듈_이름
예시
모듈 추가 (예시)modprobe mymodule
모듈 제거 (예시)modprobe -r mymodule
옵션
-r모듈을 제거한다.
-c 파일설정 파일을 지정한다.
-C셸 명령어를 실행한다.
-d 디렉터리모듈 디렉터리를 지정한다.
-f강제로 모듈을 로드하거나 제거한다.
-i모듈을 인터랙티브 모드로 로드한다.
-l모듈 목록을 보여준다.
-n실제로 모듈을 로드하거나 제거하지 않고, 명령을 보여준다.
-q조용히 실행한다.
-ssyslog에 메시지를 보낸다.
-t 디렉터리특정 디렉터리에 있는 모듈만 찾는다.
-v자세한 정보를 보여준다.
-V버전을 보여준다.

2. 동작

`modprobe` 프로그램은 기본적인 유틸리티인 `insmod`와 `rmmod`보다 더 완전하고 다양한 기능을 제공한다. 이는 모듈 로드 결정의 직관성, 모듈 의존성 인식 및 자동 해결 능력 등 여러 이점을 포함하며, 이는 하위 문단에서 더 자세히 다룬다.

기본적으로 `modprobe`는 별다른 옵션 없이 실행될 경우, 지정된 모듈을 커널에 추가하거나 삽입하여 설치하는 역할을 수행한다. 이러한 커널 변경 작업은 시스템에 영향을 미치므로 일반적으로 루트 권한이 필요하다.

`modprobe` 명령어 실행 시 모듈 이름 뒤에 오는 모든 인자(argument)는 커널로 직접 전달된다. 이는 설정 파일에 미리 정의된 옵션들과 함께 적용된다.

설정 파일의 위치나 이름은 `modprobe` 버전에 따라 다를 수 있다. 일부 버전에서는 `/etc/modprobe.conf` 파일을 사용하며, 다른 버전에서는 `/etc/modprobe.d/` 디렉토리 안에 `<모듈이름>` 형식의 여러 설정 파일을 사용하기도 한다.

`modprobe`는 시스템에 미리 정의된 표준 모듈 디렉토리 경로에서만 모듈을 검색한다. 따라서 현재 작업 디렉토리나 다른 임의의 경로에 있는 모듈 파일을 로드해야 할 경우에는 여전히 `insmod` 명령어가 필요할 수 있다. 또는 해당 모듈 파일에 대한 심볼릭 링크를 표준 모듈 디렉토리 내에 생성하면, `depmod` 유틸리티가 이를 인식하여 다른 설치된 모듈처럼 `modprobe`를 통해 로드할 수 있게 된다.

2. 1. 주요 이점

`modprobe` 프로그램은 더 기본적인 유틸리티들인 `insmod`와 `rmmod` 보다 더 다양한 기능을 제공하며, 다음과 같은 주요 이점을 가진다:

  • 어떤 모듈이 로드되어야 할지에 관해 더 직관적인 결정을 내릴 수 있는 능력을 제공한다.
  • 모듈 의존성을 인식하여, 특정 모듈의 로드를 요청받으면 먼저 요구되는 다른 모듈들을 자동으로 함께 로드한다.
  • 필요에 따라 재귀적인 모듈 의존성 문제를 해결한다.

2. 2. 동작 방식

`modprobe` 프로그램은 기본적인 유틸리티인 `insmod`와 `rmmod`보다 더 완전하고 다용도적인 특징을 갖는다. 주요 이점은 다음과 같다:

  • 어떤 모듈을 로드해야 할지 더 직관적으로 결정할 수 있는 능력[1]
  • 모듈 의존성을 인식하여, 모듈 로드를 요청받으면 `modprobe`가 먼저 필요한 다른 모듈을 추가함[1]
  • 필요에 따라 재귀적 모듈 의존성 해결[1]


기본적으로 `modprobe`는 별다른 옵션 없이 호출될 경우, 지정된 모듈을 커널에 추가/삽입/설치한다.[1] 일반적으로 이러한 변경에는 루트 권한이 필요하다.[1][2]

모듈 이름 뒤에 나타나는 모든 인수는 (설정 파일에 나열된 모든 옵션 외에도) 커널에 전달된다.[1][2]

설정 파일은 일부 버전의 `modprobe`에서는 `modprobe.conf`이며, 다른 버전에서는 `/etc/modprobe.d/` 디렉터리의 `<모듈이름>`이라는 파일 모음이 이에 해당한다.[1][2]

`modprobe`는 표준 모듈 디렉터리에서만 모듈을 검색한다.[1] 따라서 현재 작업 디렉터리에 있는 모듈을 설치하려면 `insmod`를 사용해야 한다.[1] 사용자는 모듈 파일에 대한 심볼릭 링크를 표준 경로에 만들 수도 있는데, 이렇게 하면 `depmod`가 다른 설치된 모듈처럼 해당 모듈을 찾아 로드할 수 있다.[1]

3. 특징

`modprobe` 프로그램은 다른 유사 유틸리티보다 더 많은 설정 기능을 제공한다. 모듈 별칭(alias)을 정의하여 특정 모듈의 자동 로딩을 가능하게 하며, 모듈을 로드하거나 언로드하기 전후에 지정된 외부 프로그램을 실행할 수 있다. 예를 들어, 사운드 카드 모듈 로딩 후 믹서를 설정하거나 장치 활성화 전 펌웨어를 업로드하는 작업을 자동화할 수 있다.

3. 1. 모듈 자동 로딩

''modprobe'' 프로그램은 다른 비슷한 유틸리티들보다 더 많은 설정 특징들을 갖는다. 모듈 별칭(alias)을 정의하여 일부 모듈의 자동 로딩을 지원한다. 커널이 모듈을 필요로 할 때, 실제로 ''modprobe''를 실행하여 모듈 로딩을 요청한다. 이때 커널은 장치 메이저 번호나 네트워크 프로토콜 번호와 같은 일부 모듈 속성에 대한 설명만 가지고 있으며, ''modprobe''는 이 정보를 이용해 별칭을 실제 모듈 이름으로 변환하는 작업을 수행한다.

또한, 특정 모듈을 로드하거나 언로드하기 전후에 다른 프로그램을 실행하는 기능도 제공한다. 예를 들어, 사운드 카드 모듈을 로드한 직후에 믹서를 자동으로 설정하거나, 장치를 활성화하기 직전에 펌웨어를 업로드하는 것이 가능하다. 이러한 작업 자체는 외부 프로그램으로 구현해야 하지만, ''modprobe''는 모듈 로딩 및 언로딩 시점과 동기화하여 해당 프로그램의 실행을 관리한다.

3. 2. 프로그램 실행

`modprobe`는 주어진 모듈을 로드하거나 언로드하기 전후에 특정 프로그램을 실행하는 기능을 갖추고 있다. 예를 들어, 사운드 카드 모듈을 로드한 직후에 믹서 설정을 하거나, 장치를 활성화하기 직전에 펌웨어를 업로드하는 작업 등이 가능하다. 이러한 작업 자체는 외부 프로그램에 의해 구현되어야 하지만, `modprobe`는 이 외부 프로그램의 실행 시점을 모듈 로드 또는 언로드 시점과 동기화하는 역할을 처리한다.

4. 블랙리스트

두 개 이상의 모듈이 동일한 장치를 지원하려고 하거나, 특정 모듈이 실제로는 지원하지 않는 장치를 지원한다고 잘못 인식되는 경우가 발생할 수 있다. 이러한 충돌이나 오류를 방지하기 위해 특정 모듈이 커널에 로드되지 않도록 막는 기능이 필요한데, 이를 블랙리스트라고 한다.[4][8]

`blacklist` 키워드는 특정 모듈과 관련된 모든 내부 별칭(alias)을 시스템이 무시하도록 지시하여, 해당 모듈이 자동으로 로드되는 것을 방지하는 데 사용된다.[4] 모듈을 블랙리스트하는 구체적인 설정 방법에는 여러 가지가 있으며, 이는 주로 `/etc/modprobe.d/` 디렉토리 내의 설정 파일을 통해 관리된다.

4. 1. 블랙리스트 방법

두 개 이상의 모듈이 동일한 장치를 지원하거나, 특정 모듈이 유효하지 않게 장치를 지원한다고 주장하는 경우가 있을 수 있다. 이때 `blacklist` 키워드를 사용하여 특정 모듈의 모든 내부 별칭(alias)을 무시하도록 설정할 수 있다.[4]

`modprobe`를 사용하여 모듈을 블랙리스트에 추가하는 방법에는 여러 가지가 있으며, 모듈 로드 방식에 따라 설정 위치가 달라질 수 있다. 주로 `modprobe.conf` 시스템을 활용하는 방법들이 사용된다.

첫 번째 방법은 `/etc/modprobe.d/` 디렉토리 안에 있는 설정 파일을 이용하는 것이다. 이 디렉토리 내에서 `.conf` 확장자를 가진 파일(예: `blacklist.conf`)에 `blacklist [모듈 이름]` 형식으로 내용을 추가하면 해당 모듈이 로드되지 않는다.

```text

# 예시: /etc/modprobe.d/blacklist.conf 파일 내용

blacklist ieee1394

blacklist ohci1394

blacklist eth1394

blacklist sbp2

```

두 번째 방법은 `install` 명령을 사용하는 것이다. 이 방법은 설정 파일 내에서 `blacklist` 키워드보다 높은 우선순위를 가진다. 따라서 `blacklist` 설정이 있어도 `install` 명령이 존재하면 해당 모듈에 대한 `install` 설정이 우선 적용된다. 특정 모듈의 로드를 막기 위해 `/bin/true` 또는 `/bin/false`를 실행하도록 설정할 수 있다. 예를 들어, `/etc/modprobe.d/[모듈 이름].conf` 파일에 다음과 같이 작성하면 해당 모듈들이 로드되는 대신 `/bin/true` 명령이 실행된다.

```text

# 예시: /etc/modprobe.d/ieee1394.conf 파일 내용

install ieee1394 /bin/true

install ohci1394 /bin/true

install eth1394 /bin/true

install sbp2 /bin/true

```

세 번째 방법은 `/etc/modprobe.conf` 파일을 직접 수정하여 모듈 로드를 제어하는 것이다. 예를 들어, 특정 모듈이나 하위 모듈에 대해 `alias [모듈 이름] /dev/null`과 같이 설정하여 로드를 막거나, `options [모듈 이름] [옵션]=0`과 같이 설정하여 특정 옵션을 비활성화할 수 있다.

```text

# 예시: /etc/modprobe.conf 파일 내용 수정

alias sub_module /dev/null

alias module_main /dev/null

options module_main needed_option=0

참조

[1] 웹사이트 kernel/kmod/kmod.git - kmod - module management https://git.kernel.o[...]
[2] 웹사이트 Index of /Pub/Linux/Utils/Kernel/Module-init-tools http://ftp.kernel.or[...] 2008-09-22
[3] 웹사이트 Index of /Pub/Linux/Utils/Kernel/Modutils http://ftp.kernel.or[...] 2008-09-22
[4] 문서 modprobe.conf(5) - Linux man page http://linux.die.net[...]
[5] URL http://git.kernel.or[...]
[6] 웹인용 보관된 사본 http://ftp.kernel.or[...] 2008-09-22
[7] 웹인용 보관된 사본 http://ftp.kernel.or[...] 2008-09-22
[8] 문서 modprobe.conf(5) - Linux man page http://linux.die.net[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com