kprobes와 tracepoint로 커널 디버깅하기
커널 코드에 printk를 넣고 재빌드/재부팅하는 것은 확인할 지점이 늘어날수록 비용이 커진다. tracepoint와 kprobe는 커널을 재빌드하지 않고도 특정 함수의 호출, 인자, 리턴값을 실시간으로 들여다볼 수 있게 해주는 두 가지 트레이싱 메커니즘이다.…
커널 코드에 printk를 넣고 재빌드/재부팅하는 것은 확인할 지점이 늘어날수록 비용이 커진다. tracepoint와 kprobe는 커널을 재빌드하지 않고도 특정 함수의 호출, 인자, 리턴값을 실시간으로 들여다볼 수 있게 해주는 두 가지 트레이싱 메커니즘이다.…
2026년 7월 2일 LWN.net 위클리 에디션 주요 내용이다. Debian에서 벌어진 "protestware" 논란, Git 2.55 신규 기능, 커널 slab 할당자 하드닝, 7.2 머지 윈도우 마무리, Secure Boot 인증서 만료 대응, MinIO…
UFW(Uncomplicated Firewall)는 iptables/nftables를 쉽게 다루기 위한 우분투 기본 방화벽 프론트엔드이고, fail2ban은 로그를 감시하다가 비정상적인 접속 시도가 반복되면 해당 IP를 자동으로 차단하는 침입 차단 도구다. UFW가 "어떤 포트를 열지"를 정한다면, fail2ban은…
KSM(Kernel Samepage Merging)은 리눅스 커널에서 메모리 중복을 줄이기 위해 사용되는 기술이다. KSM은 동일한 메모리 페이지를 가진 프로세스들을 결합하여 메모리 사용량을 최적화할 수 있다. 이 글에서는 KSM의 동작 원리, 설정 방법,…
커널을 디버깅할 때 미리 켜두면 좋은 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보다 간편하고 세밀한 제어를 지원한다. 계층적 구조를 지원하여 복잡한 리소스 관리를 더욱 효율적으로 수행할…
모든 ARM 명령어는 32비트 길이를 갖는다. 명령어들은 32비트 워드로 정렬되므로 명령어 주소의 최하위 2비트는 ARM 상태에서는 항상 0이다. 일부 명령어는 최하위 비트를 Thumb 코드인지 ARM코드 인지 확인한다. ARM Instruction Set…