본문 바로가기
리눅스

Dynamic Kernel Module Support

by 다움위키 2025. 5. 30.

원문 보기: https://dawoum.duckdns.org/wiki/Dynamic_Kernel_Module_Support

 

동적 커널 모듈 지원(Dynamic Kernel Module Support, 줄여서 DKMS)은 소스가 일반적으로 커널 소스 트리 외부에 있는 Linux 커널 모듈을 생성하도록 활성화하는 프로그램/프레임워크입니다. 그 개념은 새 커널이 설치될 때 DKMS 모듈이 자동으로 다시 빌드되도록 하는 것입니다.[2]

Introduction and Examples

어떤 하드웨어나 소프트웨어를 사용하기 위해, 커널 모듈이 필요할 수 있습니다. 커널 모듈에 대한 소스가 커널 내부에 포함된 경우에는 커널 컴파일로 쉽게 커널 모듈을 만들 수 있습니다. 반면에 소스가 커널 내부에 존재하지 않을 때에는 소스 자체를 구해야 하고, 그런-다음 동작 중인 커널에서 해당 모듈을 컴파일해야 합니다.

대표적으로 VirtualBox, VMware workstation, NVIDIA GPU, 등은 외부 모듈이 필요합니다.

모듈 소스를 제공하는 출처는 대체로 DKMS를 사용하는 정보를 제공하지 않고 대신 수동으로 모듈을 컴파일하고 필요한 위치로 복사하고 적재하는 방법을 소개합니다.

위의 과정은 크게 어렵지 않기 때문에 문제는 없어 보이지만, 커널이 바뀔 때마다 이런 과정을 수동으로 진행해야 한다는 것은 상당히 귀찮은 일입니다.

더구나, 대부분의 일반 사용자들은 이런 도구가 있다는 사실 자체를 모르기 때문에 사용하지 않을 뿐이고, 그 사용법이 어렵지 않기 때문에, 사용하지 않을 이유가 없습니다.

필요한 것은 모듈 소스 파일과 dkms.conf 파일로써, 먼저, 소스 파일을 /usr/src/ 아래에 풉니다.

소스 파일을 풀 때, 디렉토리를 생성하지 않고, /usr/src/ 아래에 소스 파일들이 풀리면, 디렉토리를 만들고 풀어야 합니다.

그런-다음 소스 파일을 푼 디렉토리 내부에서 dkms.conf 파일을 만듭니다.

예를 들어, 아래에서 제공하는 VMware workstation의 dmks.conf 파일을 참조해서 필요한 부분만 바꾸어서 사용할 수 있으며, 예제에서는 2개의 모듈을 제공하는 경우입니다.

게다가, 이런 외부 모듈은 커널 버전이 바뀔 때 컴파일이 제대로 되지 않는 경우가 흔하므로, 새로운 커널에 맞게 수정된 모듈 소스 파일을 먼저 구해야 합니다.

또는 가장 빠르게 동작 여부를 확인하거나 패치를 제공하는 곳을 알아 둘 필요가 있습니다. 아래 문서를 참조하십시오:

VMware workstation kernel module

VMware workstation을 사용하기 위해, 커널 내부에 포함된 몇 개의 모듈과 별도로 배포되는 2개의 모듈이 필요합니다. Arch Linux에서 제공하는 패키지에는 이미 dkms.conf 파일을 제공하기 때문에, 다음과 같이 모듈을 추가하고 설치할 수 있습니다.

# Linux DKMS config script for the VMware guest kernel modules

PACKAGE_NAME="vmware-workstation"
PACKAGE_VERSION="17.6.3_24583834"
MAKE="make KVERSION=$kernelver SRCDIR=/usr/src/$PACKAGE_NAME-$PACKAGE_VERSION"
CLEAN="make clean"
AUTOINSTALL="YES"

BUILT_MODULE_NAME[0]="vmmon"
BUILT_MODULE_LOCATION[0]='vmmon-only'
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"

BUILT_MODULE_NAME[1]="vmnet"
BUILT_MODULE_LOCATION[1]='vmnet-only'
DEST_MODULE_LOCATION[1]="/kernel/drivers/net"
  • cd /usr/src/vmware-workstation-17.6.3_24583834/
  • cat dkms.conf
  • sudo dkms add -m vmware-workstation -v 17.6.3_24583834
  • sudo dkms install -m vmware-workstation -v 17.6.3_24583834

이후로는 새로운 커널 설치 중에 자동으로 컴파일을 시도합니다.

Framework

DKMS의 필수 기능은 새 커널 버전이 설치되면 모든 DKMS 모듈을 자동으로 다시 컴파일한다는 것입니다. 이것은 메인라인 커널 외부의 드라이버와 장치를 리눅스 커널 업그레이드 후에도 계속 작동하도록 허용합니다.[3]

DKMS의 또 다른 이점은 공급업체에 의해 제공되는 수동 컴파일이나 미리 컴파일된 패키지에 대한 필요 없이 임의적인 커널 버전을 실행하는 기존 시스템에 새 드라이버를 설치하도록 허용한다는 것입니다.

DKMS는 2003년 Dell의 리눅스 엔지니어링 팀에서 작성되었습니다. 그것은 Ubuntu, Debian, Fedora, SUSE, Mageia, 및 Arch와 같은 많은 배포판에 포함되어 있습니다. DKMS는 GNU General Public License (GPL) v2 이상의 조건에 따라 출시된 자유 소프트웨어입니다.

DKMS는 rpm 및 deb 패키지 형식을 모두 지원합니다.