로그인
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
15 시스템 [플라즈마] 단축키 설정 방법 (수동) No1Linuxer 2020.07.13 706
14 시스템 [Funny Tip] 텍스트를 음성으로 1 file zharyong 2019.01.04 458
13 시스템 [부팅] 윈도7에서 No1.Linux 2018 SE Live 부팅 방법 file zharyong 2018.12.11 548
12 시스템 [시스템] 공인 인증서 anysign4pc 설치후 실행시 libNativeMng.so 오류 발생 zharyong 2018.07.06 1218
11 시스템 [시스템] rpm 패키지는 어떻게 푸나? How to extract RPM package directly file zharyong 2018.05.26 2003
10 시스템 [팁] xterm-256color': unknown terminal type 메시지및 MC에서 키보드 사용이 안될 때 zharyong 2018.05.04 923
9 시스템 [MC] No1.Linux 2018 SE의 mc에서 ISO 파일 내용물을 보려면 file zharyong 2018.05.03 406
8 시스템 [컴파일오류] /usr/bin/ld: cannot find -lgtk-3 zharyong 2018.05.01 9710
7 시스템 [시스템] 쉘에서 set GTK_DEBUG 관련 오류 메시지가 발생되는 경우 file zharyong 2018.04.24 473
» 시스템 [시스템] DKMS(Dynamic Kernel Module Support)를 이용한 모듈 관리 zharyong 2018.04.16 6105
5 시스템 [시스템] Alternatives(Update-altenatives)로 하나의 심볼릭 링크로 여러 패키지 관리 file zharyong 2018.04.16 7261
4 시스템 [시스템] 부팅화면을 바꿔 보고 싶으세요? 플리마우스 변경하기 1 file zharyong 2018.03.31 1646
3 시스템 [System] 바탕화면에 시스템 정보를 모니터하여 멋지게 꾸며볼까 - conky file zharyong 2018.03.30 1167
2 시스템 [시스템] 외국 배포판의 응용프로그램을 한글화(Localization)하는 방법 file zharyong 2018.03.23 541
1 시스템 [시스템] MD5SUM 체크섬 파일 만드는 방법과 검사하는 방법 zharyong 2018.03.21 1661
목록
Board Pagination Prev 1 Next
/ 1