centos 6.3에서 modprobe 사용방법

ndmnwg의 이미지

디바이스 드라이버 모듈을 부팅할때 자동으로 올라가게 하려고 modprobe를 알아보고 있는데

책이나 인터넷 자료에는 옛날 방법인 modprobe.conf를 이용해서 하는 방법만 나오네요

제가 알아본 결과 6.3 버전에서는 modprobe.d를 이용해서 하게끔 바꼇다고 하는데 방법을 잘 못찾겟네요

혹시 아시는분이 있으시면 간단한 예를 들어서 설명 좀 해주시면 감사하겟습니다.

addnull의 이미지

어떤 모듈을 올리시는지 모르겠습니다만,
/etc/modprobe.d/ 에 conf를 생성하시면 됩니다.

예를 들어, RTL8168B 라는 랜카드 모듈을 올리신다면,
/etc/modprobe.d/RTL8168B.conf 와 같은 비슷한 이름의 파일(단 .conf 확장자는 맞춰주시면)을 만드시고 모듈 추가 명령어를 써주시면 됩니다.
그리고 이미 이전 드라이버가 존재한다면, /etc/modprobe.d/blacklist.conf 에 명시해서 새 드라이버와 충돌나지 않게 해주시구요.

man modprobe.conf

설명에 의하면 아직까지는 /etc/modprobe.conf 파일도 존재할 경우에 해당 내용을 인식하지만, 곧 이 기능은 삭제될 거라고 하네요.
CentOS 6.3 버전에서 확인했습니다.

ndmnwg의 이미지

제가 만든 모듈을 올릴려고 하는데요

제가 만든 모듈이 module_a.c, module_b.c 이렇게 두개의 소스파일로 만들어서 my_module.ko로 컴파일을 했는데

그렇다면 /etc/modprobe.d/에 my_module.conf를 생성해서 alias my_mod my_module 이렇게 작성을 하면 되나요?

alias 말고 다른 명령(install, options)도 적어줘야 되나요?

그리고 제가 만든 모듈 컴파일된 .ko파일이 /home/user/workspace/my_module/ 디렉터리 아래에 있는데 경로도 따로 지정을 해줘야 되나요?

마지막으로 conf 파일을 다 작성하고 터미널에서 modprobe my_module라고 명령어 입력을 하면 되는건가요?

제가 처음 해보는거라서 질문이 많은데 알고 계신다면 알려주시면 감사하겠습니다. ㅠ

그리고 참고할 수 있는 사이트나 블로그, 책이 있으시면 좀 알려주세요 ㅠ

addnull의 이미지

사실 저도 직접적으로 conf 파일을 만들어서 등록하기보다.

modprobe [module name]

으로 등록을 합니다.
이렇게 하시면, /lib/modules/$(uname -r) 경로에 해당 ko 파일이 설치됩니다.

참고할 수 있는 사이트나 블로그는 따로 알고 있는 건 없습니다만... 저는 구글 검색을 합니다.
한가지 팁을 드리면 구글 검색창에서 특정 사이트만 검색하기 위해서

검색어 site:centos.org
검색어 site:stackoverflow.com

로 찾아보시면 대충 사람들이 어떤 명령어를 쓰는구나 파악하시고 man 페이지를 열어서 자세한 내용을 보시면 될 것 같습니다.

ndmnwg의 이미지

덕분에 modprobe는 해결했습니다.

정확한 방법인지는 모르겠지만 modprobe로 해결이 되니 된거겠죠 ㅋ;

제가 사용한 방법은

1. ~/workspace/ 디렉터리에 모듈 소스파일 module_a.c module_b.c를 작성

2. Makefile에 모듈 컴파일과 아래 코드 작성
install:
$(MAKE) -C $(KDIR) M=$(PWD) INSTALL_MOD_PATH=$(INSTALL_ROOT) modules_install

3. 모듈 컴파일(make)을 해서 module.ko 파일 생성 후 sudo make install을 수행

4. sudo modprobe module을 하면 모듈이 올라감

5. 모듈 소스를 수정하면 3번부터 다시 수행

저는 위에 방법을 사용하니 해결이 되었습니다.

문제는 부팅시 모듈이 자동으로 올라가게 해야 된다는건데..

검색을 해보니까 /etc/rc.d/rc.local 스크립트가 부팅시 한번 수행이 된다고 rc.local에

# Update kernel-module dependencies file
[ -x /sbin/depmod ] &

# Start kerneld
[ -x /sbin/kerneld ] &

추가를 하면 된다고 해서 제가 필요한 방향으로 수정을 해서

# Update kernel-module dependencies file
[ -x /sbin/depmod ] &

# Start Module modprobe
[ -x /sbin/modprobe ] &

이렇게 추가를 했는데 모듈이 자동으로 올라가진 않네요 ㅠ

혹시 부팅 때 모듈이 자동으로 올라가게 하는 방법은 아시나요?

addnull의 이미지

지금 제가 직접 모듈 추가/삭제 테스트해보진 않았지만,
제 기억으론 modprobe 또는 insmod 하면, 부팅시 올라오는 걸로 기억합니다.
혹시 다른 모듈이랑 충돌나는게 아닐까요?

예를 들면 r8168 모듈을 추가하셨는데 커널에 r8169 모듈도 등록되어있으면 제대로 동작하지 않더군요.
modprobe -r 또는 rmmod로 충돌날만한 다른 버전의 모듈을 제거하셨는지요?

이건 여담으로 insmod/rmmod 대신에 modprobe 을 쓰시는게 좋습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.