Kernel Debugging 옵션 정리
커널을 디버깅할 때 미리 켜두면 좋은 Kconfig 옵션들을 목적별로 정리한다. 대부분 CONFIG_DEBUG_KERNEL=y가 함께 켜져 있어야 메뉴에 노출되는 옵션들이다. KASAN KASAN(Kernel Address SANitizer)은 커널 메모리의 out-of-bounds 접근이나 use-after-free를 런타임에 탐지한다. CONFIG_KASAN=y…
Linux Kernel
커널을 디버깅할 때 미리 켜두면 좋은 Kconfig 옵션들을 목적별로 정리한다. 대부분 CONFIG_DEBUG_KERNEL=y가 함께 켜져 있어야 메뉴에 노출되는 옵션들이다. KASAN KASAN(Kernel Address SANitizer)은 커널 메모리의 out-of-bounds 접근이나 use-after-free를 런타임에 탐지한다. CONFIG_KASAN=y…
스택 기반 버퍼 오버플로우는 지역 변수에 정해진 크기보다 많은 데이터를 써서 스택에 저장된 return address까지 덮어쓰고, 함수가 리턴할 때 공격자가 원하는 코드로 실행 흐름을 옮기는 전형적인 취약점 패턴이다. 커널은 컴파일러가…
커널에서 use-after-free나 buffer overflow 같은 힙 메모리 손상은 재현이 어렵고, 실제 원인이 된 코드와 증상이 나타나는 시점이 멀리 떨어져 있어 디버깅하기 까다롭다. SLUB 할당자는 이런 손상을 조기에 잡아내기 위한 디버그…
서버나 임베디드 장비에서 특정 CPU가 갑자기 응답하지 않으면 원인을 찾기 어렵다. 인터럽트조차 처리되지 않을 정도로 멈춰 버리면 로그 한 줄 남기지 못하고 시스템이 그대로 굳어버릴 수도 있다. Linux 커널은 이런…
cgroup v2는 리눅스 커널에서 프로세스를 그룹화 하고, 각 그룹에 대해 리소스 할당/제한을 설정하는 기능을 제공한다. cgroup v1보다 간편하고 세밀한 제어를 지원한다. 계층적 구조를 지원하여 복잡한 리소스 관리를 더욱 효율적으로 수행할…
Linux 6.6부터 기존의 CFS(Completely Fair Scheduler)를 대체하는 EEVDF(Earliest Eligible Virtual Deadline First) 스케줄러가 메인라인에 병합되었다. EEVDF는 1996년 Stoica & Zhang이 제안한 알고리즘을 기반으로 하며, CFS의 구조적 한계였던 레이턴시 불공정 문제를…
Linux는 디스크 I/O 비용을 줄이기 위해 읽은 파일 데이터를 RAM에 보관한다. 이것이 페이지 캐시(Page Cache)다. 반대로 RAM이 부족해지면 잘 안 쓰는 메모리를 디스크로 밀어내는데, 이것이 스왑(Swap)이다. 두 메커니즘은 서로 긴밀하게…
커널 재컴파일 없이 안전하게 실행되는 eBPF 프로그램으로 Linux 커널을 실시간 추적하는 방법. bpftrace, BCC, kprobe, tracepoint 완벽 가이드.
아래는 (1) 커널 레시피만 Clang으로 빌드하는 방법과, (2) 배포판 전체를 Clang toolchain으로 전환하는 방법을 각각 “Yocto에서 실제로 적용 가능한 형태”로 정리한 것이다.핵심 변수/흐름은 Yocto의 toolchain/clang 체계와 meta-clang의 TOOLCHAIN 스위치에 기반한다.…
메인라인 커널은 이미 Clang / LLVM 빌드를 공식 지원한다.하지만 SoC 벤더 커널(특히 4.x/5.4 계열)이나 오래된 BSP 트리는 여전히 GCC 전용 코드가 많다. 리눅스 커널 Clang 빌드 호환성은 아래 글에서 대략의…