로그인
Sign in
조회 수 6105 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

 DKMS(Dynamic Kernel Module Support) 모듈 관리


1. 개 요

DKMS(Dynamic Kernel Module Support)는 커널 모듈이 부팅시 생성되고, 활성화될 수 있도록 해 카널 모듈 적재방식으로, /usr/src 디렉토리에 소스가 위치하고 있어서 부팅시 해당 모듈을 필요로 하는 장치가 있으면 모듈 컴파일을 통하여 커널에 자동으로 적재됩니다. DKMS는 커널 모듈 소스를 컴파일하여 modprobe.conf 파일을 통하여 커널에 적재되도록 하는 것이 아니라, 커널이 최초 부팅될 때 컴파일하여 커널에 적재되록 하는 것으로, 커널이 변경되었을 때 따로 모듈을 컴파일하지 않아도 자동으로 적재되므로, 커널이 업그레이드될 때 별도로 커널 모듈 설정을 하지 않아도 되기 때문에 매우 유용한 방식입니다.


넘버원 리눅스에서는 커널에서 지원하지 않는 모듈이 지원되도록 하고자 할 때 이 방식을 많이 이용합니다. 넘버원 리눅스 2018 SE 버전에서는 PCLinuxOS에서 지원하지 않는 커널 모듈로  broadcom-wl, digimend, huion, r8101, r8168 드라이버 등을 추가로 지원하고 있습니다.


그러면 DKMS로 커널 모듈을 어떻게 관리하는지를 알아봅니다.


 Usage: /usr/sbin/dkms [action] [options]
  [action]  = { add | remove | build | install | uninstall | match
               | mkdriverdisk | mktarball | ldtarball | mkrpm | mkkmp | mkdeb | status }
  [options] = [-m module] [-v module-version] [-k kernel-version] [-a arch]
              [-d distro] [-c dkms.conf-location] [-q] [--force] [--all]
              [--templatekernel=kernel] [--directive='cli-directive=cli-value']
              [--config=kernel-.config-location] [--archive=tarball-location]
              [--kernelsourcedir=source-location] [--no-prepare-kernel]
              [--binaries-only] [--source-only] [-r release (SuSE)] [--verbose]
              [--size] [--spec=specfile] [--media=floppy|iso|tar]
              [--binary]


2. 설 치

Step1. DKMS는 /usr/src 디렉토리에 커널 모듈 소스를 두어 관리하게 됩니다. 따라서 /usr/src 디렉토리에 커널모듈 소스를 설치합니다. 그러면 예제 파일로 태블릿 드라이버인 dkms-huion 패키지를 사용해 봅니다.

 # rpm -qpl dkms-huion-1.3-2no1linux.2018.noarch.rpm

 /etc/X11/xorg.conf.d/50-huion.conf
 /usr/src/huion-1.3-2no1linux.2018
 /usr/src/huion-1.3-2no1linux.2018/Makefile
 /usr/src/huion-1.3-2no1linux.2018/Makefile.0000
 /usr/src/huion-1.3-2no1linux.2018/README.md
 /usr/src/huion-1.3-2no1linux.2018/dkms.conf
 /usr/src/huion-1.3-2no1linux.2018/hid-huion.c
 /usr/src/huion-1.3-2no1linux.2018/hid-huion.c.0000
 /usr/src/huion-1.3-2no1linux.2018/hid-huion.conf
 /usr/src/huion-1.3-2no1linux.2018/hid-rebind
 /usr/src/huion-1.3-2no1linux.2018/hid-rebind.rules

상기 RPM 패키지를 설치하게 되면 /usr/src 디렉토리에 소스가 위치하게 됩니다.

Step2. 커널에서 dkms 방식으로 컴파일되어 모듈이 로딩되도록 하기 위해서는 소스가 있는 경로안에 dkms.conf 파일을 만들어 놓아야 합니다.

 PACKAGE_NAME="huion"                                            # 패키지명을 명시합니다.
 PACKAGE_VERSION="huion-1.3-2no1linux.2018"        # 패키지 버전을 명시합니다.
 AUTOINSTALL="yes"                                                     # 부팅시 자동으로 설치할 것인가를 설정합니다.
 MAKE[0]="'make' clean KSRC= modules"                   # 컴파일 방법을 설정합니다.
 BUILT_MODULE_NAME[0]="hid-huion"                        # 컴파일 모듈명을 설정합니다.
 DEST_MODULE_LOCATION[0]="/extra                         # 커널 모듈이 위치할 경로를 명시합니다.

 자세한 dkms.conf 예제에 대해서는 /usr/share/dkms/sample.conf 파일을 참조하면 됩니다.

