강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스 커널모듈의 의존성관계 재설정하는 depmod

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스 커널모듈의 의존성관계 재설정하는 depmod

 

 

 

 

 

“depmod”명령어는 “modules.dep”파일과 맵파일들을 생성하는 명령어이며, “modprobe”명령어와 함께 리눅스 커널모듈을 모든 사용자들(정확하게는 메모리에 존재하는 커널)이 사용할 수 있도록 하기 위한 명령어입니다.

 

 

 

 

 

depmod는 커널과 모듈간의 의존성 데이터베이스파일(modules.dep)을 생성하는 모듈관련 명령어입니다.

 

 

 

 , 커널과 커널모듈사이의 의존성 관계를 유지하기 위하여 “/lib/modules/커널버전/”디렉토리 내에 modules.dep라는 파일을 생성하게 됩니다.

 

 

 

 

 

명령어위치 :  /sbin/depmod

 

사용형식  : depmod [-b basedir] [-e] [-F System.map] [-n] [-v] [version] [-A]

            depmod [-e] [-FSystem.map] [-n] [-v] [version] [filename...]

 

 

 

 

 

, 명령어는 커널컴파일의 과정에서 커널이미지 생성과 커널 모듈파일을 생성한 후에 (커널과 커널모듈) 의존성관계를 저장하고 있는 modules.dep라는 파일을 생성합니다.

 

 

 

 

 

 “/lib/modules/커널버전/”디렉토리에 보시면 modules.dep라는 파일이 존재하고 있습니다.

 

 

 

  직접 확인해 보시면 아시겠지만 파일은 해당 버전의 커널과 커널의 모듈간의 의존성정보를 저장하고 있는 텍스트형태의 데이터베이스 파일입니다.

 

 

 

 

다음의 “depmod -a”라는 명령어로 /lib/modules/2.6.1/modules.dep파일을 새로 생성해 준 것입니다.

 

 

 

 

[root@su250 4.6.27.5-117.fc10.i686]# cd /lib/modules/4.6.27.5-117.fc10.i686/
[root@su250 4.6.27.5-117.fc10.i686]#
[root@su250 4.6.27.5-117.fc10.i686]#
[root@su250 4.6.27.5-117.fc10.i686]#depmod -a
[root@su250 4.6.27.5-117.fc10.i686]#
[root@su250 4.6.27.5-117.fc10.i686]#ls -l
합계 2944

lrwxrwxrwx 1 root root     47 2010-12-0121:59 build -> ../../../usr/src/kernels/4.6.27.5-117.fc10.i686

drwxr-xr-x 2 root root   4096 2010-11-1902:30 extra

drwxr-xr-x 9 root root   4096 2010-12-0121:59 kernel

-rw-r--r-- 1 root root 424520 2010-12-0121:59 modules.alias

-rw-r--r-- 1 root root 365657 2010-12-0121:59 modules.alias.bin

-rw-r--r-- 1 root root   1571 2010-11-1902:30 modules.block

-rw-r--r-- 1 root root     69 2010-12-0121:59 modules.ccwmap

-rw-r--r-- 1 root root 344478 2010-12-0121:59 modules.dep

-rw-r--r-- 1 root root 443107 2010-12-0121:59 modules.dep.bin

-rw-r--r-- 1 root root    147 2010-12-0121:59 modules.ieee1394map

-rw-r--r-- 1 root root    375 2010-12-0121:59 modules.inputmap

-rw-r--r-- 1 root root  13391 2010-12-0121:59 modules.isapnpmap

-rw-r--r-- 1 root root     10 2010-11-1902:30 modules.modesetting

-rw-r--r-- 1 root root   1697 2010-11-1902:30 modules.networking

-rw-r--r-- 1 root root     74 2010-12-0121:59 modules.ofmap

-rw-r--r-- 1 root root  65921 2010-11-1902:30 modules.order

-rw-r--r-- 1 root root 289661 2010-12-0121:59 modules.pcimap

-rw-r--r-- 1 root root   1135 2010-12-0121:59 modules.seriomap

-rw-r--r-- 1 root root 144524 2010-12-0121:59 modules.symbols

-rw-r--r-- 1 root root 192435 2010-12-0121:59 modules.symbols.bin

-rw-r--r-- 1 root root 617761 2010-12-0121:59 modules.usbmap

lrwxrwxrwx 1 root root      5 2010-12-0121:59 source -> build

drwxr-xr-x 2 root root   4096 2010-11-1902:30 updates

drwxr-xr-x 2 root root   4096 2010-12-0121:59 vdso

drwxr-xr-x 2 root root   4096 2010-11-1902:30 weak-updates
[root@su250 4.6.27.5-117.fc10.i686]#

 

 

 

 

커널 컴파일과정에서 “depmod -a”를 실행해 주어야 하는 이유는 다음과 같습니다.

 

 

 

 리눅스 커널에는 하나 이상의 커널모듈이 존재합니다.

 

 

 

 (물론 모듈없이 모두 커널이미지에 넣을 수는 있지만 커널이미지가 너무 커지기 때문에 모듈파일을 사용하지 않을 수 없습니다.

 

 

 

) , 커널과 커널에서 사용할 커널모듈사이에는 의존성정보를 갖고 있는 정보파일이 필요합니다.

 

 

 

 그래야만 커널이 필요한 모듈을 정확하게 찾아서 메모리로 로드(load)하여 사용할 수 있기 때문입니다.

 

 

 

 

 

또한 리눅스가 부팅하는 과정에서 커널과 모듈간의 의존성정보가 정확하지 않다면 부팅시의 Finding modules dependance...단계에서 에러가 발생할 수 있습니다.

 

 

 

 , 모듈 의존성정보를 찾는 과정에서 발생하는 부팅에러가 발생할 수 있다는 것입니다.

 

 

 

 

 

, 리눅스 부팅과정에서 “Finding modules dependance...”에러가 발생한다면 싱글모드(linux single, 실행레벨1)로 들어가서 “depmod -a”를 실행하신 후에 정상 부팅하면 됩니다.

 

 

 

 

 

따라서 커널컴파일의 거의 마지막 단계에서 필수적으로 “depmod -a”를 실행하여 커널과 커널모듈사이의 의존성관계를 형성할 수 있도록 해주셔야 합니다.

 

 

 

 

 

참고로 -n옵션을 사용하여 “depmod -n”을 실행하시면 의존성파일의 내용을 직접 확인하실 수 있습니다.

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,040 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  162 명