Kernel .config 분석기
리눅스 커널 .config 파일을 붙여넣으면 파싱·검색·비교합니다. 디버그/보안 체크리스트, 카테고리 필터, 두 설정 파일 Diff를 브라우저 안에서 실행합니다.
.config 분석기
두 .config 비교
두 .config 파일을 붙여넣으면 추가·제거·값 변경 항목을 비교합니다. 커널 버전 업그레이드 또는 환경 차이 분석에 유용합니다.
기준 .config
비교 .config
체크리스트 항목 설명
분석기가 자동으로 검사하는 디버그·보안·성능 항목의 의미와 근거를 설명합니다.
디버그 빌드 필수 항목
| CONFIG | 역할 | 없을 때 영향 |
|---|---|---|
CONFIG_KASAN | Kernel Address Sanitizer — 메모리 오염(OOB, UAF, NPD) 탐지 | 메모리 버그가 조용히 지나감 |
CONFIG_KFENCE | Kernel Electric Fence — 경량 샘플링 메모리 안전성 검사 | 프로덕션 유사 환경에서 메모리 버그 탐지 불가 |
CONFIG_LOCKDEP | 잠금(Lock) 의존성 추적 — 데드락·잘못된 잠금 순서 감지 | 잠금 관련 버그가 간헐적으로만 나타남 |
CONFIG_DEBUG_INFO | 디버그 심볼 포함 — addr2line, gdb 사용 가능 | 콜 스택에서 소스 위치 확인 불가 |
CONFIG_FRAME_POINTER | 프레임 포인터 보존 — 정확한 스택 언와인드 | 일부 스택 프레임(Stack Frame)이 손실됨 |
CONFIG_FTRACE | 커널 함수 추적 프레임워크 | 함수 추적·latency 측정 불가 |
CONFIG_DYNAMIC_FTRACE | 런타임 동적 계측 — ftrace 오버헤드(Overhead) 최소화 | ftrace 활성화 시 항상 오버헤드 발생 |
CONFIG_KPROBES | 동적 계측점 삽입 — bpftrace, SystemTap 기반 | 동적 커널 계측 불가 |
보안 하드닝 항목
| CONFIG | 역할 |
|---|---|
CONFIG_SECURITY | LSM(Linux Security Module) 프레임워크 활성화 — SELinux·AppArmor 기반 |
CONFIG_FORTIFY_SOURCE | 문자열 함수(memcpy, strcpy 등) 경계 검사 — 버퍼 오버플로(Buffer Overflow) 탐지 |
CONFIG_STACKPROTECTOR_STRONG | 스택 카나리(Stack Canary) — 스택 스매싱 공격 탐지 |
CONFIG_RANDOMIZE_BASE | KASLR — 커널 주소 공간(Address Space) 레이아웃 무작위화 |
CONFIG_STRICT_KERNEL_RWX | 커널 메모리 W^X — 쓰기 가능 영역을 실행 불가로, 코드 영역을 쓰기 불가로 설정 |
성능 주의 항목 (프로덕션 빌드)
| CONFIG | 주의 이유 |
|---|---|
CONFIG_KASAN=y | 메모리 접근마다 shadow 메모리 검사 — CPU 오버헤드 10~30%, 메모리 사용 2배 증가 |
CONFIG_LOCKDEP=y | 잠금 연산마다 의존성 그래프 갱신 — 성능 저하 및 메모리 사용 증가 |
CONFIG_HZ=1000 | 타이머(Timer) 인터럽트(Interrupt) 1,000Hz — 고응답성이 필요한 경우 외에는 250Hz 권장 |
.config 파일 형식
.config 파일은 make menuconfig 또는 make defconfig 실행 후 커널 소스 루트에 생성됩니다. 실행 중인 커널의 설정은 /proc/config.gz에서 확인할 수 있습니다.
문법 규칙
# 자동 생성 주석 (버전 정보)
# Linux/x86 6.1.0 Kernel Configuration
CONFIG_NAME=y # 활성화 (빌트인)
CONFIG_NAME=m # 활성화 (모듈)
# CONFIG_NAME is not set # 비활성화
CONFIG_HZ=250 # 정수값
CONFIG_LOCALVERSION="-debug" # 문자열값
.config 생성 방법
| 명령 | 설명 |
|---|---|
make defconfig | 아키텍처 기본 설정 생성 |
make menuconfig | 텍스트 UI로 대화형 설정 |
make oldconfig | 기존 .config를 유지하며 새 옵션만 질의 |
make savedefconfig | 현재 설정에서 기본값과 다른 항목만 defconfig로 저장 |
zcat /proc/config.gz | 부팅 중인 커널의 설정 추출 (CONFIG_IKCONFIG_PROC=y 필요) |
자주 쓰는 CONFIG 그룹
디버그·보안·빌드 관련 CONFIG 항목을 카테고리별로 정리합니다. 검색·카테고리 필터 버튼과 함께 활용하십시오.
메모리 디버그
| CONFIG | 설명 |
|---|---|
CONFIG_KASAN | Kernel Address Sanitizer (메모리 오염 탐지) |
CONFIG_KASAN_INLINE | KASAN 인라인 계측 — 빠르지만 코드 크기 증가 |
CONFIG_KFENCE | Kernel Electric Fence (경량 샘플링 방식) |
CONFIG_KMSAN | Kernel Memory Sanitizer — 초기화되지 않은 메모리 탐지 |
CONFIG_SLUB_DEBUG | SLUB 할당자 디버그 정보 활성화 |
CONFIG_PAGE_POISONING | 해제된 페이지(Page)에 독 값 기록 — UAF 탐지 |
잠금/동기화 디버그
| CONFIG | 설명 |
|---|---|
CONFIG_LOCKDEP | 잠금 의존성 추적 — 데드락 탐지 |
CONFIG_PROVE_LOCKING | 잠금 취득 순서 검증 (LOCKDEP 필요) |
CONFIG_LOCK_STAT | 잠금 경합(Lock Contention) 통계 수집 (/proc/lock_stat) |
CONFIG_DEBUG_LOCKDEP | LOCKDEP 자체 디버그 |
추적/프로파일링(Profiling)
| CONFIG | 설명 |
|---|---|
CONFIG_FTRACE | 커널 함수 추적 프레임워크 |
CONFIG_DYNAMIC_FTRACE | 런타임 동적 계측 (최소 오버헤드) |
CONFIG_FUNCTION_TRACER | 모든 함수 호출 추적(Call Trace) |
CONFIG_KPROBES | 동적 계측점 삽입 |
CONFIG_KRETPROBES | 함수 반환값 추적 (KPROBES 필요) |
CONFIG_PERF_EVENTS | perf 하드웨어/소프트웨어 이벤트 카운터 |
설정 워크플로
커널 빌드 과정에서 .config를 관리하는 일반적인 흐름입니다.
# 1. 기본 설정 생성
make defconfig # 아키텍처 기본값
make ARCH=arm64 defconfig # 크로스 컴파일
# 2. 설정 조정
make menuconfig # 대화형 TUI
scripts/config --enable KASAN # 스크립트로 개별 옵션 변경
scripts/config --set-val HZ 250
# 3. 커널 버전 업 시 설정 이관
cp .config .config.old
make oldconfig # 새 옵션만 질의
# 4. 설정 검증
make prepare # 헤더 생성 및 설정 유효성 확인
# 5. 최소 defconfig 저장
make savedefconfig # defconfig 파일로 요약 저장
# 6. 실행 중인 커널 설정 추출
zcat /proc/config.gz > running.config # CONFIG_IKCONFIG_PROC=y 필요