리눅스 커널모듈의 의존성관계 재설정하는 depmod
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,736 조회
- 0 추천
- 목록
본문
리눅스 커널모듈의 의존성관계 재설정하는 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/ lrwxrwxrwx 1 root root 47 2010-12-01 21:59 build -> ../../../usr/src/kernels/4.6.27.5-117.fc10.i686 drwxr-xr-x 2 root root 4096 2010-11-19 02:30 extra drwxr-xr-x 9 root root 4096 2010-12-01 21:59 kernel -rw-r--r-- 1 root root 424520 2010-12-01 21:59 modules.alias -rw-r--r-- 1 root root 365657 2010-12-01 21:59 modules.alias.bin -rw-r--r-- 1 root root 1571 2010-11-19 02:30 modules.block -rw-r--r-- 1 root root 69 2010-12-01 21:59 modules.ccwmap -rw-r--r-- 1 root root 344478 2010-12-01 21:59 modules.dep -rw-r--r-- 1 root root 443107 2010-12-01 21:59 modules.dep.bin -rw-r--r-- 1 root root 147 2010-12-01 21:59 modules.ieee1394map -rw-r--r-- 1 root root 375 2010-12-01 21:59 modules.inputmap -rw-r--r-- 1 root root 13391 2010-12-01 21:59 modules.isapnpmap -rw-r--r-- 1 root root 10 2010-11-19 02:30 modules.modesetting -rw-r--r-- 1 root root 1697 2010-11-19 02:30 modules.networking -rw-r--r-- 1 root root 74 2010-12-01 21:59 modules.ofmap -rw-r--r-- 1 root root 65921 2010-11-19 02:30 modules.order -rw-r--r-- 1 root root 289661 2010-12-01 21:59 modules.pcimap -rw-r--r-- 1 root root 1135 2010-12-01 21:59 modules.seriomap -rw-r--r-- 1 root root 144524 2010-12-01 21:59 modules.symbols -rw-r--r-- 1 root root 192435 2010-12-01 21:59 modules.symbols.bin -rw-r--r-- 1 root root 617761 2010-12-01 21:59 modules.usbmap lrwxrwxrwx 1 root root 5 2010-12-01 21:59 source -> build drwxr-xr-x 2 root root 4096 2010-11-19 02:30 updates drwxr-xr-x 2 root root 4096 2010-12-01 21:59 vdso drwxr-xr-x
2 root root 4096 2010-11-19 02:30 weak-updates |
커널 컴파일과정에서 “depmod -a”를 실행해 주어야 하는 이유는 다음과 같습니다.
리눅스 커널에는 하나 이상의 커널모듈이 존재합니다.
(물론 모듈없이 모두 커널이미지에 넣을 수는 있지만 커널이미지가 너무 커지기 때문에 모듈파일을 사용하지 않을 수 없습니다.
) 즉, 커널과 커널에서 사용할 커널모듈사이에는 의존성정보를 갖고 있는 정보파일이 필요합니다.
그래야만 커널이 필요한 모듈을 정확하게 찾아서 메모리로 로드(load)하여 사용할 수 있기 때문입니다.
또한 리눅스가 부팅하는 과정에서 커널과 모듈간의 의존성정보가 정확하지 않다면 부팅시의 “Finding modules dependance...”단계에서 에러가 발생할 수 있습니다.
즉, 모듈 의존성정보를 찾는 과정에서 발생하는 부팅에러가 발생할 수 있다는 것입니다.
즉, 리눅스 부팅과정에서 “Finding modules dependance...”에러가 발생한다면 싱글모드(linux single, 실행레벨1)로 들어가서 “depmod -a”를 실행하신 후에 정상 부팅하면 됩니다.
따라서 커널컴파일의 거의 마지막 단계에서 필수적으로 “depmod -a”를 실행하여 커널과 커널모듈사이의 의존성관계를 형성할 수 있도록 해주셔야 합니다.
참고로 -n옵션을 사용하여 “depmod -n”을 실행하시면 의존성파일의 내용을 직접 확인하실 수 있습니다.
관련자료
-
이전
-
다음