본문 바로가기
OS 운영체제/LINUX

DKMS (리눅스 커널 모듈 관리 프레임워크)

by yororing 2024. 4. 9.

00 개요

  • Ubuntu, Debian 계열의 OS는 잦은 커널 업데이트로 인해 커널 모듈 관리가 어려움
  • 이를 해결하기 위해 자동으로 해당 커널에 맞는 모듈을 빌드해 주는 DKMS를 사용함
    • 빌드하다 (동사): 컴퓨터 프로그래밍에서 '빌드'란 소스코드 및 프로젝트에 쓰인 각각의 파일 및 자원 등을 JVM이나 WAS (Web Application Server)가 인식할 수 있는 구조로 패키징하는 과정/결과

1. 용어 정리

1) 리눅스 커널

  • 리눅스 커널이란 Linux OS의 핵심 부분으로 OS에서 실행되는 프로세스와 해당 하드웨어 간의 기본 interface
  • 메모리, 프로세스, CPU, 장치 드라이버, 시스템 호출 및 보안과 같은 주요 기능들을 관리함

2) 커널 공간

  • 커널은 실제 사용자에게 숨겨져 있으며 커널 공간이라는 자체 영역에서 작동함
  • 사용자는 파일 브라우저, 웹 브라우저 등과 같은 사용자 응용 프로그램을 사용하여 커널과 상호 작용함
  • 이런 상호 작용은 시스템 호출이라는 특정 프로그래밍 구조를 사용함

3) 커널 소스 트리

  • 커널 및 장치 드라이버에 대한 모든 소스 코드가 있음
  • 이것은 arch, block, crypto, include, init, lib, usr 등과 같은 많은 디렉토리와 하위 디렉토리로 구성됨

4) 리눅스 커널 모듈

  • 커널 모듈은 기본적으로 코드 덩어리
  • 요구 사항에 따라 커널에서 추가 및 제거 가능
  • 기본 제공되거나 로드 가능할 수 있음
  • 커널 모듈은 시스템을 재부팅하지 않고도 커널의 기능을 향상시킴
  • 커널에 새 구성 요소를 추가하려면 새 커널을 구성하고 구축해야 하는 마이크로 커널과 달리 런타임에 OS의 구성 요소나 모듈을 (언)로드 가능
  • 이런 모듈은 장치 드라이버, 파일 시스템 등임

 

  • 모듈이 로드된 후에는 커널 코드와 같음
  • 일반 커널 코드와 동일한 권한과 의무가 있음

01 DKMS란

1. 정의

  • 'Dynamic Kernel Module Support'의 약자
  • '동적 커널 모듈 지원'
  • 전체 커널을 수정할 필요 없이 개별 커널 모듈을 업데이트할 수 있는 시스템
  • automatically recompiles all DKMS modules when a new kernel version is installed → allows drivers and devices outside of the mainline kernel to continue working after a Linux kernel upgrade
  • supports rpm and deb package formats out of the box
  • a program/framework that enables generating Linux kernel modules whose sources generally reside outside the kernel source tree
  • 즉, 리눅스 커널 모듈을 관리하는 프레임워크/프로그램
  • 리눅스 커널에는 다양한 하드웨어나 기능을 지원하기 위한 모듈이 포함되어 있음
  • 이러한 모듈들은 커널과 함께 업테이트 되거나 변경될 수 있음
  • DKMS는 이런 커널 모듈을 관리하기 위한 시스템/프로그램으로, 커널 업그레이드/변경 시 모듈을 쉽게 유지할 수 있도록 도와줌
  • 보통 DKMS는 커널 모듈의 소스코드와 컴파일 스크립트를 포함하고 이를 사용하여 커널 업데이트 후에도 모듈을 재빌드 하고 설치 함
  • 이를 통해 사용자는 커널을 업그레이트/변경할 때에도 필요한 커널 모듈이 자동으로 재설치되어 시스템을 보다 안정적으로 유지하도록 함

 

참조

  1.  https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support 
  2. https://velog.io/@maldaliza/빌드Build란-무엇일까
  3. https://ko.linux-console.net/?p=15116
  4.  
  5.  

 

 

 

'OS 운영체제 > LINUX' 카테고리의 다른 글

EGO (Alter Ego)  (0) 2024.04.15
kernel-devel (리눅스 패키지)  (0) 2024.04.09
/etc/passwd (사용자 정보 파일)  (0) 2024.04.08
find (파일 검색 명령어)  (0) 2024.04.05
swap (가상 저장 공간)  (0) 2024.04.04