Linux Kernel

BtrFS 파일시스템

Btrfs(B-tree file system, "better FS" 또는 "butter FS"로도 읽는다)는 Oracle의 Chris Mason이 2007년 시작해 2009년 Linux 2.6.29부터 메인라인에 포함된 파일시스템이다. ext4의 뒤를 이을 차세대 범용 파일시스템을 목표로, ZFS에 견줄만한 copy-on-write(CoW)…

Continue ReadingBtrFS 파일시스템

F2FS 파일시스템

F2FS(Flash-Friendly File System)는 삼성전자가 NAND flash 기반 저장 장치를 위해 설계해 2012년 공개하고 Linux 3.8부터 메인라인에 포함된 파일시스템이다. eMMC, SD 카드, SSD처럼 FTL(Flash Translation Layer)을 내장한 flash 장치의 물리적 특성을…

Continue ReadingF2FS 파일시스템

fatal error: gelf.h: No such file or directory 오류

Linux 커널을 소스에서 빌드하다 보면 tools/objtool을 컴파일하는 단계에서 gelf.h 헤더를 찾지 못해 빌드가 중단되는 경우가 있다. objtool은 커널 빌드 시 오브젝트 파일의 제어 흐름을 분석해 ORC unwinder 테이블 생성, retpoline/livepatch…

Continue Readingfatal error: gelf.h: No such file or directory 오류

kprobes와 tracepoint로 커널 디버깅하기

커널 코드에 printk를 넣고 재빌드/재부팅하는 것은 확인할 지점이 늘어날수록 비용이 커진다. tracepoint와 kprobe는 커널을 재빌드하지 않고도 특정 함수의 호출, 인자, 리턴값을 실시간으로 들여다볼 수 있게 해주는 두 가지 트레이싱 메커니즘이다.…

Continue Readingkprobes와 tracepoint로 커널 디버깅하기

Kernel Debugging 옵션 정리

커널을 디버깅할 때 미리 켜두면 좋은 Kconfig 옵션들을 목적별로 정리한다. 대부분 CONFIG_DEBUG_KERNEL=y가 함께 켜져 있어야 메뉴에 노출되는 옵션들이다. KASAN KASAN(Kernel Address SANitizer)은 커널 메모리의 out-of-bounds 접근이나 use-after-free를 런타임에 탐지한다. CONFIG_KASAN=y…

Continue ReadingKernel Debugging 옵션 정리

Stack Protector 사용법

스택 기반 버퍼 오버플로우는 지역 변수에 정해진 크기보다 많은 데이터를 써서 스택에 저장된 return address까지 덮어쓰고, 함수가 리턴할 때 공격자가 원하는 코드로 실행 흐름을 옮기는 전형적인 취약점 패턴이다. 커널은 컴파일러가…

Continue ReadingStack Protector 사용법

cgroup v2 사용법

cgroup v2는 리눅스 커널에서 프로세스를 그룹화 하고, 각 그룹에 대해 리소스 할당/제한을 설정하는 기능을 제공한다. cgroup v1보다 간편하고 세밀한 제어를 지원한다. 계층적 구조를 지원하여 복잡한 리소스 관리를 더욱 효율적으로 수행할…

Continue Readingcgroup v2 사용법