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는 커널 모듈의 소스코드와 컴파일 스크립트를 포함하고 이를 사용하여 커널 업데이트 후에도 모듈을 재빌드 하고 설치 함
- 이를 통해 사용자는 커널을 업그레이트/변경할 때에도 필요한 커널 모듈이 자동으로 재설치되어 시스템을 보다 안정적으로 유지하도록 함
참조
- https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support
- https://velog.io/@maldaliza/빌드Build란-무엇일까
- https://ko.linux-console.net/?p=15116
'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 |