Step3. dkms 트리에 커널 모듈 소스를 추가합니다.

  dkms add -m 모듈명 -v 모듈버전명

 # dkms add -m huion -v 1.3-2no1linux.2018

  Creating symlink /var/lib/dkms/huion/1.3-2no1linux.2018/source ->
                 /usr/src/huion-1.3-2no1linux.2018

   DKMS: add Completed.

 #

  Step4. 현재 커널에 해당 커널 모듈 소스를 빌드시킵니다.

   dmsk build -m 모듈명 -v 모듈버전명

 # dkms build -m huion -v 1.3-2no1linux.2018

  Preparing kernel 4.15.8-no1linux1 for module build:
  (This is not compiling a kernel, just preparing kernel symbols)
  Storing current .config to be restored when complete
  Running Generic preparation routine
  make clean....
  using /proc/config.gz
  make oldconfig....
  make prepare....

  Building module:
  cleaning build area....
  'make' clean KSRC= modules....
  cleaning build area....
  cleaning kernel tree (make clean)....

  DKMS: build Completed.

Step5. install 명령으로 커널 몯듈을 등록합니다.

  dkms install -m 모듈명 -v 모듈버전명

 # dkms install -m huion -v 1.3-2no1linux.2018
  Running module version sanity check.

  hid-huion.ko:
     - Installation
         - Installing to /lib/modules/4.15.8-no1linux1/extra/

  depmod....

모든 설정이 완료되었습니다. 부팅하게 되면 커널에 hid-huion.ko 모듈이 자동으로 적재됩니다. 만일 커널이 업그레이드되면 부팅시 커널에 자동으로 모듈이 올라가게 됩니다. /etc/modprobe.conf 파일로 커널 모듈을 관리하지 않아도 되기 때문에 참 편리한 커널 모듈 관리 기법 중의 하나라 할 수 있습니다.



List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 넘버원 리눅스 팁은 FAQ 게시판으로 zharyong 2018.07.15 1866
212 인터넷 [네트워크] 외부 네트워크상에서 KDE Connect 접속을 위한 OpenVPN 서버 구축 zharyong 2018.08.27 925
211 TodayAPP [Heimdall] 리눅스에서 안드로이드 스마트폰 루팅하기 file zharyong 2018.08.16 2748
210 인터넷 [네트워크] 넘버원 리눅스에서 기가인터넷 연결하기 file zharyong 2018.07.25 1541
209 시스템 [시스템] 공인 인증서 anysign4pc 설치후 실행시 libNativeMng.so 오류 발생 zharyong 2018.07.06 1217
208 시스템 [시스템] rpm 패키지는 어떻게 푸나? How to extract RPM package directly file zharyong 2018.05.26 2003
207 인터넷 [No1.Linux 2018] 공인 인증서 적용 사이트 안내 1 zharyong 2018.05.17 854
206 인터넷 [No1.Linux 2018] 주요 은행의 인터넷 뱅킹 1 file zharyong 2018.05.17 4488
205 TodayAPP [Today'sAPP] 내 컴퓨터의 하드웨어 정보를 DB에 등록하고 열람해 보자. file zharyong 2018.05.10 458
204 시스템 [팁] xterm-256color': unknown terminal type 메시지및 MC에서 키보드 사용이 안될 때 zharyong 2018.05.04 923
203 시스템 [MC] No1.Linux 2018 SE의 mc에서 ISO 파일 내용물을 보려면 file zharyong 2018.05.03 406
202 시스템 [컴파일오류] /usr/bin/ld: cannot find -lgtk-3 zharyong 2018.05.01 9710
201 스크립트 [팁] No1.Linux 2018 SE 버전의 부팅시 하드 디스크 자동 마운트 file zharyong 2018.04.30 447
200 엑스 [한글입력기] No1.Linux 2018 SE 한글입력기 2 file zharyong 2018.04.30 3412
199 인터넷 [네트워크] 비번 없이 SSH 서버에 자동 로그인 하기 zharyong 2018.04.25 740
198 하드웨어 [하드웨어] 블루투쓰 USB 동글 동작하지 않을 경우 file zharyong 2018.04.24 3030
197 시스템 [시스템] 쉘에서 set GTK_DEBUG 관련 오류 메시지가 발생되는 경우 file zharyong 2018.04.24 473
196 [네트워크] 리얼텍 r8168 모듈로 이더넷에 장애가 있을 경우 zharyong 2018.04.19 2070
» 시스템 [시스템] DKMS(Dynamic Kernel Module Support)를 이용한 모듈 관리 zharyong 2018.04.16 6105
194 시스템 [시스템] Alternatives(Update-altenatives)로 하나의 심볼릭 링크로 여러 패키지 관리 file zharyong 2018.04.16 7261
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next
/ 12