Kernel .config 분석기

리눅스 커널 .config 파일을 붙여넣으면 파싱·검색·비교합니다. 디버그/보안 체크리스트, 카테고리 필터, 두 설정 파일 Diff를 브라우저 안에서 실행합니다.

.config 분석기

두 .config 비교

.config 파일을 붙여넣으면 추가·제거·값 변경 항목을 비교합니다. 커널 버전 업그레이드 또는 환경 차이 분석에 유용합니다.

기준 .config
비교 .config

체크리스트 항목 설명

분석기가 자동으로 검사하는 디버그·보안·성능 항목의 의미와 근거를 설명합니다.

디버그 빌드 필수 항목

CONFIG역할없을 때 영향
CONFIG_KASANKernel Address Sanitizer — 메모리 오염(OOB, UAF, NPD) 탐지메모리 버그가 조용히 지나감
CONFIG_KFENCEKernel 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_SECURITYLSM(Linux Security Module) 프레임워크 활성화 — SELinux·AppArmor 기반
CONFIG_FORTIFY_SOURCE문자열 함수(memcpy, strcpy 등) 경계 검사 — 버퍼 오버플로(Buffer Overflow) 탐지
CONFIG_STACKPROTECTOR_STRONG스택 카나리(Stack Canary) — 스택 스매싱 공격 탐지
CONFIG_RANDOMIZE_BASEKASLR — 커널 주소 공간(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_KASANKernel Address Sanitizer (메모리 오염 탐지)
CONFIG_KASAN_INLINEKASAN 인라인 계측 — 빠르지만 코드 크기 증가
CONFIG_KFENCEKernel Electric Fence (경량 샘플링 방식)
CONFIG_KMSANKernel Memory Sanitizer — 초기화되지 않은 메모리 탐지
CONFIG_SLUB_DEBUGSLUB 할당자 디버그 정보 활성화
CONFIG_PAGE_POISONING해제된 페이지(Page)에 독 값 기록 — UAF 탐지

잠금/동기화 디버그

CONFIG설명
CONFIG_LOCKDEP잠금 의존성 추적 — 데드락 탐지
CONFIG_PROVE_LOCKING잠금 취득 순서 검증 (LOCKDEP 필요)
CONFIG_LOCK_STAT잠금 경합(Lock Contention) 통계 수집 (/proc/lock_stat)
CONFIG_DEBUG_LOCKDEPLOCKDEP 자체 디버그

추적/프로파일링(Profiling)

CONFIG설명
CONFIG_FTRACE커널 함수 추적 프레임워크
CONFIG_DYNAMIC_FTRACE런타임 동적 계측 (최소 오버헤드)
CONFIG_FUNCTION_TRACER모든 함수 호출 추적(Call Trace)
CONFIG_KPROBES동적 계측점 삽입
CONFIG_KRETPROBES함수 반환값 추적 (KPROBES 필요)
CONFIG_PERF_EVENTSperf 하드웨어/소프트웨어 이벤트 카운터

설정 워크플로

커널 빌드 과정에서 .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 필요

참고자료