DKMS는 무엇을합니까? 어떻게 사용합니까?


23

최근에 DKMS에 대한 몇 가지 언급을 보았지만 실제로 내 시스템에서 무엇을하고 있는지 명확하지 않습니다.

DKMS는 실제로 무엇을하며 어떻게 사용합니까?

답변:


25

DKMS (Dynamic Kernel Module Support) 패키지 ( http://linux.dell.com/dkms/ )는 추가 버전의 커널 모듈 설치를 지원합니다. 패키지는 컴파일되어 커널 트리에 설치됩니다. 제거하면 이전 모듈이 복원됩니다. 기본적으로 설치는 현재 커널 트리에 있지만 명령 행 옵션으로 모든 커널 트리를 선택할 수 있습니다. 또한 새로운 Ubuntu 커널 이미지 패키지를 설치하면 DKMS가 자동으로 호출되므로 DKMS에 추가 된 모듈은 자동으로 업데이트됩니다.

개요

DKMS와 함께 모듈을 사용하려면 모듈 설치 파일 (소스 코드 또는 이진 파일 일 수 있음)을 / usr / src /-에 배치하고 구성 파일 dkms.conf와 함께 DKMS에 모듈을 빌드 / 구성하는 방법과 그 구성 요소를 알려줍니다. 이름은. 고급 시나리오에서는 dkms 시스템에서 조건부 빌드 지침 및 패치를 수행 할 수 있지만 경우에 따라 필요하지 않을 수도 있습니다.

연습

멋진 "Awesome Adaptor"용 모듈을 설치한다고 가정 해 보겠습니다. 당신은 소스가 제공 tarball awesome-20091211-v1.1.tgz됩니다.

DKMS를 사용하면 적절한 항목으로 dkms.conf 파일을 만들어 DKMS에이를 수행하는 방법을 알려줍니다. 예를 들어 tarball의 압축을 푼 후 :

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

내부 dkms.conf에 다음 줄을 추가 할 수 있습니다.

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

모든 디렉토리는 dkms.conf 파일의 위치와 관련이 있습니다. 이것은 DKMS에 알려줍니다

  1. 모듈을 빌드하는 명령 (src / 디렉토리에서 make를 실행)
  2. 소스 트리를 정리하는 명령 (src / 디렉토리에서 make clean 실행)
  3. 확장자가 .o 또는 .ko가없는 모듈의 이름입니다. 여러 개의 모듈이 구축 된 경우 이는 실제로 모듈의 배열 일 수 있습니다 (man dkms 참조).
  4. DKMS가 빌드 된 모듈을 찾을 수있는 위치
  5. 이름과 버전 DKMS는 모듈과 연결되어야합니다.
  6. 모듈을 설치 한 후 initrd 이미지를 다시 만들려면

또한 빌드 또는 설치 전후에 스크립트를 호출하는 옵션을 추가하고 추가 (조건부) make 명령, 패치 명령 등을 제공 할 수 있습니다. dkms.conf는 실제로 쉘 스크립트로 제공되므로 상당한 양의 속임수를 쓸 수 있습니다. 필요하다면. 이러한 옵션 및 자세한 내용은 man dkms의 dkms.conf 섹션에 설명되어 있습니다.

다음으로 모듈 설치 파일을 커널 소스 트리 / usr / src /-에 복사하여 DKMS에 모듈을 설치하고 DKMS에 새 모듈에 대해 알려줍니다.

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

그게 다야! 이제 DKMS는 향후 커널 설치를 위해 모듈을 모듈 목록에 추가했습니다. 작동하는지 확인하고 현재 커널에 모듈을 설치하기 위해 dkms에 모듈을 빌드하고 설치하도록 지시 할 수 있습니다.

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

운 좋게도, 모듈은 향후 커널 업데이트에 설치되고 재설치 될 것입니다.

DKMS man 페이지는 DKMS 사용하기 위해 여러분이 좋아하는 커널 모듈 설정에 도움이되는 정보가 있습니다. 포괄적 인 문서는 아니지만 많은 질문에 답변합니다. 사용 된 모듈이 설정하려는 모듈이 아닌 경우에도 다음 예를 참고하면 도움이 될 수 있습니다.

  • RocketRaid - DKMS로 Highpoint RocketRaid 드라이버 RR26xx 및 RR62x 를 설정하는 방법에 대한 두 가지 예 .

보낸 사람 : help.ubuntu.com

자세한 내용은 여기를 참조하십시오.


2
FWIW에서, DKMS 프로젝트는 Github에서의에 새로운 가정이 github.com/dell/dkms을
DDay
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.