커널 역사 (Kernel History)

리눅스 커널의 역사를 1991년 탄생부터 현재까지 버전별 릴리즈 시기, 주요 변경사항, 코드베이스 성장 통계, VCS 변천사, 커널 거버넌스 구조, stable/longterm 프로세스(Process), 서브시스템 메인테이너 트리, 개발 프로세스의 모든 것을 심층적으로 정리합니다.

1991년 탄생부터 현재까지, 리눅스 커널의 진화 과정을 버전별 릴리즈와 주요 변경사항으로 정리합니다. 스케줄러(Scheduler) 교체, 실시간(Real-time) PREEMPT_RT 통합, Rust 도입 같은 핵심 변천을 함께 다룹니다.

개요 -- 리눅스 커널의 시작

1991년 8월 25일, 핀란드 헬싱키 대학교의 21세 학생 Linus Torvalds는 Usenet 뉴스그룹 comp.os.minix에 다음과 같은 역사적인 메시지를 남겼습니다:

Linus의 원문 (1991-08-25): "I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones."

이 "취미 프로젝트"는 Andrew Tanenbaum의 교육용 OS인 MINIX에서 영감을 받았지만, 처음부터 실용적인 목적으로 개발되었습니다. Linus는 386 프로세서의 태스크(Task) 스위칭 기능을 탐구하다가 터미널 에뮬레이터를 작성했고, 이것이 점차 운영체제 커널로 발전했습니다.

초기 리눅스는 GNU 프로젝트의 도구(GCC, Bash, coreutils 등)와 결합하여 완전한 운영체제를 구성했습니다. Richard Stallman이 1983년부터 추진한 GNU 프로젝트는 커널(GNU Hurd)을 제외한 대부분의 사용자 공간(User Space) 도구를 이미 갖추고 있었기에, 리눅스 커널은 이 생태계에 완벽하게 들어맞았습니다.

리눅스는 GPLv2 라이선스를 채택하여 소스 코드를 자유롭게 사용, 수정, 재배포할 수 있게 했습니다. 이 결정은 전 세계 개발자들의 참여를 이끌어내며 오픈소스 소프트웨어 역사상 가장 성공적인 협업 프로젝트로 성장하는 기반이 되었습니다.

리눅스 커널 탄생의 주요 영향 MINIX (1987) 교육용 마이크로커널 GNU (1983~) GCC, Bash, coreutils Intel i386 (1985) 보호 모드, MMU, TSS Linux 0.01 (1991) 10,239줄, i386, GPLv2 모놀리식 커널 서버/클라우드 전 세계 서버 90%+ 모바일 (Android) 30억+ 디바이스 임베디드/IoT 라우터, 자동차, 로봇
날짜사건의미
1983GNU 프로젝트 시작자유 소프트웨어 운동의 시작, 사용자 공간 도구 개발
1985Intel 80386 출시보호 모드, MMU, 태스크 스위칭 하드웨어 지원
1987MINIX 출시교육용 마이크로커널 OS, Linux 개발의 영감
1991-08-25Linus의 Usenet 포스팅Linux 프로젝트 공식 시작 선언
1991-09Linux 0.01 공개최초 소스 코드 배포 (10,239줄)
1992-01GPLv2 라이선스 전환자유로운 배포/수정 허용, 개발자 참여 폭발
1992-04Tanenbaum-Torvalds 논쟁마이크로커널 vs 모놀리식 설계 철학 대립
1994-03-14Linux 1.0 릴리즈첫 안정 릴리즈, TCP/IP 완전 통합
Tanenbaum-Torvalds 논쟁 (1992): MINIX 창시자 Andrew Tanenbaum은 "Linux는 구식(obsolete)"이라며 마이크로커널 설계의 우월성을 주장했습니다. Linus는 실용주의를 내세워 모놀리식 커널의 성능 이점을 반박했습니다. 30년이 지난 지금, Linux의 성공은 실용적 설계 선택의 정당성을 입증했습니다.

커널 버전 연대표

아래 표는 리눅스 커널의 주요 릴리즈를 시간순으로 정리한 것입니다. 각 버전의 상세 내용은 이후 섹션에서 다룹니다.

리눅스 커널 주요 버전 타임라인 0.01 1991 1.0 1994 2.0 1996 2.4 2001 2.6 2003 3.0 2011 4.0 2015 5.0 2019 6.0 2022 6.19 2026-02 7.0 2026-04 초기 실험 엔터프라이즈 진입 현대화 (Git, CFS, cgroups) 성숙/혁신 (Rust, PREEMPT_RT) 주요 이정표 1992: GPLv2 전환 2005: Git 도입 2007: CFS 스케줄러 2013: User namespace (컨테이너) 2019: io_uring, 2020: WireGuard 2022: Rust 지원 2024: PREEMPT_RT 통합 2026: Rust stable, Linux 7.0
버전릴리즈일핵심 변경사항
0.011991-09최초 공개, i386 전용, Minix 파일시스템(Filesystem)
0.021991-10-05첫 공식 발표, bash/gcc 실행 가능
0.121992-01GPLv2 라이선스 전환
1.01994-03-14첫 안정 릴리즈, TCP/IP 네트워킹
1.21995-03-07Alpha/SPARC/MIPS 이식, IPX, AppleTalk
2.01996-06-09SMP, 로더(Loader)블 모듈, ELF, 다중 아키텍처
2.21999-01-25개선된 SMP, IPv6 초기, 대용량 메모리
2.42001-01-04USB, ext3, iptables, LVM, Bluetooth
2.62003-12-17O(1) 스케줄러, Preemptive kernel, NPTL, sysfs, udev
3.02011-07-21버전 번호 체계 변경 (2.6.39 -> 3.0)
3.82013-02-18User namespace 완성, F2FS
4.02015-04-12Live kernel patching (kpatch/kGraft)
4.92016-12-11BBR 혼잡 제어(Congestion Control), XDP (LTS)
4.182018-08-12bpfilter, TLS offload
5.02019-03-03Energy-Aware Scheduling, Adiantum 암호화(Encryption)
5.42019-11-24io_uring 확장, virtio-fs, exFAT (LTS)
5.62020-03-29WireGuard, USB4, time namespace
5.102020-12-13Static calls, EXT4 fast commit (LTS)
5.152021-10-31NTFS3, DAMON (LTS)
6.02022-10-02Rust 인프라 초기 도입
6.12022-12-11Rust 공식 지원 시작, MGLRU (LTS)
6.62023-10-29EEVDF 스케줄러, Intel shadow stack (LTS)
6.122024-11-17실시간(PREEMPT_RT) 메인라인 통합 (LTS)
6.182025-11-30SLUB sheaves, dm-pcache, longterm
6.192026-02-08listns() 시스템 콜, Live Update Orchestrator, PCIe 링크 암호화, EXT4 대형 블록, LASS
7.02026-04-12Rust stable 전환, sched_ext 정식, XFS 자가 복구, AccECN, Wi-Fi 8 초기, ML-DSA 서명

초기 개발 (0.x ~ 1.x)

0.01 (1991년 9월)

최초로 공개된 리눅스 커널 소스 코드. 약 10,239줄의 C 코드로 구성되었습니다. i386 전용이었으며, Minix 파일시스템을 사용했습니다. 프로세스 관리, 메모리 관리(Memory Management), 기본적인 파일시스템 지원만 포함되어 있었습니다.

/* Linux 0.01 - main.c의 시작 (1991년) */
/*
 * linux/init/main.c
 *
 * (C) 1991 Linus Torvalds
 */

#define __LIBRARY__
#include <unistd.h>
#include <time.h>

void main(void)
{
    mem_init(main_memory_start, memory_end);
    trap_init();
    blk_dev_init();
    chr_dev_init();
    tty_init();
    time_init();
    sched_init();
    buffer_init(buffer_memory_end);
    hd_init();
    floppy_init();
    sti();
    move_to_user_mode();
    if (!fork()) {
        init();
    }
    for(;;) pause();
}
0.01 소스 구조: 전체 파일 88개, 디렉토리 구조는 boot/, fs/, include/, init/, kernel/, lib/, mm/, tools/로 구성되었습니다. 현재 커널의 기본 구조가 이미 이 시기에 확립되었다는 점이 주목할 만합니다.

0.02 (1991년 10월 5일)

Linus가 공식적으로 "발표"한 첫 번째 버전. bashgcc를 실행할 수 있었습니다. 아직 플로피 디스크 드라이버조차 없어서 Minix에서 하드 디스크로 복사한 후 부팅해야 했습니다.

0.12 (1992년 1월)

중요한 전환점: 라이선스를 자체 라이선스에서 GPLv2로 변경했습니다. 이전 라이선스는 상업적 배포를 금지했으나, GPL 전환으로 자유로운 배포가 가능해졌습니다. 가상 메모리(Virtual Memory)(스왑(Swap)) 지원이 추가되었습니다.

0.95 ~ 0.99 (1992 ~ 1993)

X Window System 지원, ext 파일시스템 도입, 네트워킹 스택 초기 구현 등 급속한 발전 기간입니다. 전 세계 개발자들이 기여하기 시작하면서 코드 규모가 빠르게 성장했습니다.

1.0 (1994년 3월 14일)

최초의 안정(stable) 릴리즈. 약 176,250줄의 코드로 성장했습니다. TCP/IP 네트워킹이 완전히 통합되어 인터넷 서버로 사용 가능해졌습니다.

1.2 (1995년 3월 7일)

최초로 다중 아키텍처를 지원한 릴리즈입니다. Alpha, SPARC, MIPS 프로세서로 이식되었습니다.

2.x 시대 -- 엔터프라이즈 진입

2.0 (1996년 6월 9일)

리눅스가 서버 시장에 진입하는 계기가 된 릴리즈입니다. SMP(대칭형 다중 처리) 지원이 핵심이었습니다.

2.x 시대 버전 번호 체계 (홀수=개발, 짝수=안정) 개발 브랜치 (홀수) 2.1.x -> 2.2 (안정 릴리즈) 2.3.x -> 2.4 (안정 릴리즈) 2.5.x -> 2.6 (안정 릴리즈) 안정 브랜치 (짝수) 2.0.x -- 버그 수정만 2.2.x -- 버그 수정만 2.4.x -- 버그 수정만 2.6부터: 시간 기반 릴리즈 모델로 전환 2.6.x 포인트 릴리즈마다 새 기능 추가 (개발/안정 분리 폐기) 약 2~3개월 간격으로 릴리즈, merge window + rc 사이클 확립 이 모델은 3.x, 4.x, 5.x, 6.x까지 계속 유지됨

2.2 (1999년 1월 25일)

확장성과 성능이 크게 개선된 버전. 엔터프라이즈 환경에서의 안정성이 입증되기 시작했습니다.

2.4 (2001년 1월 4일)

데스크탑과 서버 양쪽에서 리눅스의 실용성을 크게 높인 릴리즈.

2.6 (2003년 12월 17일)

가장 오래 유지된 메이저 버전 시리즈(2003~2011). 현대 리눅스 커널의 기반이 되는 핵심 기능 대부분이 이 시기에 도입되었습니다.

참고: 2.6 시리즈는 기존의 개발/안정 브랜치 분리(홀수=개발, 짝수=안정) 모델을 폐기하고, 시간 기반 릴리즈 모델로 전환했습니다. 2.6.x 포인트 릴리즈마다 새 기능이 추가되었습니다.

2.6.0 핵심 기능:

2.6.x 주요 포인트 릴리즈:

버전릴리즈일주요 기능
2.6.122005-06-17Git으로 소스 관리 전환 (BitKeeper 대체)
2.6.132005-08-28inotify, Voluntary Preemption
2.6.162006-03-20High-resolution timers, ext3 online resize
2.6.182006-09-19RHEL 6 기반 커널
2.6.232007-10-09CFS(Completely Fair Scheduler), LSM 개선
2.6.242008-01-24cgroups, 네임스페이스(Namespace) 확장, dynticks/tickless
2.6.252008-04-16SMACK LSM, RCU preempt
2.6.282008-12-24ext4 안정화, GEM(Graphics Execution Manager)
2.6.292009-03-23Btrfs (실험적), KMS(Kernel Mode Setting)
2.6.322009-12-02KSM, perf 도구 (LTS -- RHEL 7/CentOS 7 기반)
2.6.362010-10-20AppArmor 통합, fanotify
2.6.382011-03-14Transparent Huge Pages(THP), VFS scalability
2.6.392011-05-18ipset, 마지막 2.6.x 릴리즈

3.x ~ 4.x -- 현대화

3.0 (2011년 7월 21일)

버전 번호 체계를 변경한 릴리즈. 2.6.39에서 곧바로 3.0으로 넘어갔으며, 기술적으로 혁명적인 변화보다는 리눅스 탄생 20주년을 기념하여 번호를 정리한 것입니다. 이후 3.x, 4.x, 5.x, 6.x로 순차 증가하는 체계가 확립되었습니다.

3.x 주요 릴리즈 (2011 ~ 2015)

버전릴리즈일주요 기능
3.12011-10-24OpenRISC 아키텍처, NFC 서브시스템
3.22012-01-04ext4 block 할당 개선, Btrfs send/receive (LTS)
3.42012-05-20x32 ABI, Btrfs 복구 도구 개선 (LTS)
3.72012-12-10ARM multiplatform, NVMe 드라이버, 서명된 커널 모듈(Kernel Module)
3.82013-02-18User namespace 완성 (컨테이너(Container) 기반), F2FS
3.102013-06-30timerfd 개선, perf trace (LTS -- RHEL 7.x 기반)
3.142014-03-30deadline I/O 스케줄러 개선, ZRAM
3.182014-12-07OverlayFS (union filesystem), bpf() 시스템 콜(System Call) (LTS)
컨테이너 혁명 (3.8): User namespace 완성은 Docker(2013)와 현대 컨테이너 기술의 기반이 되었습니다. PID, mount, network, UTS, IPC namespace와 결합하여 비특권 사용자도 격리(Isolation)된 환경을 생성할 수 있게 되었습니다.

4.0 (2015년 4월 12일)

Live kernel patching이 도입된 릴리즈. 재부팅 없이 커널 코드를 패치(Patch)할 수 있는 인프라로, Red Hat의 kpatch와 SUSE의 kGraft를 통합한 결과물입니다.

4.x 주요 릴리즈 (2015 ~ 2018)

버전릴리즈일주요 기능
4.12015-06-21ext4 암호화(fscrypt), ACPI 개선 (LTS)
4.42016-01-10eBPF 확장(cgroup, tracepoint), 3D 렌더링 개선 (LTS)
4.72016-07-24Schedutil governor, 파일시스템 보안 개선
4.92016-12-11BBR TCP 혼잡 제어, XDP(eXpress Data Path) (LTS)
4.112017-04-30Stateless 방화벽, SSD 멀티큐 개선
4.142017-11-12zstd 압축 지원, AMD Secure Memory Encryption (LTS)
4.152018-01-28KPTI (Meltdown 완화), Retpoline (Spectre 완화)
4.182018-08-12bpfilter, TLS offload, AMDGPU DC (RHEL 8 기반)
4.192018-10-22Wi-Fi 6, CAKE qdisc, overlayfs 개선 (LTS)
4.202018-12-23C-SKY 아키텍처, PSI(Pressure Stall Information)
Meltdown/Spectre (2018): CPU 하드웨어 취약점(Vulnerability)이 공개되면서 4.15에 KPTI(Kernel Page Table Isolation), Retpoline 등 완화 패치가 긴급 투입되었습니다. 이후 커널 보안 서브시스템이 크게 강화되는 계기가 되었습니다.

5.x -- 성숙기

5.0 (2019년 3월 3일)

4.20에서 이어진 릴리즈로, 번호 변경 자체에 기술적 의미는 없습니다. Linus는 "번호가 너무 커지면 변경합니다"고 언급했습니다.

5.x 주요 릴리즈 (2019 ~ 2022)

버전릴리즈일주요 기능
5.12019-05-05io_uring 초기 도입, pidfd
5.22019-07-07Sound Open Firmware(SOF), BPF 트램폴린
5.32019-09-15umwait (x86), RISC-V 개선, AMD Navi GPU
5.42019-11-24io_uring 확장, virtio-fs, exFAT 초기, Lockdown LSM (LTS)
5.52020-01-26Airtime fairness (Wi-Fi), BPF 트램폴린 확장
5.62020-03-29WireGuard VPN, USB4/Thunderbolt 3, time namespace
5.72020-05-31Split lock 검출, 온칩 ARM Mali GPU 드라이버
5.82020-08-02BPF 링 버퍼(Ring Buffer), shadow call stack (ARM64)
5.92020-10-11dm-integrity inline, FSGSBASE 지원
5.102020-12-13Static calls, EXT4 fast commit, XFS 온라인 복구 (LTS)
5.112021-02-14Intel SGX, Wi-Fi 6E
5.122021-04-25id-mapped 마운트(Mount), KFENCE, AMDGPU 가상 디스플레이
5.132021-06-27Landlock LSM, Apple M1 초기 지원, FreeSync HDMI
5.142021-08-29core scheduling, MEMFD_SECRET
5.152021-10-31NTFS3 (Paragon), DAMON (Data Access Monitor) (LTS)
5.162022-01-09futex2 (futex_waitv), AMD P-State
5.172022-03-20BPF CO-RE 개선, io_uring 제로카피 TX
5.182022-05-22Random number generator 전면 리팩토링
5.192022-07-31LoongArch 아키텍처, PREEMPT_DYNAMIC
5.x 시대 핵심 기술 도입 흐름 io_uring (5.1) 비동기 I/O 혁신 WireGuard (5.6) 현대적 VPN BPF 확장 (5.x) 관측성/보안/네트워크 NTFS3 (5.15) Windows 호환성 Landlock 비특권 샌드박스 5.x 시대의 기술적 의미 io_uring: epoll/aio를 대체하는 고성능 비동기 I/O, 파일시스템/네트워크/소켓 통합 WireGuard: IPsec/OpenVPN 대비 코드 4,000줄, 현대 암호학(ChaCha20, Curve25519) BPF: 트레이싱, 네트워크 필터링, 보안 정책을 사용자 공간 프로그램으로 커널에 주입 PREEMPT_DYNAMIC (5.19): 부팅 시 선점 모델 변경 가능 (none/voluntary/full) LoongArch (5.19): 중국 자체 개발 ISA 지원, 아키텍처 다양성 확대

6.x 시대

6.0 (2022년 10월 2일)

Rust 인프라가 커널에 초기 도입된 릴리즈. CONFIG_RUST 빌드 옵션이 추가되었으며, Rust로 커널 모듈을 작성할 수 있는 기반이 마련되었습니다.

6.1 (2022년 12월 11일)

Rust 공식 지원이 안정화된 첫 번째 릴리즈. MGLRU(Multi-Gen LRU)도 포함되어 메모리 관리 성능이 크게 개선되었습니다.

6.x 주요 릴리즈 (2023 ~ 2026)

버전릴리즈일주요 기능
6.22023-02-19Retbleed 완화 개선, 사용자 공간 발열 관리
6.32023-04-23HP(Huge Page) 마이그레이션 개선, Rust alloc 모듈
6.42023-06-25Intel LAM(Linear Address Masking), Confidential Computing 개선
6.52023-08-27User-space P-State, USB4v2, ACPI FFH
6.62023-10-29EEVDF 스케줄러 (CFS 대체), Intel shadow stack, LTS
6.72024-01-07Bcachefs 파일시스템, futex2, NTB 개선
6.82024-03-10Intel FRED, LAM 활성화, Zstd 업데이트
6.92024-05-12Rust로 작성된 첫 파일시스템(PuzzleFS), Intel TDX 게스트
6.102024-07-14mseal() 시스템 콜, NTSYNC
6.112024-09-15sched_ext (확장 가능 스케줄러), copy_file_range 최적화
6.122024-11-17PREEMPT_RT 메인라인 통합, 실시간 커널 공식 지원, LTS
6.132025-01-19Lazy preemption 모델, Arm CCA, AArch64 GCS, RTNL per-namespace 잠금, XFS atomic writes, Rust trace events, TX H/W shaping API
6.142025-03-23ntsync, Btrfs RAID1 read balancing, uncached buffered I/O, FUSE io_uring, 4096 CPU 코어, DRM panic AMDGPU, SELinux extended permissions
6.152025-06-01Rust hrtimer/ARMv7, sched_ext 이벤트 리포팅, HW 래핑 암호화 키, EROFS 48-bit 블록, io_uring LSM 훅
6.162025-07-27Intel TDX 호스트, Intel APX, USB 오디오 오프로드, device memory TCP TX, XFS 대형 atomic writes, EXT4 large folio
6.172025-09-28CPU 버그 완화 선택 간소화(mitigations= 통합)
6.182025-11-30SLUB sheaves (per-CPU 캐싱), dm-pcache (persistent memory 캐시), PSP 암호화, AccECN(TCP), UDP RX 50% 개선, BPF 서명 프로그램, Swap Table Phase I (최대 20% 처리량 향상), longterm
6.192026-02-08listns() 시스템 콜, Live Update Orchestrator (kexec 기반 라이브 커널 업데이트), PCIe 링크 암호화, Intel LASS, ARM MPAM, EXT4 대형 블록 지원 (50% 쓰기 성능 향상), Btrfs 비동기 체크섬 (+15% 처리량), Color Pipeline API (HDR), io_uring mixed SQE/zcrx, SFrame 스택 언와인딩, 6.x 마지막 메이저 (LTS 아님)
7.02026-04-12Rust stable (실험 종료), sched_ext 정식 통합, XFS 자가 복구, AccECN, Wi-Fi 8/UHR 초기, ML-DSA 포스트 양자 서명, Swap Phase II, ZRAM 압축 writeback, ARM 64-byte atomic, Intel Nova Lake, AMD EPYC 5 KVM, AI 코딩 문서화, 스레드 생성 10~16% 가속
PREEMPT_RT 통합 (6.12): 약 20년간 out-of-tree 패치로 유지되던 실시간(RT) 스케줄링 지원이 드디어 메인라인에 완전히 통합되었습니다. 이는 산업용 임베디드, 로봇, 자동차, 오디오 등 실시간 요구사항이 있는 분야에서 큰 의미를 갖습니다.

7.x -- 새로운 시대

7.0 (2026년 4월 12일)

6.19 이후 버전 번호가 7.0으로 점프한 릴리즈입니다. Linus Torvalds의 관례대로 마이너 번호가 19에 도달하면 메이저 번호를 올리는 방식이며, 기술적 단절(breaking change)은 없습니다. 7.0은 Rust의 실험 딱지 제거, sched_ext 정식 통합, XFS 자가 복구 등 여러 장기 프로젝트의 완성을 포함합니다.

핵심 변경사항

성능 개선

하드웨어 지원

네트워킹 및 보안

파일시스템

버전 번호 의미: 7.0은 기술적 단절이 아닌 단순 번호 규칙입니다. Linus는 마이너 번호가 커지면 "손가락과 발가락 수를 넘어서 숫자가 커지는 것이 싫다"는 이유로 메이저 번호를 올립니다. 3.0(2.6.39 → 3.0), 4.0(3.19 → 4.0), 5.0(4.20 → 5.0), 6.0(5.19 → 6.0)도 동일한 패턴이었습니다.
최신성 기준일: 이 문서의 버전 상태 표기는 2026-04-21 기준이며, kernel.org 공개 데이터 기준으로 mainline 7.0 (2026-04-12 출시), stable 6.19.13 (2026-04-16 게시), 유지 중인 longterm 6.18 / 6.12 / 6.6 / 6.1 / 5.15 / 5.10입니다. 6.19는 regular stable로 다음 메인라인 출시 후 업데이트가 마무리되는 계열입니다.

스케줄러 변천사

리눅스 커널의 프로세스 스케줄러는 워크로드 변화에 맞춰 꾸준히 진화해왔습니다. 스케줄러 변천사는 커널 설계 철학의 변화를 가장 잘 보여주는 지표입니다.

리눅스 스케줄러 진화 초기 스케줄러 0.01~2.4 O(n) 순차 탐색 O(1) 스케줄러 2.6.0 (2003) Ingo Molnar CFS 2.6.23 (2007) Red-Black Tree EEVDF 6.6 (2023) Eligible/Deadline sched_ext 6.11 (2024) BPF 확장 스케줄러별 핵심 특성 초기: 런큐를 순차 탐색하여 가장 높은 우선순위 프로세스 선택, 프로세스 수에 비례하는 O(n) 비용 O(1): 비트맵 기반 우선순위 큐, 프로세스 수와 무관한 상수 시간 선택, 대화형 판별 휴리스틱 CFS: vruntime 기반 공정 스케줄링, Red-Black Tree, 가중치(nice)로 CPU 시간 비율 조정 EEVDF: Eligible/Virtual Deadline 기반, CFS의 공정성 + 지연시간 보장, lag 기반 선택 sched_ext: BPF 프로그램으로 스케줄링 정책을 런타임에 교체, 워크로드별 최적화 가능 PREEMPT_RT (6.12): 모든 스핀락을 RT-mutex로 대체, 결정적 지연시간 보장 Lazy preemption (6.13): voluntary preemption과 full preemption의 중간 모델
스케줄러커널 버전알고리즘시간 복잡도핵심 특성
초기0.01~2.4순차 탐색O(n)단순, 프로세스 수 증가 시 성능 저하
O(1)2.6.0비트맵(Bitmap) + 큐O(1)상수 시간 선택, 대화형 휴리스틱
CFS2.6.23Red-Black TreeO(log n)공정성(Fairness) 보장, vruntime 기반
EEVDF6.6Augmented RB-TreeO(log n)지연(Latency)시간 보장, 공정성 유지
sched_ext6.11BPF 정의정책 의존런타임 교체 가능

VCS(버전 관리 시스템) 변천사

리눅스 커널의 소스 코드 관리 방식은 프로젝트 규모의 성장과 함께 극적으로 변화해왔습니다. VCS 변천사는 오픈소스 개발 방법론의 진화를 직접적으로 반영합니다.

커널 소스 관리 시스템 변천 Tarball + 패치 1991 ~ 2002 FTP/메일링 리스트 BitKeeper 2002 ~ 2005 분산 VCS (상용) Git 2005 ~ 현재 Linus가 직접 개발 Git + Forge 2010s ~ 현재 GitHub/GitLab 미러 BitKeeper -> Git 전환 (2005) BitMover사가 무료 라이선스를 철회하면서 Linus는 2주 만에 Git을 작성 첫 Git 커밋: 2005-04-16 "Initial revision of 'git'" (Linus Torvalds) 2005-06-17: Linux 2.6.12가 Git으로 관리된 첫 번째 커널 릴리즈 Git은 이후 전 세계에서 가장 널리 사용되는 VCS가 되었으며, GitHub/GitLab 등의 기반이 됨 현재 커널 Git 저장소: 100만+ 커밋, 2만+ 기여자 (git.kernel.org)
시기관리 방식특성한계
1991~2002Tarball + 메일 패치Linus가 수작업 병합확장성 한계, 병합 충돌 관리 어려움
2002~2005BitKeeper (상용)분산 VCS, 효율적 병합라이선스 분쟁, 커뮤니티 갈등
2005~현재Git (오픈소스)Linus 직접 개발, SHA-1 해시(Hash), 분산없음 (사실상 표준)
# 커널 Git 저장소 통계 확인

# 전체 커밋 수
git rev-list --count HEAD

# 기여자 수
git shortlog -sn | wc -l

# 최근 릴리즈 태그
git tag --sort=-v:refname | head -10

# 특정 릴리즈 간 변경 통계
git diff --stat v6.1..v6.6 | tail -1

# 릴리즈별 커밋 수
git rev-list --count v6.5..v6.6
Git 탄생 비화: Linus는 BitKeeper의 무료 라이선스가 철회된 후, 기존의 어떤 VCS도 커널 개발의 요구사항(성능, 분산, 무결성(Integrity))을 충족하지 못한다고 판단했습니다. 그는 2005년 4월 3일에 Git 개발을 시작했고, 4월 16일에 첫 커밋을 생성했습니다. 불과 2주 만의 일입니다.

커널 개발 프로세스

릴리즈 사이클

리눅스 커널은 약 9~10주 주기로 새 버전을 릴리즈합니다. 각 사이클은 다음 단계로 구성됩니다:

리눅스 커널 릴리즈 사이클 (~9~10주) Merge Window ~2주 새 기능 병합 기간 Release Candidates (rc1 ~ rc7) ~7주 (매주 rc 릴리즈) 버그 수정만 허용 Final Release v6.X 안정 릴리즈 릴리즈 사이클 상세 Merge Window: 서브시스템 메인테이너가 준비한 pull request를 Linus가 병합 rc1: merge window 종료 시점, 이후 버그 수정만 허용 rc2~rc7: 매주 일요일 릴리즈, 리그레션 수정에 집중 Final: rc가 충분히 안정적이면 최종 릴리즈 (보통 rc7~rc8 후) 릴리즈 직후 다음 merge window가 즉시 열림 -> 사이클 반복
단계기간허용 사항설명
Merge Window~2주새 기능 + 버그 수정서브시스템 메인테이너가 준비한 변경사항을 Linus의 트리에 병합
rc1merge window 종료 시버그 수정만merge window 종료 선언, 안정화 시작
rc2 ~ rc7~7주 (매주)리그레션 수정만Release Candidate, 매주 일요일 릴리즈
Final Release1일-마지막 rc가 충분히 안정적이면 최종 릴리즈

Stable/LTS 프로세스

LTS (Long Term Support) 정책

매년 1~2개의 릴리즈가 LTS로 지정되어 장기 지원을 받습니다. 일반 릴리즈가 다음 버전 출시까지(약 2~3개월)만 지원되는 것과 달리, LTS는 최소 2년에서 최대 6년까지 보안 및 중요 버그 수정 패치를 받습니다.

Stable/LTS 릴리즈 프로세스 Mainline (Linus 트리): v6.18 -> v6.19 -> v7.0 -> v7.1 ... Stable (Greg KH): v6.19.1 -> v6.19.13 -> (다음 메인라인 후 종료) Longterm 예: v6.18.1 -> v6.18.2 -> ... -> v6.18.23+ (2~6년 지원) backport LTS backport 현재 유지되는 LTS 커널 (2026-04-16 기준) 6.18.x (2025-11 ~): 최신 longterm, EOL 2028-12 (연장) 6.12.x (2024-11 ~): PREEMPT_RT 포함, EOL 2028-12 (연장) 6.6.x (2023-10 ~): EEVDF 스케줄러, EOL 2027-12 (연장) 6.1.x (2022-12 ~): Rust 지원, MGLRU, EOL 2026~2028 5.15.x (2021-10 ~): NTFS3, DAMON, EOL 2026-12 5.10.x (2020-12 ~): Static calls, Android GKI, EOL 2026-12
LTS 버전릴리즈일예상 EOL주요 사용처
6.182025-112028-12 (연장)최신 longterm, 신규 장기 유지보수 기준점
6.122024-112028-12 (연장)PREEMPT_RT, 임베디드/서버, RT 요구 환경
6.62023-102027-12 (연장)Debian 13, Ubuntu 24.04
6.12022-122026~2028Debian 12, 범용 서버
5.152021-102026-12Ubuntu 22.04, 임베디드
5.102020-122026-12Android GKI, 임베디드

Stable 패치 선정 기준

stable 트리에 백포트되는 패치는 엄격한 기준을 따릅니다:

# stable 패치 선정 기준 (Documentation/process/stable-kernel-rules.rst)

1. 메인라인에 이미 머지된 패치여야 합니다
2. 실제 버그를 수정하거나 보안 문제를 해결해야 합니다
3. 100줄 이하의 작은 패치여야 합니다 (예외 가능)
4. 명확한 테스트를 거쳐야 합니다
5. Cc: stable@vger.kernel.org 태그가 있어야 합니다

# 패치에 stable 태그 추가 방법:
Cc: stable@vger.kernel.org
# 또는 특정 버전 지정:
Cc: <stable@vger.kernel.org> # v5.10+
Stable 메인테이너: Greg Kroah-Hartman이 stable 트리의 주 관리자이며, Sasha Levin이 보조합니다. 이들은 매주 수십 개의 패치를 선별하여 stable 릴리즈에 포함시킵니다. 자동화된 봇(AUTOSEL)이 메인라인 패치 중 stable 후보를 자동으로 선별하기도 합니다.

커널 거버넌스

서브시스템 메인테이너 구조

리눅스 커널은 계층적 메인테이너 구조로 관리됩니다. 이 구조는 "신뢰의 사슬(web of trust)"이라고도 불립니다:

커널 메인테이너 계층 구조 Linus Torvalds 최상위 메인테이너 네트워킹 David Miller 메모리 관리 Andrew Morton 파일시스템 다수 FS 메인테이너 드라이버 Greg KH 등 스케줄러 Ingo Molnar 리뷰어 / 기여자 (전 세계 수천 명) 패치 흐름 개발자 -> 메일링 리스트(LKML) -> 서브시스템 메인테이너 리뷰 -> 서브시스템 트리에 적용 -> merge window 기간에 서브시스템 메인테이너가 Linus에게 pull request -> 메인라인 병합
# MAINTAINERS 파일 활용법

# 특정 파일의 메인테이너 확인
scripts/get_maintainer.pl -f drivers/net/dsa/mv88e6xxx/chip.c

# MAINTAINERS 엔트리 검색
grep -A 10 "DSA" MAINTAINERS

# 패치 제출 시 수신자 자동 확인
scripts/get_maintainer.pl 0001-fix-bug.patch
참고: MAINTAINERS 파일에는 수천 개의 엔트리가 등록되어 있으며, 매 릴리즈마다 대규모 개발자 집단이 패치 리뷰와 병합에 참여합니다.

패치 제출 절차

# 패치 작성 및 제출 절차

# 1. 기능 브랜치 생성
git checkout -b fix/my-bug-fix origin/master

# 2. 코드 수정 및 커밋
git add drivers/net/dsa/my_fix.c
git commit -s  # Signed-off-by: 자동 추가

# 3. 커밋 메시지 형식
# net: dsa: fix source port decode for multichip
#
# When using multichip cascade topology, the source
# device ID was not properly extracted from the DSA
# tag, causing packets to be delivered to wrong ports.
#
# Fixes: abc1234 ("net: dsa: add multichip support")
# Cc: stable@vger.kernel.org
# Signed-off-by: Developer Name <dev@example.com>

# 4. 패치 형식 검사
scripts/checkpatch.pl --strict 0001-*.patch

# 5. 메인테이너 확인
scripts/get_maintainer.pl 0001-*.patch

# 6. 패치 발송
git send-email --to=maintainer@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    0001-*.patch
Code of Conduct: 2018년 리눅스 커널은 Contributor Covenant 기반의 행동 강령(Code of Conduct)을 채택했습니다. 이는 커뮤니티 참여의 문턱을 낮추고, 건전한 협업 환경을 조성하기 위한 것입니다.

커널 규모 변화

리눅스 커널의 소스 코드 규모는 약 30년간 꾸준히 성장해왔습니다. 아래는 주요 버전별 대략적인 코드 라인 수(LOC, drivers 포함)입니다:

리눅스 커널 코드베이스 성장 (LOC) LOC 연도 0 5M 10M 20M 30M 0.01 1991 1.0 1994 2.0 1996 2.4 2001 2.6.0 2003 2.6.32 2009 3.0 2011 4.0 2015 5.0 2019 6.0 2022 6.1 2022
버전연도코드 라인 수 (약)파일 수 (약)디렉토리 비중
0.01199110,00088kernel/ 40%
1.01994176,000561drivers/ 30%
2.01996780,0002,100drivers/ 40%
2.4.020013,800,0008,200drivers/ 50%
2.6.020035,900,00015,000drivers/ 55%
2.6.32200912,600,00028,000drivers/ 60%
3.0201114,600,00037,000drivers/ 62%
4.0201519,500,00049,000drivers/ 65%
5.0201926,100,00063,000drivers/ 67%
6.0202230,400,00074,000drivers/ 68%
6.1202231,000,00076,000drivers/ 68%
6.12202433,500,00082,000drivers/ 69%
7.0202636,000,00088,000drivers/ 69%, rust/ 등장

코드 증가의 대부분은 디바이스 드라이버(drivers/ 디렉토리)가 차지합니다. 전체 코드의 약 60~70%가 드라이버 코드이며, 커널 핵심(코어 서브시스템)은 상대적으로 적은 비율을 차지합니다.

코드 규모 확인: 현재 커널 소스의 코드 라인 수는 다음 명령으로 확인할 수 있습니다:
# 전체 코드 라인 수
find . -name '*.[chS]' -not -path './tools/*' | xargs wc -l

# drivers/ 디렉토리 비율
find drivers/ -name '*.[chS]' | xargs wc -l

# 디렉토리별 코드 비중
for dir in drivers kernel mm net fs arch; do
    echo "$dir: $(find $dir -name '*.[chS]' | xargs cat | wc -l) lines"
done

# 릴리즈 간 변경 통계
git diff --stat v6.1..v6.6 | tail -1

개발 통계

리눅스 커널은 세계에서 가장 활발하게 개발되는 오픈소스 프로젝트 중 하나입니다. 매 릴리즈마다 수천 명의 개발자가 수만 건의 패치를 기여합니다.

통계 항목6.x~7.0 릴리즈 기준 (약)비고
릴리즈당 커밋 수15,000~18,000rc 포함, 6.12(LTS)가 18.2K로 최대
릴리즈당 기여자 수1,800~2,200Signed-off-by 기준
릴리즈당 기여 회사 수200~250Linux Foundation 보고서 기준
하루 평균 커밋약 200~250merge window 기간 더 높음
하루 평균 변경 라인약 10,000+추가+삭제 합산
전체 기여자 누적21,000+git log 기준 (7.0 기준)
전체 커밋 누적1,200,000+git rev-list 기준 (7.0 기준)
전체 코드 라인~36,000,0007.0 기준, drivers/ 포함

주요 기여 조직

조직기여 비율 (약)주요 기여 영역
Intel10~12%x86, GPU(i915), 네트워킹, 보안
Red Hat8~10%파일시스템, 가상화(Virtualization), 네트워킹
Google6~8%Android, BPF, 메모리 관리
Linaro4~6%ARM, 전원 관리(Power Management), 부트
SUSE3~5%파일시스템(Btrfs), 보안
AMD3~5%AMDGPU, 프로세서 지원
Meta2~4%BPF, 네트워킹, sched_ext
Huawei2~4%파일시스템, 스케줄링, ARM
개인 기여자10~15%다양한 영역
Linux Foundation 연례 보고서: Linux Foundation은 매년 "Who Writes Linux" 또는 "Linux Kernel Development Report"를 발간하여 기여자 통계, 회사별 기여 비율, 개발 프로세스 현황을 공개합니다.

아키텍처 지원 역사

리눅스 커널은 i386 단일 아키텍처에서 시작하여 현재 30개 이상의 하드웨어 아키텍처를 지원합니다.

아키텍처최초 지원 버전현재 상태주요 사용처
x86 (i386)0.01 (1991)활발데스크탑, 서버
x86_64 (AMD64)2.4.x (2001)활발 (주력)서버, 클라우드
Alpha1.2 (1995)제거됨 (6.x)역사적
SPARC1.2 (1995)유지보수레거시 서버
MIPS1.2 (1995)유지보수네트워크 장비, 임베디드
ARM (32-bit)2.0 (1996)유지보수구형 임베디드
PowerPC2.0 (1996)활발서버 (IBM Power)
ARM64 (AArch64)3.7 (2012)활발 (주력)모바일, 서버, Mac
RISC-V4.15 (2018)활발 (성장)임베디드, 학술
LoongArch5.19 (2022)활발Loongson 프로세서
제거된 아키텍처: 유지보수 기여자가 없는 오래된 아키텍처는 주기적으로 커널에서 제거됩니다. 최근에 제거된 아키텍처로는 Itanium(ia64, 6.7에서 제거), 일부 레거시 ARM 플랫폼 등이 있습니다.

보안 관련 주요 사건

리눅스 커널의 보안은 하드웨어 취약점 발견, LSM 프레임워크 발전, 커널 자체 방어 기능 강화를 통해 지속적으로 발전해왔습니다.

연도사건커널 대응영향
2001LSM(Linux Security Module) 프레임워크SELinux, AppArmor 등 플러그인 보안다양한 보안 정책 지원
2009SELinux 완전 통합NSA 개발 강제 접근 제어(MAC)서버 보안 표준
2012seccomp-bpf (3.5)BPF 기반 시스템 콜 필터링컨테이너 보안 기반
2016Dirty COW (CVE-2016-5195)copy-on-write 레이스 컨디션 수정권한 상승 취약점
2018Meltdown/SpectreKPTI, Retpoline, IBRS/IBPBCPU 하드웨어 취약점 시대 개막
2019Lockdown LSM (5.4)커널 무결성 보호Secure Boot 연동 강화
2021Landlock LSM (5.13)비특권 사용자 샌드박싱프로세스별 접근 제어(Access Control)
2022Retbleedreturn speculation 완화추가 CPU 취약점 대응
2024Intel shadow stack (6.6)하드웨어 기반 ROP 방어커널 제어 흐름 무결성
# 현재 커널의 보안 기능 확인

# LSM 모듈 확인
cat /sys/kernel/security/lsm

# KPTI 상태
dmesg | grep -i "page table isolation"

# Spectre/Meltdown 완화 상태
cat /sys/devices/system/cpu/vulnerabilities/*

# seccomp 상태
grep Seccomp /proc/self/status

# Lockdown 상태
cat /sys/kernel/security/lockdown

배포판과 커널 버전 관계

주요 Linux 배포판은 메인라인 커널을 기반으로 자체 패치를 적용하여 배포합니다. 배포판 선택 시 커널 버전을 확인하는 것은 하드웨어 호환성과 기능 지원에 직접적인 영향을 미칩니다.

배포판기반 커널지원 기간특성
RHEL 73.10~2024 (ELS)대규모 백포트, ABI 안정성
RHEL 84.18~2029BPF, TLS offload
RHEL 95.14~2032core scheduling, io_uring
Ubuntu 20.04 LTS5.4~2030 (ESM)io_uring, WireGuard 백포트
Ubuntu 22.04 LTS5.15~2032 (ESM)NTFS3, DAMON
Ubuntu 24.04 LTS6.8~2034 (ESM)Intel FRED, Rust 지원
Debian 12 (Bookworm)6.1~2028 (LTS)MGLRU, Rust
Debian 13 (Trixie)6.6+~2030 (예상)EEVDF
SLES 15 SP55.14~2031LTSS 추가 가능
Android 14 GKI5.15/6.1기기 의존Generic Kernel Image
Fedora (최신)최신 stable~13개월빠른 업데이트
Arch Linux최신 stable롤링항상 최신
# 현재 커널 버전 확인
uname -r

# 상세 빌드 정보
cat /proc/version

# 배포판 커널 설정 확인
ls /boot/config-$(uname -r)
zcat /proc/config.gz 2>/dev/null || cat /boot/config-$(uname -r)

# 배포판별 커널 패키지 확인
# Debian/Ubuntu:
dpkg -l | grep linux-image
# RHEL/CentOS:
rpm -qa | grep kernel
# Arch:
pacman -Q | grep linux
배포판 커널 vs 메인라인: 배포판 커널은 수천 개의 백포트 패치가 적용되어 있어, 단순히 uname -r 버전만으로 기능 지원 여부를 판단하면 안 됩니다. 예를 들어 RHEL 7의 3.10 커널에는 4.x/5.x에서 백포트된 수천 개의 패치가 포함되어 있습니다.

리눅스 커널의 라이선스 역사는 오픈소스 소프트웨어 법률의 발전과 밀접하게 연관되어 있습니다.

시기사건의미
1991자체 라이선스 (상업 배포 금지)초기 배포 제한
1992GPLv2 전환자유로운 배포, 개발자 참여 폭발
2003~2007SCO vs IBM 소송Linux에 Unix 코드 포함 주장 -> 패소
2006GPLv3 발표, Linus 거부Linux는 GPLv2 유지 (DRM 조항 반대)
2017SPDX 라이선스 태그 도입모든 소스 파일에 기계 읽기 가능한 라이선스 표시
2018Contributor Covenant 채택행동 강령(Code of Conduct) 공식화
2022Rust 코드 듀얼 라이선스GPL-2.0 OR Apache-2.0 (Rust 바인딩)
/* SPDX 라이선스 태그 예시 (모든 커널 소스 파일 첫 줄) */
// SPDX-License-Identifier: GPL-2.0-only
/* 또는 */
// SPDX-License-Identifier: GPL-2.0-or-later
/* Rust 바인딩의 경우 */
// SPDX-License-Identifier: GPL-2.0 OR Apache-2.0
GPLv2 vs GPLv3: Linus Torvalds는 GPLv3의 "Tivoization" 금지 조항(하드웨어에서 수정된 소프트웨어 실행을 막는 것을 금지)에 반대하여 Linux 커널을 GPLv2로 유지했습니다. 이 결정은 임베디드/모바일 산업에서 Linux 채택을 촉진하는 데 기여한 평가와, 사용자 자유를 제한하는 비판이 공존합니다.

Rust in Kernel 역사

C 언어로만 작성되던 리눅스 커널에 Rust가 도입된 것은 30년 역사상 가장 큰 언어 변화입니다.

시기사건의미
2020-07Rust for Linux RFC 제안Miguel Ojeda의 최초 제안
2021-04RFC v2 패치 시리즈커뮤니티 피드백 반영
2022-106.0: Rust 인프라 초기 도입CONFIG_RUST 빌드 옵션
2022-126.1: 공식 통합Rust 커널 모듈 작성 가능
2023-046.3: Rust alloc 모듈커널 메모리 할당자(Memory Allocator) 바인딩
2024-056.9: 첫 Rust 파일시스템(PuzzleFS)실용적 Rust 드라이버
2025-016.13: Rust trace events트레이싱 연동
2025-066.15: Rust hrtimer/ARMv7타이머(Timer)/아키텍처 확장
2025-116.18: Rust debugfs, sg_table, request_irq, maple tree디버그/IRQ/자료구조 바인딩 확대
2026-026.19: Rust PWM, I2C 추상화, bounded integer주변장치 드라이버 본격 지원
2026-047.0: Rust stable (실험 종료)C와 동등한 1급 언어로 공식 승격
# Rust 커널 빌드 설정

# Rust 도구 체인 설치 확인
rustup show
rustc --version
bindgen --version

# 커널 Rust 지원 확인
make rustavailable

# Rust 모듈 빌드
make menuconfig  # General setup -> Rust support 활성화
make -j$(nproc)
/* 최소 Rust 커널 모듈 예시 */
// SPDX-License-Identifier: GPL-2.0

//! Rust 최소 커널 모듈

use kernel::prelude::*;

module! {
    type: RustMinimal,
    name: "rust_minimal",
    author: "Developer",
    description: "Rust minimal module",
    license: "GPL",
}

struct RustMinimal;

impl kernel::Module for RustMinimal {
    fn init(_module: &ThisModule) -> Result<Self> {
        pr_info!("Rust minimal module loaded\n");
        Ok(RustMinimal)
    }
}

impl Drop for RustMinimal {
    fn drop(&mut self) {
        pr_info!("Rust minimal module unloaded\n");
    }
}
Rust 도입의 여정: Rust의 커널 도입은 메모리 안전성 향상이라는 명확한 이점이 있지만, 기존 C 개발자들의 학습 곡선, 빌드 의존성 증가, 커뮤니티 분열 우려 등 논쟁이 있었습니다. 7.0(2026-04)에서 공식적으로 실험 딱지가 제거되어 Rust는 이제 C와 동등한 1급 언어로 인정됩니다. 단, 각 서브시스템 메인테이너가 Rust 코드 수용 여부를 결정하므로, 전면 전환이 아닌 점진적 확산 경로를 따릅니다. Linus는 Rust가 "커널의 유일한 언어가 되는 것이 아니라, C와 공존하는 것"이라고 강조했습니다.

서브시스템 메인테이너 트리

리눅스 커널의 개발은 수십 개의 서브시스템 트리로 분산되어 진행됩니다. 각 서브시스템 메인테이너는 자신의 Git 트리에서 패치를 관리하고, merge window 기간에 Linus에게 pull request를 보냅니다.

서브시스템 메인테이너 트리 구조 Linus 트리 (mainline) git.kernel.org/torvalds/linux.git net-next 네트워킹 (신기능) David Miller, Jakub K. net 네트워킹 (버그수정) David Miller mm 메모리 관리 Andrew Morton tip x86, 스케줄러, 타이머 Ingo Molnar, Thomas G. driver-core/staging 드라이버 코어, USB Greg KH bpf-next / bpf eBPF 서브시스템 Alexei S., Daniel B. block 블록 I/O Jens Axboe drm GPU/디스플레이 Dave Airlie 등 sound ALSA/ASoC Takashi Iwai security LSM, 보안 Paul Moore 등 주요 서브시스템 트리 목록 net-next/net: 네트워킹 전체 (프로토콜, 드라이버, BPF 연동) mm: 메모리 관리, SLUB, 페이지 캐시, OOM, swap tip: x86 아키텍처, 스케줄러(CFS/EEVDF), IRQ, 타이머, locking block: 블록 I/O 스택, io_uring, NVMe, SCSI drm: GPU 드라이버 (i915, amdgpu, nouveau), DRM/KMS bpf-next/bpf: eBPF 코어, 검증기, JIT, libbpf kvm: KVM 하이퍼바이저, VFIO, virtio rust: Rust 인프라, 바인딩, 드라이버
서브시스템 트리주 관리자Git URL범위
net-nextDavid Miller, Jakub Kicinskigit.kernel.org/.../net-next.git네트워킹 신기능
netDavid Millergit.kernel.org/.../net.git네트워킹 버그 수정
mmAndrew Mortongit.kernel.org/.../mm.git메모리 관리
tipIngo Molnar, Thomas Gleixnergit.kernel.org/.../tip.gitx86, 스케줄러, 잠금
blockJens Axboegit.kernel.org/.../block.git블록 I/O
bpf-nextAlexei Starovoitov, Daniel Borkmanngit.kernel.org/.../bpf-next.giteBPF
drmDave Airlie 외git.kernel.org/.../drm.gitGPU/디스플레이
kvmPaolo Bonzinigit.kernel.org/.../kvm.git가상화
driver-coreGreg Kroah-Hartmangit.kernel.org/.../driver-core.git드라이버 코어, USB
rustMiguel Ojedagit.kernel.org/.../rust.gitRust 인프라
soundTakashi Iwaigit.kernel.org/.../sound.gitALSA/ASoC
securityPaul Moore 외git.kernel.org/.../security.gitLSM, SELinux
arm-socArnd Bergmann, Olof Johanssongit.kernel.org/.../arm-soc.gitARM SoC
# 서브시스템 트리 활용

# 특정 서브시스템 트리 추가
git remote add net-next https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git
git fetch net-next

# 서브시스템 트리의 최신 패치 확인
git log --oneline net-next/main -20

# 서브시스템별 merge window 기여 확인
git log --oneline --merges v6.18..v6.19 | head -30

# 특정 서브시스템의 패치 수 통계
git log --oneline v6.18..v6.19 -- net/ drivers/net/ | wc -l
git log --oneline v6.18..v6.19 -- mm/ | wc -l
git log --oneline v6.18..v6.19 -- drivers/gpu/ | wc -l
linux-next 트리: Stephen Rothwell이 관리하는 linux-next 트리는 다음 merge window에 포함될 모든 서브시스템 트리의 통합 빌드입니다. 매일 업데이트되며, 서브시스템 간 충돌을 사전에 감지하는 역할을 합니다.

릴리즈별 주요 기능 상세

이 섹션에서는 커널 역사에서 특히 영향력이 컸던 기능들의 도입 배경, 설계 결정, 이후 발전 과정을 상세히 다룹니다.

cgroups (2.6.24, 2008)

Control Groups는 Google 엔지니어들(Paul Menage, Rohit Seth)이 개발한 프로세스 자원 제어 메커니즘입니다. 프로세스 그룹에 CPU, 메모리, I/O, 네트워크 대역폭(Bandwidth) 등의 자원 한도를 설정할 수 있습니다.

eBPF (3.18~현재)

extended Berkeley Packet Filter는 커널 내에서 안전하게 실행되는 사용자 정의 프로그램 프레임워크입니다. 원래 패킷(Packet) 필터링용이었으나, 현재는 트레이싱, 보안, 네트워킹, 스케줄링 등 거의 모든 커널 서브시스템에서 사용됩니다.

버전eBPF 기능의의
3.18bpf() 시스템 콜 도입사용자 공간에서 BPF 프로그램 로드
4.1kprobes 연동커널 함수 트레이싱
4.7cgroup BPFcgroup 단위 네트워크 정책
4.9XDP (eXpress Data Path)NIC 드라이버 레벨 패킷 처리
4.15BPF Type Format (BTF)타입 정보 기반 이식성
5.2BPF 트램폴린fentry/fexit 고성능 트레이싱
5.8BPF 링 버퍼고성능 이벤트 전달
6.11sched_extBPF 기반 스케줄러 교체

io_uring (5.1~현재)

Jens Axboe가 개발한 io_uring은 비동기 I/O의 혁명적 개선입니다. 기존 aio(Linux AIO)와 epoll의 한계를 극복하기 위해, 사용자-커널 간 공유 링 버퍼로 시스템 콜 오버헤드(Overhead)를 최소화했습니다.

PREEMPT_RT (6.12, 2024)

약 20년간 out-of-tree로 유지된 실시간 스케줄링 패치가 드디어 메인라인에 통합되었습니다. Thomas Gleixner와 Peter Zijlstra의 주도로, 모든 스핀락(Spinlock)을 RT-mutex로 대체하고 인터럽트(Interrupt)를 스레드화하여 결정적(deterministic) 지연시간을 보장합니다.

시기PREEMPT_RT 이정표상세
2004PREEMPT_RT 패치 시작Ingo Molnar의 최초 패치
2006-rt 패치 시리즈 안정화산업용 환경에서 채택 시작
2015Linux Foundation RT 프로젝트기업 지원 시작
20246.12: 메인라인 통합CONFIG_PREEMPT_RT 공식 지원
# PREEMPT_RT 확인
uname -a | grep -i rt
cat /sys/kernel/realtime

# preemption 모델 확인
cat /sys/kernel/debug/sched/preempt

# cyclictest로 실시간 지연시간 측정
cyclictest -t1 -p 80 -n -i 1000 -l 10000

주제별 변경 이력 모음

개별 문서마다 장문의 버전별 변경 이력을 반복해서 두면, 동일한 릴리즈 정보를 여러 곳에서 중복 관리해야 합니다. 이 섹션은 그런 중복을 줄이기 위해 주요 주제의 연대기성 변경 이력을 한곳에 모아 정리한 것입니다. 각 문서에서는 현재 동작을 이해하는 데 필요한 버전 차이만 간단히 남기고, 상세한 연혁은 여기에서 이어서 확인하면 됩니다.

문서 편집 원칙: 개별 페이지에는 API 호환성, 동작 변화, 포팅과 디버깅에 직접 필요한 분기점만 남기고, "버전별로 무엇이 들어왔는가" 같은 연대기성 changelog는 이 페이지에 집중하는 구성을 권장합니다.

Context Switching 관련 변경 이력

Context Switching 문서에서 자주 참고하는 최근 변경 이력을 간단히 모으면 다음과 같습니다.

커널주요 변경 사항실무상 의미
6.13PREEMPT_LAZY 도입비실시간 태스크의 지연 선점 정책이 추가되어 cond_resched()와의 관계를 다시 이해해야 합니다.
6.14x86 mm_cpumask 지연 갱신switch_mm_irqs_off() 경합이 줄어 멀티스레드 워크로드의 TLB 플러시 확장성이 개선됩니다.
6.14per-NUMA idle cpumask 분리다음 CPU 선택 과정의 지역성이 개선되어 원격 NUMA 캐시 오염이 줄어듭니다.
6.15CONFIG_SCHED_DEBUG 조건부 컴파일 제거별도 디버그 전용 커널 없이도 스케줄러 통계와 진단 지점을 관찰하기 쉬워집니다.
6.15sched_ext 토폴로지 인식 유휴 CPU 선택 개선확장 스케줄러 사용 시 코어·소켓·NUMA 계층을 더 잘 반영합니다.

Wireless 관련 변경 이력

Wireless 문서의 긴 버전표는 무선 세대 전환과 커널 지원 진화를 이해하는 데 유용하지만, 실제로는 연대기 정보의 비중이 큽니다. 핵심 흐름은 아래 표로 한곳에 정리합니다.

커널무선 서브시스템 변경드라이버 변화보안/프로토콜
4.0 (2015)mac80211 TDLS 지원 강화ath10k VHT MU-MIMO-
4.14 (2017)cfg80211 Indoor/Outdoor 구분mt76 초기 코드 병합-
4.17 (2018)cfg80211 SAE 인증 지원iwlwifi HE 초기 지원WPA3-SAE 기반
4.20 (2018)cfg80211 OWE 지원ath10k CT 펌웨어 개선OWE (Enhanced Open)
5.1 (2019)mac80211 HE (802.11ax) 기본 지원-TWT 기초
5.6 (2020)mac80211 HE MU-EDCA, BSS Coloringath11k 초기 코드 병합PMF 필수화 경향
5.12 (2021)NL80211_BAND_6GHZ, 6 GHz 채널 정의ath11k 6 GHz 지원6 GHz 전력 등급
5.18 (2022)EHT 기본 구조체 추가rtw89 Wi-Fi 6E-
6.1 (2022)320 MHz 채널, EHT Capabilities IEath12k 초기 코드EHT 보안 확장
6.2 (2023)MLO 프레임워크(ieee80211_vif.link[])iwlwifi BE200 코드MLO 보안 연동
6.5 (2023)TID-to-Link Mapping, 링크 전환 APIath12k WCN7850, mt7996-
6.8 (2024)AFC 프레임워크, EMLSR 기초iwlwifi MLO STAAFC 인증
6.10 (2024)MLO 로밍, Multi-RU 개선mt7925 클라이언트 Wi-Fi 7-
6.12+ (2024)EMLSR/EMLMR, 4096-QAM 완전 지원전 드라이버 Wi-Fi 7 안정화FT-SAE 완성

Bluetooth 관련 변경 이력

Bluetooth 문서의 버전별 이력도 연대기 중심 정보이므로 이 페이지에 함께 배치합니다. Bluetooth는 LE Audio와 ISO 전송, 그리고 hci_sync.c 전환이 큰 분기점입니다.

커널주요 변경 사항
3.0Bluetooth 4.0 LE 기본 지원 추가
3.5mgmt API 도입, hciconfig/hcitool 대체 흐름 시작
3.12LE Dual Mode, Privacy 1.1 지원
3.16LE Secure Connections(Bluetooth 4.2) 지원
3.19Privacy 1.2, RPA Resolution Offloading
4.2Extended Advertising 예비 코드, LE Data Length Extension
4.8LE PHY 2M/Coded 지원(Bluetooth 5.0)
4.20Extended Advertising / Periodic Advertising 지원
5.0Mesh 지원 기반, LE Extended Scanning
5.4Advertising Sets 다중 인스턴스, hci_sync.c 리팩토링 시작
5.12MSFT Vendor Extension, mgmt Quality Report
5.13hci_sync.c 도입, HCI 요청 처리 구조 재정비 시작
5.15ISO 소켓(BTPROTO_ISO), CIS/BIS 기본 지원
5.19LC3 코덱 ID 등록, ISO Test 모드
6.0LE BIG 생성/종료, hci_request.c 제거 시작
6.2QoS 개선, ISO 소켓 안정화
6.3EATT 커널 측 지원 개선
6.5hci_sync.c 전면 전환 완료, hci_request.c 제거
6.7ISO Connected/Broadcast 안정화, 다중 CIS 지원 개선
6.8+PAwR 초기 지원
Bluetooth 구조 변화의 핵심: 5.13~6.5 구간의 hci_sync.c 전환은 단순 리팩토링이 아니라, 비동기 HCI 요청 모델을 동기화된 워크큐 기반으로 재구성한 사건입니다. 이후 ISO, Extended Advertising, LE Audio 계열 기능이 훨씬 다루기 쉬워졌습니다.

Wait/Wound Mutex 관련 변경 이력

Wait/Wound Mutex 문서는 DRM과 GPU 예약 객체 경로에 밀접하게 연결되어 있어 버전별 변화가 많지만, 긴 타임라인 자체는 이곳에 모으는 편이 문서 구조상 더 안정적입니다.

커널연도주요 변경실무상 의미
v3.112013ww_mutex 최초 도입, Wound-Wait 구현DRM modeset lock이 데드락 회피 가능한 공통 잠금 모델을 얻었습니다.
v3.172014dma_resv 전신 도입버퍼 예약과 fence 관리가 GPU 메모리 경로의 표준 패턴이 되기 시작했습니다.
v4.42016lockdep 검증 강화ww_class 혼용과 재시도 버그를 조기에 잡기 쉬워졌습니다.
v4.192018PREEMPT_RT 지원 개선RT 환경에서 우선순위 역전 완화 효과를 기대할 수 있습니다.
v5.32019Wait-Die 알고리즘 추가서브시스템 요구에 따라 Wound-Wait 외 정책 선택지가 생겼습니다.
v5.52020reservation_objectdma_resv 이름 변경신규 코드와 백포트 코드의 API 차이를 항상 확인해야 합니다.
v6.02022shared/exclusive fence → usage 기반 통합fence 추가 API가 단순해졌지만 구형 코드와의 호환 분기가 필요합니다.
v6.42023drm_exec 프레임워크 도입수동 -EDEADLK 재시도 루프보다 상위 헬퍼 사용이 사실상 표준이 됩니다.
v6.62023drm_exec 보강중복 객체와 배열 준비 처리 등 실제 드라이버 적용성이 좋아졌습니다.
v6.82024wound 전파 경로 최적화불필요한 깨우기와 경합 비용을 줄이는 방향으로 다듬어졌습니다.
v6.12+2024~AMDGPU, Xe, Nouveau의 drm_exec 채택 확대신규 GPU 드라이버는 raw ww_mutex보다 drm_exec 중심 설계를 우선 고려해야 합니다.

디버깅 도구 관련 변경 이력

디버깅 & 트러블슈팅 문서는 최신 커널의 sanitizer, drgn, RV, BPF 디버깅 흐름을 폭넓게 다루기 때문에 연대기 표가 길어지기 쉽습니다. 주요 변화는 다음과 같이 중앙에서 관리합니다.

커널핵심 변화영향
6.8KASAN stacktrace 기본값 정리, Stack Depot 개선리포트 품질과 메모리 사용량의 균형이 개선되었습니다.
6.10stack_depot_save_flags(), Generic KASAN report_async비동기 리포트 수집이 쉬워지고 호출 경로 오염이 줄었습니다.
6.12KFENCE 런타임 조정, RV 프레임워크 확장운영 중 탐지율 제어와 실시간성 검증 자동화가 쉬워졌습니다.
6.14KMSAN 초기화 검사 확장, DAMON 기반 메모리 이상 탐지 통합메모리 릭과 hot path 이상 징후를 함께 추적하기 좋아졌습니다.
6.15KMSAN s390 포팅비-x86 플랫폼에서도 최신 메모리 초기화 진단이 가능해졌습니다.
6.16HW-Tag KASAN write panic 모드, RV LTL 지원프로덕션 KASAN과 런타임 검증의 실용성이 올라갔습니다.
6.17ARMv9 MTE store-only, 보안 core dump 개선프로덕션 오버헤드를 낮추면서 메모리 태깅 디버깅을 유지할 수 있습니다.
6.18kasan.write_only, BPF 프로그램 서명 초기 지원상시 KASAN과 공급망 무결성 기반 디버깅이 강화되었습니다.

perf 관련 변경 이력

perf 문서는 툴 사용법 자체보다 최신 PMU와 언와인딩 인프라 변화 때문에 버전표가 커집니다. 릴리즈별 흐름은 아래 표로 모읍니다.

커널perf 변경의미
6.12 LTSPREEMPT_RT 메인라인 병합, perf 이벤트 RT 컨텍스트 안전성 정비vanilla 커널에서 RT 워크로드 perf 분석이 쉬워졌습니다.
6.13Intel HFI 클래스 카운터, AMD Zen 5 IBS L3 카운터최신 CPU의 클래스별 IPC와 캐시 분석 정밀도가 올라갔습니다.
6.14perf BPF 컴파일 백엔드 정식, perf record -e bpf-output:BPF 기반 분석을 perf 워크플로 안에서 직접 처리할 수 있습니다.
6.15Granite Rapids PEBS metrics, ARM SPE v1.2 stall 카운터최신 서버 마이크로아키텍처 분석이 정확해졌습니다.
6.16perf c2c의 HBM/CXL 메모리 영역 분류다중 메모리 계층의 NUMA false-sharing 분석이 쉬워졌습니다.
6.17Deferred user-space unwinder 인프라 병합사용자 공간 스택 언와인딩이 더 안전하고 저비용으로 바뀌는 기반이 마련되었습니다.
6.18 LTSAMD IBS / Intel PEBS 동기화 안정화LTS 기준 perf 워크플로의 신뢰성이 높아졌습니다.

GPU / DRM 관련 변경 이력

GPU (DRM/KMS) 문서는 2025~2026년 드라이버 머지와 가속기 확장 때문에 릴리즈 매트릭스가 커졌습니다. 주요 줄기는 다음과 같습니다.

커널GPU/Accel 주요 변경
6.10drm_panic 인프라 도입, nouveau NVK Vulkan 안정화
6.12Intel Xe 드라이버 정식 승격, amdgpu GFX12 초기 지원
6.14AMDXDNA 머지, DMEM cgroup 머지, amdgpu DRM Panic 지원
6.15Nova(Rust NVIDIA) 머지, Rockchip Rocket NPU 머지
6.16Color Pipeline API 머지, Xe2 EU stall sampling
6.17Intel Xe3 Panther Lake 안정화, Battlemage SR-IOV
6.18 LTSNova GSP RPC 경로 확장, RDNA4 성능 튜닝
6.19AMDGPU HDR 하드웨어 가속, GPU 스케줄러 성능 개선

VirtIO 관련 변경 이력

virtio / vhost 문서는 최근 릴리즈의 기능 추가를 한눈에 보는 용도로 버전표가 컸습니다. 그 정보는 중앙 문서로 옮겨 관리합니다.

커널virtio / vhost 변화
6.10virtio-fs 멀티큐, virtio-net device stats, VDUSE virtio-net 정식화
6.12vsock 성능 개선, vDPA MAC 주소 설정, balloon 신규 통계
6.13VDUSE 다중 vq group, DMA 정렬 수정
6.14~6.15VIRTIO_F_IN_ORDER 지원, packed virtqueue 기능 확장
6.16virtio_rtc, VDUSE 다중 address space
6.17~6.18vhost-net/vsock 수정, guest_memfd와 virtio 장치 상호작용 정리

Serial / TTY 관련 변경 이력

Serial/TTY 문서의 최신 동향 표 역시 연대기 정보 비중이 높습니다. 핵심 변화는 다음과 같습니다.

커널변경사항영향
6.7serial_core.c 대수술, uart_port_lock_irqsave() 헬퍼 통일PREEMPT_RT 호환성이 개선되었습니다.
6.10serial port 등록의 device-model 분할8250 계열 등록 경로가 통합되었습니다.
6.11serdev ACPI 자동 바인딩 강화x86 노트북 Bluetooth/GNSS 호환성이 좋아졌습니다.
6.138250_dw RS485 전환 지연 자동 보정산업용 UART 정확성이 올라갔습니다.
6.14Apple Silicon UART hibernate/resume 안정화Apple 노트북 콘솔 신뢰성이 높아졌습니다.
6.15n_gsm.c V.24 상태 보고 안정화모뎀 다중화 복구 시간이 크게 줄었습니다.
6.168250_pci에 Intel Lunar Lake LPSS UART 추가차세대 노트북 지원이 확대되었습니다.
6.17AMD AI300 UART, GS101 Tensor UART wakeup 지원모바일 SoC 절전과 콘솔 지원이 개선되었습니다.
6.18serdev_device_open() 동시성 race fixBluetooth 페어링 race가 줄었습니다.

Ethernet PHY / phylink 관련 변경 이력

이더넷 PHY 문서는 포팅과 드라이버 작성 관점에서 버전별 API 차이를 자주 참고하므로, 순수 연대기 표는 이곳에 모아 관리합니다.

커널phylib / phylink 주요 변경영향
4.20phylink 프레임워크 병합SFP, in-band status, fixed-link를 통합 관리하는 기반이 마련되었습니다.
5.5phylink_pcs 인터페이스 도입host PCS를 별도 객체로 분리해야 해서 MAC 드라이버 구조가 바뀌었습니다.
5.17cable_test / cable_test_tdr netlink 인터페이스케이블 진단이 표준 사용자 공간 인터페이스로 정리되었습니다.
6.1PHY LED 프레임워크PHY LED가 커널 LED 서브시스템과 통합되었습니다.
6.3phylink_pcs_neg_mode() 도입PCS 자동 협상 모드 선택이 명확해졌습니다.
6.6EEE 리워크(struct eee_config)EEE 설정이 phylink / ethtool 경로에서 더 일관되게 관리됩니다.
6.8phy_package 인프라 강화공유 PHY 패키지 관리가 개선되었습니다.
6.9Rate Matching 지원(phy_rate_matching())MAC-PHY 속도 불일치 처리가 쉬워졌습니다.
6.11PHY LED netdev 속도별 트리거속도별 LED 색상과 패턴 분리가 가능해졌습니다.
6.12PHY link topology 프레임워크하나의 netdev에 연결된 PHY / SFP / PCS를 트리 구조로 추적할 수 있게 되었습니다.
6.17lan78xx의 phylink 전환, Airoha MDIO 추가USB 이더넷과 ISP SoC 계열의 업스트림 지원이 확대되었습니다.
6.18Aquantia PHY 통합, lan865x ioctl 지원고속 PHY와 산업용 T1S 관리 경로가 정리되었습니다.
6.19MLX5 200G per-lane PCS 확장초고속 PAM4 PHY / PCS 협상 경로가 강화되었습니다.

타이머 관련 최근 변경 이력

타이머 문서는 버전 차이가 현재 동작 설명과 직접 붙어 있는 경우가 많아서 대부분의 설명을 현지 문서에 유지합니다. 다만 순수 릴리즈 흐름만 보면 다음과 같습니다.

커널주요 변화핵심 의미
6.7 ~ 6.10tmigr 계층 도입 및 안정화idle CPU 타이머 마이그레이션이 계층형 구조로 바뀌었습니다.
6.8Timer Wheel lockless next-expiry 조회NO_HZ 경로의 락 경합과 지터가 줄었습니다.
6.10deferrable timer coalescing 강화모바일/임베디드 idle wakeup 횟수가 감소했습니다.
6.12PREEMPT_RT 메인라인 병합timer softirq 스레드화와 RT 타이머 동작이 표준 커널 기준선이 되었습니다.
6.13timer_delete* / timer_shutdown* 전환 정착타이머 종료와 재무장 방지 API 사용 기준이 정리되었습니다.
6.15hrtimer_setup() API 통합, POSIX 타이머 CRIU 개선초기화 실수가 줄고 컨테이너 복원 신뢰성이 높아졌습니다.

ACPI 관련 변경 이력

ACPI 문서는 규격 자체의 역사와 최신 커널 수용 흐름이 모두 길기 때문에, 순수 연대기 정보는 이곳에 모아 관리합니다.

시기변화의미
ACPI 6.0PPTT, HMAT, IORT서버 토폴로지와 이기종 메모리 기술이 본격 표준화되었습니다.
ACPI 6.4CXL 2.0, Arm AEST / MPAM, PRMCXL과 플랫폼 런타임 메커니즘이 ACPI 표준에 깊게 들어왔습니다.
ACPI 6.5 / 6.5ALoongArch, CCEL, USB4, _DMA 정리새 아키텍처와 기밀 컴퓨팅, wake 관련 규약이 강화되었습니다.
ACPI 6.6RISC-V MADT / SRAT / IOMMU 확장, CPPC 레지스터 추가RISC-V 서버의 ACPI 부팅과 최신 전력 관리가 본격화되었습니다.
Linux 6.12ACPICA 20240827 통합RISC-V MADT 서브타입과 최신 ACPI 스펙 수용 기반이 마련되었습니다.
Linux 6.13AMD P-State 기본 드라이버, CONFIG_ACPI_EC 분리서버 전력 제어와 EC 경량화 선택지가 바뀌었습니다.
Linux 6.14acpi_os_sleep() 최적화, platform profile 다중 드라이버 바인딩resume 지연과 벤더별 전원 프로파일 처리 방식이 개선되었습니다.
Linux 6.18ACPI idle 등록 경로 회귀와 리버트초기화 경로의 민감성과 LTS 막바지 회귀 리스크를 보여 준 사례입니다.
Linux 6.19+RISC-V ACPI 부팅 경로 본격화데이터센터급 RISC-V 서버에서 DT 대신 ACPI를 선택하는 흐름이 강화되었습니다.
Linux 7.0PRMT 기반 CXL 주소 변환 활용 확대펌웨어 런타임 호출과 ACPI / CXL 결합이 더 중요해졌습니다.

VFIO / mdev 관련 변경 이력

VFIO & mdev 문서는 최근 몇 년간 IOMMUFD로의 전환이 워낙 커서 연혁 자체가 별도 축이 되었습니다. 핵심 흐름은 다음과 같습니다.

시기변화의미
6.2VFIO migration v2 프로토콜 도입디바이스 상태를 fd 기반 스트림으로 전송하는 현대적 마이그레이션 경로가 생겼습니다.
6.6 ~ 6.8IOMMUFD 기본 도입group-centric VFIO 컨테이너를 대체할 device-centric 모델이 본격화되었습니다.
6.9 ~ 6.10QEMU의 -object iommufd 경로 정착legacy 컨테이너를 우회하는 실사용 경로가 안정화되었습니다.
6.11 ~ 6.12migration v2가 mlx5 / hisi_acc에서 안정화SmartNIC / 가속기 라이브 마이그레이션이 프로덕션 단계로 올라왔습니다.
6.14 ~ 6.15dmem cgroup으로 GPU 메모리 제한mdev / SR-IOV VF가 소비하는 장치 메모리를 cgroup 단위로 관리할 수 있게 되었습니다.
6.16 ~ 6.17mdev의 iommufd 경로 합류, nested IOMMU 기반 SVA 성숙mdev와 일반 VFIO 장치가 같은 사용자 API 아래 수렴하기 시작했습니다.
6.18guest_memfd + VFIO 상호작용 정리, ARM SMMUv3 nested translation 배치기밀 VM 패스스루와 ARM 서버 가상화 기반이 강화되었습니다.

Linux Bridge 관련 최근 변경 이력

Linux Bridge 문서는 운영 시나리오와 버그 수정이 강하게 결합되어 있어 대부분을 현지 문서에 유지합니다. 다만 최근 릴리즈 기준 분기점은 아래와 같습니다.

시기변화의미
6.5MST(Multiple Spanning Tree) 지원VLAN별 독립 STP 인스턴스를 운영할 수 있게 되었습니다.
6.14VLAN-aware 브리지 멀티캐스트 컨텍스트 동기화 버그 수정multicast_vlan_snooping 환경의 안정성이 크게 좋아졌고 stable에도 백포트되었습니다.
6.18로컬 FDB 항목 VLAN 0 통합VLAN 수가 많은 환경에서 FDB 중복과 switchdev 오프로드 비용이 줄었습니다.
6.19.x공식 문서 기준 멀티캐스트 기본값 점검 강조snooping on / querier off 조합의 운영 함정을 명시적으로 확인해야 합니다.

네임스페이스 관련 최근 변경 이력

네임스페이스 문서에는 예제와 운영 영향 설명을 남기고, 여기에는 최근 버전별 분기점만 정리합니다.

커널영역변경 사항실무 시사점
6.13Network NSIPv4 주소 해시 테이블을 netns 단위로 분리대규모 네임스페이스 환경에서 조회 경합과 캐시 오염이 줄어듭니다.
6.14Cgroup NS 주변 인프라dmem 컨트롤러 도입으로 디바이스 메모리 제한 경로 확장GPU VRAM 같은 장치 메모리를 cgroup 정책과 함께 다루는 설계가 가능해집니다.
6.15pidfdPIDFD_GET_INFOPIDFD_INFO_EXIT 추가reap 이후에도 종료 상태를 재조회할 수 있어 런타임 종료 처리 레이스가 줄어듭니다.
6.15Mount NSfanotify로 mount namespace attach/detach 이벤트를 구독하는 API 추가/proc/<pid>/mountinfo 폴링을 줄이고 토폴로지 변화를 이벤트 기반으로 감시할 수 있습니다.
6.15Mount NSopen_tree_attr(2) 추가로 idmapped mount에서 다시 idmapped mount 파생 가능루트리스 컨테이너 스토리지 구성의 유연성이 높아집니다.
6.16Cgroup / Fanotifycgroup rstat 분리와 user-namespace aware fanotify 확장통계 집계 지연과 비특권 네임스페이스 감시 제약이 완화됩니다.
6.18Namespace fdname_to_handle_at()/open_by_handle_at()로 네임스페이스 파일 핸들 인코딩 지원자원을 pin하지 않고도 네임스페이스 유일성을 장기 비교할 수 있어 CRIU와 런타임 검증 로직이 단순해집니다.

Livepatch 관련 최근 변경 이력

Livepatch 문서에는 consistency model과 작성 패턴을 남기고, 긴 버전 흐름은 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.42023-06klp_enable_patch() 경로 정리, arch_stack_walk_reliable() 플래그 개선Reliable stacktrace 실패율이 낮아져 전환 대기 시간이 줄어듭니다.
6.52023-08KLP_TRANSITION_* 상태 추적 개선, 셀프테스트 확장전환 감시 스크립트와 QA 자동화 정확도가 높아집니다.
6.72024-01klp_shadow_get_or_alloc() 실패 경로 재작성OOM 상황에서도 패치 실패 시 롤백 안정성이 개선됩니다.
6.92024-05objtool 정합성 검증 연동 강화kpatch-build 산출물 검증 품질이 좋아집니다.
6.122024-11x86 FINEIBT·IBT와 ftrace hook 충돌 제거CET/IBT 활성 시스템에서도 Livepatch 적용 안정성이 높아집니다.
6.142025-03test_klp_livepatch 셀프테스트가 CI 기본 경로로 확대배포판과 내부 커널 QA에서 회귀를 자동 검출하기 쉬워집니다.
6.162025-07struct klp_state 정돈과 Shadow/State 통합 RFC 정리패치 간 상태 의존성 모델이 단순해지는 방향이 확립됩니다.
6.172025-09state.is_shadow 기반 Shadow Variable 수명 통합 초기 머지obsolete shadow 정리를 별도 콜백 없이 처리하는 패턴이 가능해집니다.
6.182025-11Rust 바인딩과 ftrace/livepatch 상호 운영 가드 강화Rust 모듈이 포함된 커널에서도 Livepatch 전환 안전성을 더 엄격히 검증할 수 있습니다.

KASAN / Sanitizer 관련 최근 변경 이력

KASAN 문서에는 탐지 모델과 운영 선택 기준을 남기고, Sanitizer 계열의 최신 버전표는 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.82024-03HW-Tag KASAN의 kasan.stacktrace 기본값 정리, Stack Depot 개선리포트 정확도가 오르고 메모리 사용량이 줄어듭니다.
6.92024-05KMSAN 라벨 전파 규칙 재작성과 KMSAN_WARN_ON 개선uninit-value 탐지의 false-negative가 감소합니다.
6.102024-07Generic KASAN inline 모드에 report_async 도입콜 스택 오염을 줄이면서 비동기 리포트 수집이 가능해집니다.
6.122024-11KFENCE sample_interval 런타임 조정 API 추가운영 중 탐지율과 오버헤드를 더 세밀하게 절충할 수 있습니다.
6.142025-03SW-Tag KASAN x86_64 메인라인 RFC 재상정비-ARM 태그 기반 탐지를 실험할 기반이 정리됩니다.
6.152025-06KMSAN s390 포팅 완료IBM Z 환경에서도 미초기화 값 탐지가 가능해집니다.
6.162025-07HW-Tag KASAN에 kasan.fault=panic_on_write 옵션 도입쓰기 오류만 panic으로 격리해 프로덕션 운영성을 높일 수 있습니다.
6.172025-09ARM64 FEAT_MTE_STORE_ONLY 지원쓰기 전용 태그 검사로 프로덕션 MTE 오버헤드를 크게 낮춥니다.
6.182025-11kasan.write_only 옵션 추가Android·서버 환경에서 상시 KASAN 운용의 현실성이 높아집니다.

Time Namespace 관련 최근 변경 이력

Time Namespace 문서에는 CRIU, 기밀 VM, OCI 활용 설명을 남기고 주변 인프라 버전표는 여기로 모읍니다.

커널/도구영역변경 사항실무 시사점
6.11 ~ 6.13vDSO아키텍처별 vDSO generic 코드 정리, 신규 아키텍처가 공통 경로로 편입Time Namespace offset 자체는 유지하면서 아키텍처별 시계 구현 차이가 줄어듭니다.
6.18Namespace handlename_to_handle_at()로 time namespace 포함 모든 namespace에 파일 핸들 발급 가능CRIU가 namespace를 pin하지 않고도 유일성 검증을 수행할 수 있습니다.
CRIU 3.19 ~ 3.20CRIUtime namespace 체크포인트/복원이 io_uring/pidfd 경로와 통합--timens-offset 수동 지정 빈도가 줄고 복원 절차가 단순해집니다.
6.16 / 6.18기밀 VMvirtio_rtc, SEV-SNP Secure TSC 등 신뢰 가능한 시간 소스 강화기밀 VM 내부 컨테이너에서도 Time Namespace offset을 더 믿을 수 있는 기반 위에서 사용할 수 있습니다.
runc 1.2+ / crun 1.15+OCI 런타임linux.timeOffsets 필드를 해석하는 경로 정리OCI 설정에서 monotonic/boottime 오프셋을 선언적으로 관리할 수 있습니다.

가상화 / KVM 관련 최근 변경 이력

가상화 문서에는 기밀 VM 운용, 성능 확장성, 사용자 공간 조합 설명을 남기고, 최근 릴리즈 흐름은 여기로 모읍니다.

커널영역변경 사항실무 시사점
6.11AMD SEV-SNPKVM 게스트 VM 지원 mainline 편입AMD 기밀 게스트를 메인라인 커널 기준으로 배치할 수 있는 최소 기반이 마련되었습니다.
6.12VirtIOvsock 성능 개선, VDPA MAC 설정, balloon 통계 확장게스트 I/O 성능과 관측성이 동시에 개선됩니다.
6.14cgroupdmem 컨트롤러로 passthrough GPU VRAM 제한 가능VM당 장치 메모리 상한을 정책적으로 제어할 수 있습니다.
6.15KVM x86 / ARMlockless SPTE aging, secure TSC 공통 인프라, ARM nested virt 확장대규모 VM dirty tracking과 기밀 VM 시간 신뢰, ARM 실험 배치가 동시에 진전됩니다.
6.16KVM Intel / AMD / VirtIOTDX 호스트 초기화 완성, SEV/SNP 초기화 경로 정리, virtio_rtc 추가Intel과 AMD 모두 기밀 VM 호스트 배치 가능성이 실전 단계로 올라가고 시간 신뢰 경로가 강화됩니다.
6.17KVM x86posted IRQ 공통화, AVIC 안전 활성, 링 기반 dirty tracking 확장대규모 vCPU VM에서 인터럽트 지연과 dirty logging 비용이 줄어듭니다.
6.18KVM x86 / ARM / guest_memfdCET 가상화, Secure AVIC, pKVM FF-A 1.2, guest_memfd mmap() 허용기밀 VM 보안성과 메모리 관리 모델이 한 단계 정리되며 6.18 LTS가 실전 기준선으로 부상합니다.

Futex 관련 최근 변경 이력

Futex 문서에는 futex2 API, NT 동기화, 프록시 실행 설명을 남기고, 최근 버전표는 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.122024-11PREEMPT_RT 메인라인 병합과 WAKE_Q 경로 안정화PI futex와 rt_mutex 관계가 메인라인 기준으로 정리되어 RT 환경 호환성이 높아집니다.
6.132025-01debugobjects 재작업으로 futex_q 추적 신뢰성 개선디버그 빌드에서 init-after-free 계열 문제 탐지가 좋아집니다.
6.142025-03CONFIG_WINESYNC 기반 NT 동기화 드라이버 도입Wine/Proton의 Windows 동기화 객체 에뮬레이션이 커널 가속을 얻습니다.
6.152025-05WAKE_Q 배치 wake-up 경로 최적화대량 FUTEX_WAKE가 많은 producer-consumer 워크로드의 지연이 줄어듭니다.
6.162025-07FUTEX2_NUMA, FUTEX2_MPOL, 프로세스 로컬 futex hash 도입대형 NUMA 서버와 컨테이너 호스트에서 pthread mutex 경합이 완화됩니다.
6.172025-09프록시 실행 초기 구현, futex 해시 참조 경로 RCU 최적화, requeue UAF 방지Android 같은 우선순위 민감 경로의 지연 개선 기반이 들어오지만 아직 실험적입니다.
6.182025-11rseq 사용자 공간 복귀 최적화, PREEMPT_RT softirq 경로 단순화, futex_q RCU 해제 효율 개선glibc NPTL과 함께 컨텍스트 전환 비용이 더 낮아집니다.
6.192026-02robust_list 셀프테스트 추가, sched_ext lockless DSQ peek 확장robust futex 회귀 검증이 공식 selftest 경로에 편입됩니다.

RT Mutex 관련 최근 변경 이력

RT Mutex 문서에는 PI 체인과 Proxy Execution 관계 설명을 남기고, 최근 릴리즈 흐름은 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.122024-11PREEMPT_RT 최종 병합, printk nbcon 경로까지 메인라인화out-of-tree RT 패치 스택 의존을 줄이고 메인라인 RT를 기본 기준선으로 삼을 수 있습니다.
6.132025-01CONFIG_PREEMPT_RT가 선점 모델과 직교한 옵션으로 분리RT 활성화와 lazy/full preemption 선택을 분리해서 튜닝할 수 있습니다.
6.142025-03rtmutex acquire 경로 메모리 순서 의미론 정리ARM64/RISC-V 같은 약한 메모리 모델에서 관찰 가능 상태 정합성이 보강됩니다.
6.152025-05Proxy Execution 준비 패치와 sched class 인터페이스 확장PI 체인 관련 코드가 장기적으로 스케줄러 차원으로 확장될 가능성을 반영해야 합니다.
6.162025-07Proxy Execution 준비 패치 추가, FUTEX2_NUMA와 상호작용 정리대형 NUMA 시스템에서 PI latency 재측정이 필요한 시점입니다.
6.172025-09Proxy Execution 초기 메인라인 병합단일 런큐 범위지만, 단순 priority boost를 넘어 scheduling context 위임이 실제 코드에 들어옵니다.
6.182025-11rt_mutex API 자체 변화는 없고 6.17 코드 안정화 단계 진입SLUB sheaves 등 주변 개선으로 RT 경로의 할당 지연 예측성이 좋아집니다.

Red-Black Tree 관련 최근 변경 이력

Red-Black Tree 문서에는 자료구조 선택 기준을 남기고, 최근 버전 흐름은 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.122024-11코어 rbtree API 안정, mm의 VMA는 이미 Maple Tree가 기본신규 사용처에서는 여전히 EPOLL, 스케줄러, dm 같은 중간 규모 색인에 rbtree가 유효합니다.
6.142025-03device-mapper transaction manager가 선형 리스트 대신 rbtree 사용중간 규모 컬렉션 최적화 수단으로 rbtree가 계속 채택됩니다.
6.162025-07BPF에서 rbtree 순회 지원 확장verifier가 허용하는 BPF 자료구조 활용 범위가 넓어집니다.
6.172025-09augmented rbtree와 latch rbtree 포함 코어 인터페이스 변화 없음rb_root_cached와 augmented 패턴의 안정성이 계속 유지됩니다.
6.182025-11코어 변화 없음, 새 서브시스템은 주변에서만 확장6.18 LTS가 rbtree 사용 드라이버·서브시스템의 장기 지원 기준선이 됩니다.
6.192026-026.x 마지막 릴리즈까지 코어 변경 없음7.0 계열로 넘어가도 API 하위 호환성이 유지됩니다.

IDR / IDA 관련 최근 변경 이력

IDR / IDA 문서에는 XArray 전환 배경과 사용 지침을 남기고, 최근 릴리즈 흐름은 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.122024-11IDR/IDA 코어 변경 없음, 주변 서브시스템의 XArray 전환 지속신규 코드는 사실상 XArray 직접 사용이 기본 권장안입니다.
6.132025-01서브시스템 단위 XArray 이행 확대새 ID 할당 로직은 xa_alloc*() 계열을 쓰는 방향으로 맞춰야 합니다.
6.162025-07Rust용 XArray 최소 추상화 계층 도입Rust 드라이버는 IDR이 아니라 XArray를 기준으로 설계하는 편이 자연스럽습니다.
6.172025-09코어 API 안정, 주변 XArray 재인덱싱 최적화만 진행기존 IDR 사용처는 유지되지만 장기 리팩터링 후보로 봐야 합니다.
6.182025-11IDR Rust 바인딩은 추가되지 않고 XArray 우선 방침 유지6.18 LTS에서도 기존 호환성은 유지되지만 새 바인딩 투자는 XArray로 집중됩니다.
6.192026-026.x 마지막 릴리즈까지 코어 구조 변화 없음단기 제거 계획은 없지만, 전략적 방향은 여전히 XArray 치환입니다.

Ring Buffer 관련 최근 변경 이력

Ring Buffer 문서에는 persistent buffer, zero-copy, BPF 연계 설명을 남기고, 버전표는 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.122024-11Persistent ring buffer 정식 머지재부팅 후 trace를 유지하는 사후 분석 경로가 공식 기능이 됩니다.
6.132025-01persistent 메타데이터 버전 필드와 오프라인 reader 경로 정리크래시 후 초기 부팅에서 이전 trace를 더 안전하게 재현할 수 있습니다.
6.142025-03sub-buffer 크기 런타임 조정, persistent 인스턴스 mmap() 금지로 안전화대형 이벤트 drop을 줄이되 persistent 버퍼의 수집 방식 제약을 이해해야 합니다.
6.152025-05mmap() 기반 zero-copy 읽기 경로 안정화trace-cmd나 libtracefs 기반 고볼륨 수집의 syscall 오버헤드를 줄일 수 있습니다.
6.162025-07persistent buffer에 eBPF 이벤트 재생용 스키마 ID 기록ftrace와 BPF 타임라인을 교차 분석하기 쉬워집니다.
6.172025-09ring_buffer_meta ABI 문서화drgn, crash 같은 외부 분석 도구가 버전 변화에 덜 민감해집니다.
6.182025-11persistent ring buffer의 syscall 이벤트 출력 품질 개선패닉 사후 분석에서 시스템 콜 추적 가독성이 크게 좋아집니다.
6.192026-02SFrame 기반 스택 언와인딩 인프라가 tracing 경로에 편입되기 시작최적화 빌드에서도 stack trace 품질을 높일 기반이 생깁니다.
7.02026-04rtla --bpf-action과 ring buffer 연계, 외부 도구 스키마 안정화실시간 지터 분석과 자동 대응을 BPF와 결합하는 운용이 쉬워집니다.

CAN / SocketCAN 관련 최근 변경 이력

CAN Bus 문서에는 CAN-XL, ISO-TP, J1939 운용 설명을 남기고, 최근 릴리즈 표는 여기로 모읍니다.

커널변경 사항실무 시사점
6.7struct canxl_frame 기반 CAN-XL 프레임 골격 머지2048바이트 페이로드를 다루는 차세대 SocketCAN UAPI가 열리기 시작합니다.
6.8ISO-TP SF escape sequence 처리 갱신최신 자동차 진단 스택과의 호환성이 높아집니다.
6.10m_can CAN-XL TX 큐 수정차량 게이트웨이의 송신 안정성이 개선됩니다.
6.11NXP S32G3 FlexCAN 드라이버 머지차세대 차량용 SoC 지원 범위가 넓어집니다.
6.13CAN_ISOTP_LISTEN_MODE 추가응답 없이 진단 트래픽을 수동 관찰하는 수신 패턴이 쉬워집니다.
6.14J1939 BAM memory leak fix, ST SPC58 M_CAN 지원장기 운용 안정성과 컨트롤러 커버리지가 동시에 개선됩니다.
6.15MCP251xFD RX FIFO 인터럽트 통합 수정CAN-FD 수신 누락 문제를 줄일 수 있습니다.
6.16J1939 ETP close race 수정, Renesas RZ/G3S CAN-FD 지원장시간 차량 텔레매틱스 운용의 신뢰성이 좋아집니다.
6.17Allwinner T527 CAN-FD 지원저가형 IoT / 게이트웨이 플랫폼 선택지가 늘어납니다.
6.18CAN_RAW_XL_FRAMES 소켓 옵션 안정화 RFC 진행사용자 공간 CAN-XL 표준화가 구체적인 운영 검토 대상이 됩니다.

IIO 관련 최근 변경 이력

IIO 문서에는 backend, cyclic DMA, DMABUF 활용 설명을 남기고, 최근 버전표는 여기로 모읍니다.

커널변경 사항실무 시사점
6.7IIO buffer-dmaengine cyclic DMA 지원GHz급 ADC의 zero-copy 연속 캡처 기반이 마련됩니다.
6.10IIO backend 프레임워크 머지FPGA AXI IP 코어를 표준 추상화 아래에서 다룰 수 있습니다.
6.11ADXL367 추가저전력 모션 센서 지원이 확대됩니다.
6.13IIO event backend 표준화, LTC2664/2672 DAC 지원이벤트 UAPI가 정돈되고 사용자 공간 구독 경로가 표준화됩니다.
6.14Bosch BMP580 추가차세대 환경 센서 지원이 확장됩니다.
6.15LSM6DSV16X, SCD4x 추가edge AI 센서와 공기질 모니터링 장치 지원이 넓어집니다.
6.16IIO consumer API의 hardware trigger / cross-device cascade 확장ADC→DAC 같은 zero-CPU 데이터 경로 설계가 쉬워집니다.
6.17SCD4x ChromeOS 통합노트북 환경 센서 스택과의 통합이 진전됩니다.
6.18IIO DMABUF zero-copy 사용자 공간 인터페이스 안정화GPU/카메라/센서 파이프라인 사이 직접 버퍼 공유가 현실화됩니다.

Intel PCM 관련 최근 변경 이력

Intel PCM 문서에는 TPMI, CXL 모니터링, perf와의 역할 분담 설명을 남기고, 플랫폼 지원 연혁은 여기로 모읍니다.

플랫폼출시PCM 지원 시점실무 시사점
Sapphire Rapids2023-01PCM 202307+HBM, CXL 1.1, AMX 계열 모니터링이 본격화됩니다.
Emerald Rapids2023-12PCM 202312+CHA 계열 uncore 카운터 확장이 추가됩니다.
Granite Rapids2024-09PCM 202409+Xeon 6 P-core, UPI 2.0, CXL 2.0, MRDIMM 관측이 가능해집니다.
Sierra Forest2024-06PCM 202406+E-core 전용 PMU와 대규모 코어 토폴로지 분석이 가능해집니다.
Granite Rapids-D2025PCM 2025+edge-server 계열 네트워킹 가속 카운터가 중요해집니다.
Granite Rapids-WS2026-02PCM 2026+워크스테이션 단일 소켓 uncore 관측 지점이 추가됩니다.
차세대 플랫폼후속 세대실제 릴리스 노트 확인 필요Clearwater Forest, Diamond Rapids 등은 태그와 릴리스 노트를 기준으로 재검증해야 합니다.

Watchdog 관련 최근 변경 이력

Watchdog 문서에는 pretimeout, secure watchdog, SCMI 운용 설명을 남기고, 최근 릴리즈 표는 여기로 모읍니다.

커널변경 사항실무 시사점
6.7pretimeout governor의 panic 기본 경로 정비pretimeout 기반 panic/kdump 시나리오가 더 예측 가능해집니다.
6.10SBSA Generic Watchdog의 WS0/WS1 두 단계 분리 명확화Arm 서버에서 pretimeout과 reset 시나리오를 표준 방식으로 구성하기 쉬워집니다.
6.13Qualcomm watchdog와 secure world(TZ) 협업 경로 정비모바일 SoC에서 hang 분석과 secure snapshot 수집 체인이 표준화됩니다.
6.16i.MX95 SCMI watchdog 지원 추가펌웨어 관리 watchdog을 Linux 표준 인터페이스로 제어할 수 있습니다.
6.17WDIOF_PRETIMEOUT 능력 플래그 표준화systemd, runit 같은 사용자 공간 도구가 pretimeout을 일관된 방식으로 다룰 수 있습니다.
6.18watchdog-cli 1.x의 keep-alive 인터벌 자동 산출 흐름 정착운영 설정이 단순해지고 사람 손으로 계산하는 구간이 줄어듭니다.

RAPL / Powercap 관련 최근 변경 이력

RAPL & powercap 문서에는 TPMI, PLR, DTPM, AMD RAPL 활용 설명을 남기고, 최근 릴리즈 흐름은 여기로 모읍니다.

커널릴리즈변경 사항실무 시사점
6.122024-11AMD family 1Ah와 Arrow Lake-U 인식, Xeon 6 OOB 모드 초기 정비Zen 5와 차세대 Intel 모바일/서버 플랫폼에서 powercap 관측이 본격화됩니다.
6.132025-01RAPL PMU perf 이벤트 안정화, TPMI 기반 uncore frequency sysfs 확장perf와 sysfs 기반 관측이 더 일관된 기준선을 가집니다.
6.142025-03intel_rapl_tpmi의 fabric cluster 세분화, PSys 도메인 정비Xeon 6 계열에서 패브릭 단위 전력·주파수 분석이 가능해집니다.
6.152025-05DTPM regulator/voltage 백엔드 추가SoC 레일 수준 전력 예산 분배를 powercap 체계 안에서 다룰 수 있습니다.
6.162025-07PLR(Performance Limit Reasons) TPMI 노출 표준화왜 클럭이 제한되는지 운영 중 직접 추적하기 쉬워집니다.
6.172025-09AMD Core/Package RAPL 코드 정리, Genoa/Turin 범위 확대AMD 서버 계열의 powercap 지원 범위가 안정화됩니다.
6.182025-12TPMI 통합 인터페이스 안정화, DTPM regulator 백엔드 양산 채택Xeon 6 이후 세대에서 TPMI가 사실상 기본 전제 경로가 됩니다.

IRQ Domain / MSI 도메인 관련 최근 변경 이력

IRQ Domain 문서에는 계층형 도메인과 드라이버 전환 설명을 남기고, 최근 구조 변화의 버전표는 여기로 모읍니다.

커널변경 사항실무 시사점
6.14CONFIG_GENERIC_MSI_IRQ_DOMAINCONFIG_GENERIC_MSI_IRQ로 통합, IRQ_MSI_LIB 도입커널 설정과 드라이버 Kconfig 기준선을 업데이트해야 합니다.
6.15 개발 주기pci_msi_create_irq_domain()에서 msi_create_parent_irq_domain()으로의 전환 시작새 PCI MSI 도메인 드라이버는 parent domain 기반 API를 기준으로 작성하는 편이 안전합니다.
6.15 이후계층형 원칙에 맞춘 독립 MSI parent domain 전환이 드라이버별로 확산동적 MSI 벡터 할당과 IMS 지원을 고려한 구조로 이동해야 합니다.

개발 통계 상세

리눅스 커널의 개발 활동을 정량적으로 분석하면, 이 프로젝트의 규모와 활력을 구체적으로 이해할 수 있습니다.

릴리즈 주기별 개발 활동 (6.x 기준) 커밋수 릴리즈 0 5K 10K 15K 18K 6.0 15.4K 6.1 16.1K 6.2 14.6K 6.3 15.8K 6.4 16.5K 6.5 16.8K 6.6 17.5K 6.7 17.2K 6.8 16.2K 6.9 16.9K 6.12 18.2K 평균: ~16,000 커밋/릴리즈 | ~1,900 기여자/릴리즈 | ~70일 사이클 6.12 (LTS): PREEMPT_RT 통합으로 커밋 수 최대

디렉토리별 코드 비중 변화

디렉토리2.6.0 (2003)4.0 (2015)6.1 (2022)7.0 (2026)역할
drivers/55%65%68%69%하드웨어 드라이버
arch/18%14%12%11%아키텍처별 코드
fs/8%6%5%5%파일시스템
net/6%5%5%5%네트워크 스택(Network Stack)
kernel/3%3%3%3%코어 커널
mm/1%1%1%1%메모리 관리
sound/3%3%3%3%오디오
rust/--<0.1%~0.1%Rust 바인딩/드라이버
기타6%3%3%3%tools, docs 등

릴리즈 주기 통계

통계2.6.x 시대 (2003~2011)3.x~5.x (2011~2022)6.x (2022~현재)
릴리즈 주기60~90일63~70일63~70일
릴리즈당 커밋5,000~12,00012,000~16,00015,000~18,000
릴리즈당 기여자500~1,5001,500~2,0001,800~2,200
Merge Window 커밋~70%~75%~75%
rc 기간 커밋~30%~25%~25%
# 릴리즈별 상세 통계 명령어

# 릴리즈 간 커밋 수
git rev-list --count v6.11..v6.12

# 릴리즈 간 기여자 수
git shortlog -sn v6.11..v6.12 | wc -l

# 릴리즈 간 변경 파일 수
git diff --stat v6.11..v6.12 | tail -1

# 릴리즈 간 추가/삭제 라인 수
git diff --shortstat v6.11..v6.12

# 상위 10 기여자
git shortlog -sn v6.11..v6.12 | head -10

# merge window 기간 커밋 (rc1까지)
git rev-list --count v6.11..v6.12-rc1

# rc 기간 커밋 (rc1~final)
git rev-list --count v6.12-rc1..v6.12

# 디렉토리별 변경 비중
git diff --stat v6.11..v6.12 -- drivers/ | tail -1
git diff --stat v6.11..v6.12 -- net/ | tail -1
git diff --stat v6.11..v6.12 -- mm/ | tail -1

Stable/Longterm 프로세스 상세

stable 트리의 패치 선정과 릴리즈 과정은 엄격한 규칙을 따릅니다. 이 프로세스를 이해하면 배포판 커널 업데이트의 배경을 알 수 있습니다.

Stable 패치 흐름 메인라인 패치 Cc: stable 태그 AUTOSEL 봇 자동 후보 선별 Greg KH 리뷰 수동 검증 + 빌드 테스트 stable-rc 트리 후보 패치 큐 (리뷰 대기) 자동 테스트 KernelCI, 0-day bot Stable 릴리즈 v6.X.Y 태그 Stable 패치 선정 기준 (Documentation/process/stable-kernel-rules.rst) 1. 메인라인에 이미 병합된 패치여야 합니다 (upstream first) 2. 실제 버그를 수정하거나 보안 문제를 해결해야 합니다 3. 100줄 이하의 작은 패치여야 합니다 (예외: 보안 수정) 4. Cc: stable@vger.kernel.org 태그가 있거나 AUTOSEL이 선별 5. 72시간 리뷰 기간 후 이의 없으면 stable 트리에 적용 6. KernelCI/0-day 자동 빌드/부트 테스트 통과 필수 7. 릴리즈 주기: 주 1~2회 (긴급 보안 수정 시 즉시)

LTS 정책 상세

항목일반 StableLTS (Long Term Support)
지원 기간다음 릴리즈까지 (~2~3개월)최소 2년, 최대 6년
선정 기준모든 메인라인 릴리즈연 1~2개, 기술적 중요도 기준
패치 범위버그 수정, 보안 수정버그 수정, 보안 수정 (더 보수적)
사용처롤링 릴리즈 배포판엔터프라이즈 배포판, 임베디드, Android
릴리즈 빈도주 1~2회주 1~2회
관리자Greg KH, Sasha LevinGreg KH (일부 위임)
LTS EOL 주의: LTS 커널의 EOL(End of Life) 이후에는 보안 패치가 제공되지 않습니다. kernel.org의 releases.json에서 각 LTS 커널의 EOL 예정일을 확인할 수 있습니다. EOL 이후에도 해당 커널을 사용하는 배포판은 자체적으로 보안 패치를 관리해야 합니다.

커널 거버넌스 구조 상세

리눅스 커널의 거버넌스는 공식적인 조직 구조 없이, 기술적 역량과 신뢰에 기반한 유기적 체계로 운영됩니다. 2018년 Code of Conduct 채택 이후 커뮤니티 운영 방식에도 변화가 있었습니다.

Technical Advisory Board (TAB)

Linux Foundation의 Technical Advisory Board는 커널 커뮤니티의 기술적 방향성을 논의하는 자문 기구입니다. 구성원은 커뮤니티 선거로 선출되며, Code of Conduct 위반 사항 조정 역할도 수행합니다.

역할담당자/조직권한선출 방식
BDFL (Benevolent Dictator)Linus Torvalds최종 병합 결정권창시자
대리 관리자Greg Kroah-HartmanLinus 부재 시 관리Linus 지명
서브시스템 메인테이너~1,700명서브시스템 패치 리뷰/병합기술적 역량 기반
TAB 위원선출직 10명기술 자문, CoC 조정커뮤니티 투표
Stable 관리자Greg KH, Sasha Levinstable/LTS 릴리즈지명
linux-next 관리자Stephen Rothwell통합 빌드 테스트지명

MAINTAINERS 파일 구조

# MAINTAINERS 파일 엔트리 형식
NETWORKING [DSA]
M:  Andrew Lunn <andrew@lunn.ch>
M:  Florian Fainelli <f.fainelli@gmail.com>
M:  Vladimir Oltean <olteanv@gmail.com>
L:  netdev@vger.kernel.org
S:  Maintained
F:  net/dsa/
F:  drivers/net/dsa/
F:  include/net/dsa.h
F:  include/linux/dsa/

# 필드 설명:
# M: = 메인테이너 (패치 리뷰 및 병합 권한)
# R: = 리뷰어 (Acked-by/Reviewed-by 제공)
# L: = 메일링 리스트
# S: = 상태 (Maintained, Supported, Orphan 등)
# F: = 파일/디렉토리 패턴
# T: = Git 트리 URL
# MAINTAINERS 활용 실전 명령어

# 특정 파일의 메인테이너 확인
scripts/get_maintainer.pl -f net/dsa/slave.c

# 특정 패치의 수신자 자동 확인
scripts/get_maintainer.pl 0001-net-dsa-fix-bug.patch

# 메인테이너 수 통계
grep "^M:" MAINTAINERS | sort -u | wc -l

# Orphan 상태 서브시스템 확인
grep -B1 "^S:.*Orphan" MAINTAINERS

# 전체 메일링 리스트 목록
grep "^L:" MAINTAINERS | sort -u

파일시스템 진화

리눅스 커널의 파일시스템 지원은 초기 Minix FS에서 현재의 ext4, Btrfs, XFS, F2FS, Bcachefs까지 지속적으로 발전해왔습니다. 파일시스템 변천사는 스토리지 기술 발전을 직접 반영합니다.

파일시스템최초 도입현재 상태핵심 특징
Minix FS0.01 (1991)레거시최초 지원, 교육용
ext0.96 (1992)제거됨최초 Linux 전용 FS
ext20.99 (1993)유지보수저널링 없음, 단순/빠름
ext32.4 (2001)유지보수저널링 추가, ext2 호환
ext42.6.28 (2008)활발 (기본 FS)엑스텐트, 48비트 블록, 대용량
ReiserFS2.4 (2001)제거 예정tail packing, 소파일 최적화
XFS2.6 (2003)활발64비트, 병렬 I/O, 대용량
Btrfs2.6.29 (2009)활발CoW, 스냅샷, RAID, 압축
F2FS3.8 (2013)활발플래시 최적화, Android 채택
OverlayFS3.18 (2014)활발유니온 마운트, 컨테이너 기반
NTFS35.15 (2021)활발Windows NTFS 읽기/쓰기
Bcachefs6.7 (2024)실험적CoW, 체크섬(Checksum), 암호화, 압축
ext4의 장수 비결: ext4는 2008년 안정화 이후 15년 이상 리눅스 기본 파일시스템 지위를 유지하고 있습니다. fast commit (5.10), large folio (6.16) 등 지속적인 개선이 이루어지고 있으며, 안정성과 호환성 면에서 여전히 가장 신뢰받는 파일시스템입니다.

네트워킹 스택 진화

리눅스 네트워킹 스택은 단순한 TCP/IP 구현에서 세계에서 가장 기능이 풍부한 네트워크 OS로 발전했습니다.

시기기능커널 버전영향
1994TCP/IP 스택 완성1.0인터넷 서버 가능
1999IPv6 초기 지원2.2차세대 인터넷 프로토콜
2001iptables/Netfilter2.4방화벽 프레임워크
2001SCTP2.4통신 프로토콜
2005NAPI2.6.x고속 패킷 처리
2006네트워크 네임스페이스2.6.24컨테이너 네트워킹
2009Open vSwitch3.3SDN 가상 스위치
2013nftables3.13iptables 차세대 대체
2016XDP4.8초고속 패킷 처리
2016BBR TCP 혼잡 제어4.9Google 고성능 혼잡 제어
2018kTLS4.13커널 TLS 오프로드
2020WireGuard5.6현대적 VPN
2020MPTCP5.6다중 경로 TCP
2024TCP 하드웨어 TX shaping6.13NIC 기반 트래픽 제어(Traffic Control)

커널 빌드 시스템(Build System) 변천

커널 빌드 시스템도 코드베이스 성장에 맞춰 진화해왔습니다.

시기빌드 시스템특성
1991~2001순수 Makefile + 쉘 스크립트단순, 수동 의존성
2001Kconfig (menuconfig) 도입대화형 설정 인터페이스
2002~2005Kbuild 시스템 현대화재귀적 make, Sam Ravnborg 주도
2017GCC 플러그인 인프라컴파일 시 보안 검증
2020Clang/LLVM 빌드 지원GCC 외 컴파일러 지원
2022Rust 빌드 통합rustc + bindgen + Kbuild 연동
2023최소 GCC 버전 5.1 이상레거시 컴파일러 지원 종료
# 커널 빌드 기본 명령어

# 설정
make defconfig               # 기본 설정
make menuconfig              # 대화형 설정
make olddefconfig            # 기존 .config 유지 + 새 옵션 기본값

# 빌드
make -j$(nproc)              # 병렬 빌드
make CC=clang -j$(nproc)     # Clang으로 빌드
make LLVM=1 -j$(nproc)       # 전체 LLVM 도구 체인

# Rust 지원 확인 및 빌드
make rustavailable           # Rust 도구 체인 확인
make LLVM=1 -j$(nproc)       # Rust는 LLVM 필수

# 크로스 컴파일
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)

# 빌드 시간 프로파일링
make -j$(nproc) 2>&1 | ts '[%Y-%m-%d %H:%M:%S]'

미래 전망

리눅스 커널은 35년 이상의 역사를 통해 지속적으로 발전해왔으며, 7.0 출시(2026-04)를 기점으로 새로운 시대가 열렸습니다. Rust의 공식화와 sched_ext의 정식 통합은 향후 커널 개발의 방향을 근본적으로 바꿀 이정표입니다.

기술적 방향성

영역7.0 기준 현재 상태미래 방향
Rust 확대stable 전환, PWM/I2C/hrtimer 드라이버네트워크/블록 디바이스 드라이버, 핵심 서브시스템 (mm, fs)
스케줄링EEVDF + sched_ext 정식BPF 기반 워크로드 적응형 스케줄링, 하이브리드 아키텍처 전용 정책
보안ML-DSA 포스트 양자 서명, LASS, Zicfiss/Zicfilp포스트 양자 암호화 전면 전환, 하드웨어 CFI 확대
이기종 컴퓨팅GPU/NPU 드라이버, Intel TDX 호스트통합 메모리 모델, 가속기 스케줄링, CXL 메모리 풀링
실시간PREEMPT_RT + Lazy preemption더 세밀한 지연시간 보장, 하이브리드 RT/처리량 코어 프레임워크
네트워킹AccECN, Wi-Fi 8/UHR, VSOCK NS하드웨어 오프로드 확대, P4/eBPF 통합, io_uring 네트워킹 범용화
에너지 효율EAS, CPUFreq/CPUIdle, ZRAM writeback탄소 인식 스케줄링, 배터리 기기 전용 최적화
아키텍처x86_64, ARM64, RISC-V (Zicfiss)RISC-V 생태계 확대, 레거시 아키텍처 정리, Loongson 메인스트림
라이브 업데이트Live Update Orchestrator (6.19)클라우드 VM 무중단 커널 업데이트 본격화
AI/MLAI 코딩 문서화 (7.0), Assisted-by 태그AI 생성 패치 검증 자동화, ML 기반 성능 튜닝

거버넌스 과제

참여 방법: 커널 개발에 참여하려면 Documentation/process/howto.rst를 읽고, kernelnewbies.org에서 시작하는 것을 권장합니다. 첫 패치로는 scripts/checkpatch.pl이 지적하는 코딩 스타일(Coding Style) 수정이 좋은 진입점(Entry Point)입니다.

메모리 관리 진화

리눅스 커널의 메모리 관리 서브시스템은 초기 단순한 페이지 할당에서 현대의 정교한 다층 메모리 관리 체계로 발전했습니다. 이 변천사는 하드웨어 발전(대용량 메모리, NUMA, 영구 메모리)과 워크로드 변화(가상화, 컨테이너)를 반영합니다.

시기커널 버전주요 변경영향
19910.01단순 페이지 할당최대 16MB 메모리 지원
19951.2버디 할당자(Buddy Allocator) 도입외부 단편화(Fragmentation) 감소
19962.0SLAB 할당자 도입커널 오브젝트 캐싱
19992.2highmem 지원 (896MB+)32비트에서 대용량 메모리 활용
20012.4ZONE_HIGHMEM, 리버스 매핑(Mapping)(rmap)페이지 회수 효율화
20032.6NUMA 정책, hugepages서버 워크로드 최적화
20042.6.7zone_reclaim, kswapd 개선메모리 압력 대응
20072.6.23SLUB 할당자 (SLAB 대체)성능/디버깅(Debugging) 개선
20082.6.25cgroup 메모리 컨트롤러 (memcg)컨테이너 메모리 격리
20102.6.33Transparent Huge Pages (THP)자동 hugepage 활용
20123.2zswap (압축 스왑 캐시(Cache))I/O 감소, 스왑 성능 향상
20133.11zram (압축 RAM 디스크)모바일/임베디드 메모리 확장
20143.15memfd_create() 시스템 콜익명 공유 메모리
20174.14KASAN (Kernel Address Sanitizer)메모리 오류 탐지 프레임워크
20184.15KPTI (Meltdown 대응)커널/유저 페이지 테이블(Page Table) 분리
20195.1persistent memory (DAX/PMEM) 성숙영구 메모리 파일시스템 지원
20205.8memcg v2 성숙, slab memcg 통합정확한 컨테이너 메모리 계측
20225.16DAMON (Data Access MONitor)접근 패턴 기반 메모리 관리
20225.18Multi-gen LRU (MGLRU)페이지 회수 알고리즘 혁신
20236.1maple tree (VMA 자료구조 교체)VMA 관리 성능 향상
20246.8large folio 일반화THP 유연화, 파일 I/O 최적화
메모리 관리 서브시스템 계층 구조 유저 공간: malloc / mmap / brk VMA 관리: maple tree (6.1+) / red-black tree (이전) 페이지 폴트 핸들러 demand paging, CoW, THP 페이지 회수 (reclaim) MGLRU / kswapd / direct reclaim 버디 할당자 order 0~10 페이지 SLUB 할당자 kmalloc / kmem_cache CMA / DMA 풀 연속 메모리 할당 물리 메모리: ZONE_DMA | ZONE_DMA32 | ZONE_NORMAL | ZONE_MOVABLE | ZONE_DEVICE

MGLRU (Multi-gen LRU): 5.18의 혁신

전통적인 LRU(Least Recently Used) 알고리즘은 active/inactive 두 리스트만으로 페이지 노화를 추적했습니다. MGLRU는 세대(generation) 개념을 도입하여 페이지 접근 패턴을 더 정밀하게 추적하고, 불필요한 페이지 스캔을 줄여 메모리 압력 상황에서 성능을 크게 개선했습니다.

# MGLRU 활성화 확인/제어
cat /sys/kernel/mm/lru_gen/enabled
# 값: 0x0007 (기본) - 모든 기능 활성
# bit 0: MGLRU 코어
# bit 1: 런타임 페이지 테이블 young 비트 스캔
# bit 2: 비활성 세대 자동 노화

# MGLRU 통계 확인 (memcg별)
cat /sys/kernel/debug/lru_gen
# memcg     0 (type=anon)
#   node    0
#     gen    3    age  10s    nr_pages  12345
#     gen    2    age  30s    nr_pages  8765
#     gen    1    age  60s    nr_pages  4321
#     gen    0    age 120s    nr_pages  2345

# DAMON 기반 선제적 회수 설정
echo "2000000 3000000 5 1000 10000" > /sys/kernel/debug/damon/target_ids
# min_sz max_sz min_nr_reg sample_intv aggr_intv (마이크로초)

대형 폴리오 (Large Folio): 6.x의 진화

folio는 5.16에서 도입된 페이지 캐시(Page Cache) 관리 단위로, compound page를 대체합니다. 6.x 시리즈에서 large folio가 일반화되면서 파일 I/O와 THP 모두에서 성능이 크게 향상되었습니다.

/* folio 도입 전후 비교 */

/* 5.15 이전: struct page 기반 */
struct page *page = find_get_page(mapping, index);
if (PageCompound(page))
    page = compound_head(page);  /* head page 필요 */

/* 5.16 이후: struct folio 기반 */
struct folio *folio = filemap_get_folio(mapping, index);
/* folio는 항상 head page → compound_head() 불필요 */
size_t size = folio_size(folio);  /* 4KB, 16KB, 64KB, ... */

/* large folio 할당 (6.8+) */
struct folio *folio = filemap_alloc_folio(GFP_KERNEL, order);
/* order=0: 4KB, order=2: 16KB, order=4: 64KB */
MGLRU의 실측 효과: Google의 ChromeOS 벤치마크에서 MGLRU는 전통적 LRU 대비 메모리 압력 시 애플리케이션 응답 시간을 40% 개선하고, kswapd CPU 사용량을 60% 줄였습니다. 서버 환경에서도 Redis/Memcached 같은 캐시 워크로드에서 유의미한 지연시간 감소를 보였습니다.

디바이스 모델 진화

리눅스 커널의 디바이스 모델은 하드웨어 추상화와 드라이버 관리의 근간입니다. 초기의 디바이스 번호(major/minor) 기반 모델에서 sysfs/udev 기반의 현대적 모델로 발전했습니다.

시기커널 버전변경핵심 내용
19910.01디바이스 번호 모델major/minor 번호로 장치 식별
19941.0/proc 파일시스템커널 정보 노출 인터페이스
19992.2devfs (실험적)자동 디바이스 노드 생성 시도
20022.5통합 디바이스 모델bus/device/driver 계층, Pat Mochel 설계
20032.6sysfs 도입디바이스 트리(Device Tree)를 /sys에 노출
20032.6udev 도입유저 공간 디바이스 관리자 (devfs 대체)
20052.6.13ueventhotplug 이벤트 → udev 처리
20082.6.25Device Tree (ARM)하드웨어 기술 표준화 (Open Firmware)
20113.xDevice Tree 의무화 (ARM)보드 파일 제거, DT 기반 프로빙
20123.5devlink 프레임워크멀티포트 디바이스 통합 관리
20164.6ACPI + Device Tree 공존x86에서도 DT 사용 가능
20195.2auxiliary bus하나의 디바이스에서 여러 서브기능 분리
20215.15devlink 리로드/파라미터 확장NIC/스위치 런타임 재설정
20236.3Rust 드라이버 바인딩안전한 드라이버 API 시작
# 디바이스 모델 탐색 명령어

# sysfs 디바이스 트리 탐색
ls /sys/bus/                        # 등록된 버스 타입
ls /sys/class/                      # 디바이스 클래스
ls /sys/devices/platform/           # 플랫폼 디바이스

# PCI 디바이스 계층
lspci -tv                           # PCI 토폴로지 트리
ls /sys/bus/pci/devices/            # sysfs에서 확인

# USB 디바이스 계층
lsusb -tv                           # USB 토폴로지 트리
ls /sys/bus/usb/devices/            # sysfs에서 확인

# Device Tree 확인 (ARM/ARM64)
ls /proc/device-tree/               # DT 노드 탐색
dtc -I fs /proc/device-tree/        # 런타임 DT 덤프

# udev 규칙 디버깅
udevadm info --query=all --name=/dev/sda
udevadm monitor --property         # 실시간 uevent 모니터링
udevadm test /sys/class/net/eth0    # 규칙 시뮬레이션

# 드라이버 바인딩 수동 제어
echo "0000:00:1f.0" > /sys/bus/pci/drivers/lpc_ich/unbind
echo "0000:00:1f.0" > /sys/bus/pci/drivers/lpc_ich/bind
devfs에서 udev로의 전환: devfs(2.4 시대)는 커널 공간(Kernel Space)에서 /dev 노드를 자동 생성했으나, 네이밍 정책이 커널에 하드코딩되어 유연성이 부족했습니다. udev(2.6~)는 유저 공간에서 규칙 기반으로 디바이스 노드를 생성함으로써 이 문제를 해결했습니다. 현재 systemd-udevd가 사실상 표준입니다.

가상화 지원 변천

리눅스는 세계에서 가장 널리 사용되는 하이퍼바이저(Hypervisor) 호스트 OS입니다. KVM의 메인라인 통합부터 컨테이너 격리, 마이크로VM까지 가상화 기술의 전 영역을 포괄합니다.

시기커널 버전기술영향
20022.4.xUser-mode Linux (UML)커널을 유저 프로세스로 실행
20032.6.0Xen 파라가상화 패치초기 하이퍼바이저 지원
20062.6.20KVM (Kernel-based VM)하드웨어 가상화 (VT-x/AMD-V) 활용
20072.6.23cgroups리소스 격리 프레임워크
20082.6.24네트워크 네임스페이스컨테이너 네트워킹 기반
20082.6.26완전한 네임스페이스 세트PID/UTS/IPC/mount/user NS
20113.0Xen 메인라인 통합외부 패치 불필요
20133.8user namespace 완성비특권 컨테이너 가능
20164.7vhost-net 고성능 I/OVM 네트워크 성능 향상
20195.1io_uring (VM I/O 활용)비동기 I/O 혁신
20205.6virtio-fs호스트-게스트 파일 공유
20205.10AMD SEV-ES 지원기밀 컴퓨팅(Confidential Computing) (VM 암호화)
20215.13Intel TDX 초기 지원신뢰 실행 환경(TEE)
20225.19Intel TDX 게스트 지원하드웨어 기밀 VM
20236.2AMD SEV-SNP 게스트보안 중첩 페이징
20246.9guest_memfd게스트 전용 메모리 (기밀 컴퓨팅)
리눅스 가상화 기술 스택 KVM (하드웨어 가상화) Guest VM (QEMU/Firecracker) virtio 드라이버 vhost-net / vhost-user KVM 모듈 (VT-x/AMD-V) 하드웨어 (CPU + IOMMU) 컨테이너 (OS-level) Docker / Podman / LXC OCI Runtime (runc/crun) namespaces cgroups v2 seccomp-BPF AppArmor/SEL 공유 커널 (호스트와 동일) 기밀 컴퓨팅 (CoCo) Confidential VM (CVM) guest_memfd / SWIOTLB SEV-SNP Intel TDX 원격 증명 (Remote Attestation) 암호화된 메모리 + 하드웨어 TEE
KVM의 성공 요인: KVM이 Xen을 제치고 기본 하이퍼바이저가 된 핵심 이유는 "커널 자체가 하이퍼바이저"라는 설계 철학입니다. 기존 리눅스 스케줄러, 메모리 관리, 드라이버를 그대로 활용하므로 별도 하이퍼바이저 개발 부담이 없고, 커널 개선이 곧 하이퍼바이저 개선이 되는 선순환 구조를 만들었습니다. AWS Firecracker, Google gVisor 등 현대 마이크로VM도 KVM 위에 구축되었습니다.

전원 관리와 에너지 효율 역사

리눅스 커널의 전원 관리는 노트북 배터리 절약에서 시작하여 데이터센터 에너지 효율과 모바일 디바이스 최적화까지 광범위한 영역으로 확장되었습니다.

시기커널 버전기술영향
19962.0APM (Advanced Power Management)BIOS 기반 전원 관리
20022.4ACPI 지원OS 주도 전원 관리
20042.6.9cpufreq 프레임워크CPU 주파수 동적 조절
20062.6.21tickless kernel (NO_HZ)유휴 시 타이머 인터럽트 제거
20082.6.28runtime PM 프레임워크디바이스별 동적 전원 관리
20092.6.32PM QoS (Quality of Service)전원/성능 요구사항 협상
20113.0cpuidle 거버너 개선C-state 선택 최적화
20143.16EAS (Energy Aware Scheduling)에너지 인식 태스크 배치
20164.7schedutil 거버너스케줄러 기반 주파수 결정
20195.1Intel Speed Select (ISST)코어별 성능 프로파일
20205.7thermal pressure 통합열 스로틀링 인식 스케줄링
20215.14Energy Model 개선OPP(Operating Performance Point) 정밀화
20236.3AMD P-State EPP 드라이버하드웨어 자율 DVFS
20246.8Intel HWP 개선하드웨어-소프트웨어 협력 DVFS
# 전원 관리 상태 확인 명령어

# cpufreq 현재 상태
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

# 모든 CPU 주파수 한번에 확인
grep MHz /proc/cpuinfo

# cpuidle C-state 통계
cat /sys/devices/system/cpu/cpu0/cpuidle/state*/name
cat /sys/devices/system/cpu/cpu0/cpuidle/state*/time
cat /sys/devices/system/cpu/cpu0/cpuidle/state*/usage

# 거버너 변경
echo schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# Intel P-State 드라이버 상태
cat /sys/devices/system/cpu/intel_pstate/status   # active/passive/off
cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
cat /sys/devices/system/cpu/intel_pstate/max_perf_pct

# runtime PM 상태 확인 (디바이스별)
cat /sys/bus/pci/devices/0000:00:00.0/power/runtime_status
# active / suspended / suspending

# 시스템 전체 에너지 소비 (RAPL)
cat /sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj
# turbostat으로 상세 분석
turbostat --Summary --show Busy%,Bzy_MHz,PkgWatt sleep 5

# 서스펜드/하이버네이트
cat /sys/power/state                # freeze mem disk
echo mem > /sys/power/state         # S3 서스펜드
echo freeze > /sys/power/state      # s2idle (S0ix)
EAS (Energy Aware Scheduling)의 원리: ARM big.LITTLE 아키텍처에서 에너지 효율이 다른 코어들 사이에서 태스크를 최적 배치하는 기술입니다. 작은 태스크는 LITTLE 코어에, 무거운 태스크는 big 코어에 배치하여 성능과 에너지 효율을 동시에 최적화합니다. schedutil 거버너와 결합하면 주파수 결정까지 통합됩니다.

커널 디버깅 도구 변천

리눅스 커널 디버깅 도구는 printk에서 시작하여 현재의 정교한 트레이싱/프로파일링(Profiling) 프레임워크로 발전했습니다. 이 변천사는 커널 개발 문화와 소프트웨어 공학의 진보를 반영합니다.

시기도구커널 버전용도
1991printk0.01커널 로그 출력 (가장 기본적인 디버깅)
1995kgdb외부 패치원격 GDB 디버깅
1999ksymoops2.2커널 Oops 심볼 해석
2004kprobes2.6.9동적 커널 계측점 삽입
2005SystemTap외부 도구스크립트 기반 커널 프로빙
2008ftrace2.6.27함수 트레이싱 프레임워크
2009perf2.6.31PMU 기반 성능 프로파일링
2009tracepoints2.6.28정적 커널 트레이스포인트
2014BPF tracing (BCC)3.18+eBPF 기반 동적 트레이싱
2017KASAN4.0커널 주소 살균기 (메모리 오류 탐지)
2017UBSAN4.0정의되지 않은 동작 탐지
2018bpftrace4.x+DTrace 스타일 고수준 BPF 트레이싱
2019KCSAN5.3동시성 버그 (data race) 탐지
2020KMSAN5.x초기화되지 않은 메모리 탐지
2022KFENCE5.12경량 메모리 오류 탐지 (프로덕션)
2024perf mem / c2c6.x캐시 라인(Cache Line) 경합(Contention) 분석
# 주요 커널 디버깅 도구 사용 예시

# === ftrace: 함수 트레이싱 ===
cd /sys/kernel/tracing
echo function_graph > current_tracer
echo 'tcp_sendmsg' > set_graph_function
echo 1 > tracing_on
sleep 2
echo 0 > tracing_on
cat trace | head -50

# === perf: 성능 프로파일링 ===
# CPU 프로파일링 (플레임 그래프용)
perf record -g -a sleep 10
perf report --stdio

# 하드웨어 이벤트 카운팅
perf stat -e cycles,instructions,cache-misses,branches,branch-misses ./workload

# 스케줄러 지연시간 분석
perf sched record sleep 5
perf sched latency

# === bpftrace: 고수준 트레이싱 ===
# 프로세스별 시스콜 빈도
bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

# 블록 I/O 지연시간 히스토그램
bpftrace -e 'tracepoint:block:block_rq_issue { @start[args->dev, args->sector] = nsecs; }
tracepoint:block:block_rq_complete /@start[args->dev, args->sector]/ {
  @usecs = hist((nsecs - @start[args->dev, args->sector]) / 1000);
  delete(@start[args->dev, args->sector]);
}'

# TCP 재전송 추적
bpftrace -e 'kprobe:tcp_retransmit_skb { printf("retransmit: %s:%d\n", comm, pid); }'

# === KASAN: 메모리 오류 탐지 (빌드 시 설정) ===
# .config에서 CONFIG_KASAN=y 설정 후 빌드
# 버그 발생 시 dmesg에 상세 리포트 출력
dmesg | grep -A 20 "BUG: KASAN"

# === crash: 커널 덤프 분석 ===
crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/vmcore
# crash> bt     (backtrace)
# crash> ps     (프로세스 목록)
# crash> vm     (가상 메모리)
# crash> log    (커널 로그)
eBPF의 디버깅 혁명: eBPF(2014~)는 커널 디버깅/트레이싱의 패러다임을 바꿨다. 커널을 재빌드하지 않고, 프로덕션 환경에서 안전하게 커널 내부를 관측할 수 있게 되었습니다. Brendan Gregg의 BCC/bpftrace 도구들은 "커널 관측 가능성(observability)"이라는 새로운 분야를 열었으며, 이제는 성능 분석, 보안 모니터링, 네트워크 필터링까지 eBPF가 핵심 기술로 자리잡았습니다.

커널 테스트 인프라 발전

리눅스 커널은 세계 최대 규모의 오픈소스 프로젝트답게 정교한 테스트 인프라를 구축해왔습니다. 초기에는 테스트가 거의 없었으나, 현재는 수십 개의 자동화된 CI 시스템이 매 패치를 검증합니다.

테스트 시스템시작용도운영 주체
LTP (Linux Test Project)2001시스콜, 파일시스템 회귀 테스트SGI → IBM → 커뮤니티
kselftest2012 (3.7)서브시스템별 단위 테스트커널 트리 내장
0-day (Intel)2012빌드/부트/실행 테스트 자동화Intel
kernelci.org2014다중 아키텍처 CILinux Foundation
syzbot (syzkaller)2017커버리지 기반 커널 퍼징Google
KUnit2019 (5.5)커널 내 단위 테스트 프레임워크Google
LKFT2017기능 테스트 자동화Linaro
CKI (CentOS)2019Red Hat 커널 CIRed Hat
virtme-ng2023빠른 커널 부팅/테스트커뮤니티
# 커널 테스트 실행 예시

# === KUnit: 커널 단위 테스트 ===
# 모든 KUnit 테스트 실행 (UML 기반, 하드웨어 불필요)
./tools/testing/kunit/kunit.py run

# 특정 테스트 스위트만 실행
./tools/testing/kunit/kunit.py run --filter=kunit_example

# QEMU에서 실행 (ARM64)
./tools/testing/kunit/kunit.py run --arch=arm64 --cross_compile=aarch64-linux-gnu-

# === kselftest: 서브시스템 테스트 ===
# 전체 selftest 빌드 및 실행
make -C tools/testing/selftests run_tests

# 특정 서브시스템 테스트만
make -C tools/testing/selftests TARGETS=net run_tests
make -C tools/testing/selftests TARGETS=bpf run_tests
make -C tools/testing/selftests TARGETS=mm run_tests

# === syzkaller: 커널 퍼징 (로컬) ===
# syz-manager 설정 후 실행
./bin/syz-manager -config my.cfg

# === LTP: 회귀 테스트 ===
# 기본 시스콜 테스트
./runltp -f syscalls -z -o /tmp/ltp-results.log

# === virtme-ng: 빠른 커널 부팅 ===
# 현재 커널 소스로 빌드 후 즉시 부팅
vng --build --run
# 특정 명령 실행 후 종료
vng --run -- uname -r
syzbot의 영향: Google의 syzbot은 매일 수천 개의 커널 빌드를 퍼징하여 수백 개의 버그를 자동 발견합니다. 2017년 이후 syzbot이 보고한 커널 버그는 10,000건 이상이며, 이 중 상당수가 보안 취약점이었습니다. syzbot은 reproducer와 bisect 결과까지 자동 생성하여 개발자의 디버깅 부담을 크게 줄였습니다.

커널 문서화 시스템 변천

커널 문서화 체계의 발전은 프로젝트 규모 성장과 개발자 온보딩의 필요성을 반영합니다.

시기시스템특징
1991~2000일반 텍스트 (Documentation/)형식 없는 .txt 파일
2000DocBook XML구조화된 API 문서 (xmlto 빌드)
2004kernel-doc 주석소스 코드 내 API 주석 자동 추출
2016Sphinx + reStructuredText현대적 문서 빌드 시스템으로 전환
2017docs.kernel.org온라인 문서 자동 배포
2019.rst 의무화모든 새 문서는 RST 형식
2020MAINTAINERS에 문서 매핑서브시스템별 문서 관리자
2022번역 시스템 강화중국어, 일본어, 한국어, 이탈리아어 문서
# 커널 문서 빌드

# HTML 문서 생성
make htmldocs

# 특정 서브시스템 문서만
make SPHINXDIRS=networking htmldocs
make SPHINXDIRS=driver-api htmldocs

# PDF 생성
make pdfdocs

# kernel-doc 추출 (특정 파일의 API 문서)
scripts/kernel-doc -man include/linux/skbuff.h
scripts/kernel-doc -rst include/linux/list.h

# 문서 검증 (스타일 체크)
make htmldocs 2>&1 | grep WARNING

# 번역 문서 빌드 (한국어)
make SPHINXDIRS=translations/ko_KR htmldocs
kernel-doc 주석 형식: 커널 소스에서 /**로 시작하는 주석은 kernel-doc 형식으로, Sphinx가 자동으로 API 문서를 생성합니다. 새 API를 추가할 때는 반드시 kernel-doc 주석을 작성해야 문서 빌드 경고 없이 통과할 수 있습니다. scripts/kernel-doc -none -Wall로 형식을 검증할 수 있습니다.

리눅스 커널의 문화와 커뮤니케이션

리눅스 커널 개발 커뮤니티는 독특한 문화와 커뮤니케이션 방식을 발전시켜왔습니다. 30년 이상 지속된 메일링 리스트 기반 워크플로우는 현재까지 커널 개발의 근간입니다.

커뮤니케이션 채널

채널용도특징
LKML (linux-kernel@)일반 커널 개발 토론하루 500~1000건, 1991년부터 운영
서브시스템 리스트영역별 개발 (netdev, linux-mm 등)40개 이상 활성 리스트
lore.kernel.org메일 아카이브모든 메일링 리스트 통합 검색
IRC (#kernel, OFTC)실시간 토론비공식 소통 채널
Kernel Summit연간 개발자 회의주요 방향 결정, 대면 토론
LPC (Linux Plumbers)기술 컨퍼런스서브시스템별 심층 기술 토론
bugzilla.kernel.org버그 트래커공식 버그 보고 채널
patchwork패치 추적메일 기반 패치의 상태 관리

패치 워크플로우

# 커널 패치 제출 전체 과정

# 1. 코딩 스타일 검증
scripts/checkpatch.pl --strict -f drivers/net/dsa/my_driver.c

# 2. 패치 생성
git format-patch -v2 --cover-letter -o /tmp/patches HEAD~3
# -v2: 두 번째 버전
# --cover-letter: 시리즈 설명

# 3. 수신자 자동 확인
scripts/get_maintainer.pl /tmp/patches/*.patch

# 4. 패치 전송
git send-email --to=maintainer@example.com \
    --cc=linux-kernel@vger.kernel.org \
    /tmp/patches/*.patch

# 5. 패치 상태 확인
# lore.kernel.org에서 Message-ID로 검색
# patchwork에서 상태 확인 (New/Under Review/Accepted 등)

# 6. 피드백 반영 후 재전송
git format-patch -v3 --cover-letter -o /tmp/patches_v3 HEAD~3
# v3 커버레터에 변경 이력(changelog) 포함

코드 리뷰 태그

태그의미누가 부여
Reviewed-by코드를 상세히 리뷰함리뷰어/메인테이너
Acked-by변경에 동의함 (서브시스템 관리자)관련 서브시스템 메인테이너
Tested-by실제 하드웨어/환경에서 테스트테스터
Reported-by버그를 보고한 사람작성자가 추가
Suggested-by아이디어를 제안한 사람작성자가 추가
Fixes:수정 대상 커밋 참조작성자가 추가
Cc: stable@stable 백포트 요청작성자가 추가
Signed-off-byDCO(Developer Certificate of Origin) 서명모든 기여자 필수
DCO (Developer Certificate of Origin): Signed-off-by 태그는 기여자가 해당 코드의 저작권/라이선스 적합성을 확인하는 법적 선언입니다. 2004년 SCO-IBM 소송 이후 도입되었으며, 모든 커널 패치에 필수입니다. git commit -s로 자동 추가됩니다.

커널 주요 인물과 기여

리눅스 커널의 역사는 핵심 개발자들의 기여와 분리할 수 없습니다. 프로젝트 초기부터 현재까지 커널의 방향을 결정지은 주요 인물들을 정리합니다.

인물주요 기여활동 시기현재 역할
Linus Torvalds커널 창시, Git 개발, 전체 관리1991~현재BDFL / 최종 통합자
Alan Cox네트워킹, TTY, 초기 SMP1991~2013반은퇴 (Intel)
Andrew Mortonmm, -mm 트리, 통합 관리2001~현재부관리자 (Google)
David S. Miller네트워킹 스택, SPARC1996~현재net 메인테이너 (Oracle)
Greg Kroah-Hartman드라이버 코어, USB, stable 관리2001~현재stable 관리자 (Linux Foundation)
Thomas Gleixner인터럽트, 타이머, PREEMPT_RT2003~현재x86 공동 메인테이너
Ingo Molnar스케줄러(CFS), perf, RT2001~현재tip 트리 관리자 (Red Hat)
Tejun Heocgroups v2, workqueue, sata/libata2005~현재cgroup/workqueue (Meta)
Dave AirlieDRM/GPU 서브시스템2004~현재DRM 메인테이너 (Red Hat)
Jakub Kicinski네트워크 드라이버, BPF2016~현재net 공동 메인테이너 (Meta)
Miguel OjedaRust for Linux2021~현재Rust 서브시스템 관리자
Alexei StarovoitoveBPF 확장 (프로그래머블 커널)2014~현재BPF 메인테이너 (Meta)
Jens Axboe블록 레이어, io_uring2001~현재block/io_uring (Oracle)
Ted Ts'oext2/3/4 파일시스템, e2fsprogs1991~현재ext4 메인테이너 (Google)
Chris MasonBtrfs 개발2007~현재Btrfs 원 저자 (Meta)
Christoph HellwigVFS, 블록 I/O, DMA API2000~현재다수 서브시스템 리뷰어

기업별 기여 비중 (2024년 기준)

현대 리눅스 커널 개발은 기업 후원에 크게 의존합니다. Linux Foundation의 분석에 따르면 전체 커밋의 약 85%가 기업 소속 개발자에 의해 이루어집니다.

기업기여 비중 (6.x)주요 관심 영역
Intel~12%x86, 드라이버, 보안, Wi-Fi
Red Hat~10%스케줄러, RHEL 커널, 가상화
Google~8%Android, eBPF, 메모리, KVM
Linaro~6%ARM, Device Tree, 전원 관리
AMD~5%GPU(amdgpu), CPU, KVM
Meta~4%eBPF, cgroups, 네트워킹
NVIDIA~3%GPU(nouveau/open), Tegra
Microsoft~3%Hyper-V, WSL, Surface
Samsung~3%ARM, 스토리지, F2FS
SUSE~2%Btrfs, 엔터프라이즈 기능
개인/독립~15%다양한 영역
자원봉사에서 기업 주도로: 리눅스 커널 개발은 1991년 Linus의 개인 프로젝트에서 시작하여 수천 명의 자원봉사 개발자가 참여하는 프로젝트로 성장했습니다. 2005년 이후 기업 기여가 급증하여 현재는 대부분의 커밋이 유급 개발자에 의해 이루어집니다. 그러나 개인 기여자(취미, 학술)의 역할은 새로운 아이디어 제안과 소규모 서브시스템 유지에서 여전히 중요합니다.

주요 기술 논쟁과 분기점

리눅스 커널 30년 역사에서 커뮤니티를 뒤흔든 주요 기술 논쟁들은 프로젝트의 방향을 결정지었습니다. 각 논쟁의 배경, 결과, 교훈을 정리합니다.

마이크로커널 vs 모놀리식 (1992)

Andrew Tanenbaum과 Linus Torvalds의 유명한 논쟁. Tanenbaum은 "Linux는 시대에 뒤떨어진 모놀리식 설계"라고 비판했으나, Linus는 실용적 성능을 이유로 모놀리식을 고수했습니다. 결과적으로 loadable module, 네임스페이스 등 모듈화 기법으로 모놀리식의 단점을 보완하며 현재에 이르렀습니다.

BitKeeper 논쟁과 Git 탄생 (2002~2005)

2002년 Linus가 상용 VCS인 BitKeeper를 채택하면서 오픈소스 커뮤니티 내 논란이 시작되었습니다. 2005년 BitKeeper의 무료 라이선스가 철회되자 Linus가 2주 만에 Git을 개발했습니다. 이 사건은 분산 VCS의 혁명을 일으켰고, Git은 현재 세계에서 가장 널리 쓰이는 VCS가 되었습니다.

스케줄러 전쟁: O(1) vs CFS (2007)

Con Kolivas의 RSDL/BFS 스케줄러와 Ingo Molnar의 CFS(Completely Fair Scheduler) 사이의 경쟁. 결과적으로 CFS가 2.6.23에 병합되어 2024년까지 17년간 기본 스케줄러로 사용되었습니다. 2024년 6.6에서 Peter Zijlstra의 EEVDF가 CFS를 대체하며 새로운 시대를 열었습니다.

GPL 전용 심볼 논쟁 (지속)

NVIDIA 등의 바이너리 전용 드라이버가 GPL 전용 심볼(EXPORT_SYMBOL_GPL)을 사용할 수 없는 문제는 커널 라이선스 정책의 핵심 논쟁입니다. Linus의 유명한 "NVIDIA, f*** you" 발언(2012)은 이 갈등을 상징합니다. 2022년 NVIDIA가 커널 모듈을 오픈소스화하면서 일부 해소되었습니다.

Rust 도입 논쟁 (2020~현재)

C 언어 30년 전통의 커널에 Rust를 도입하는 것은 커뮤니티 내 가장 뜨거운 논쟁 중 하나입니다. 메모리 안전성(Rust 지지) vs 복잡성 증가/학습 곡선(반대)의 대립이 지속되고 있습니다. 2022년 6.1에서 Rust 인프라가 병합되었고, 2024년부터 실제 드라이버(nova-gpu)가 작성되고 있지만, 일부 메인테이너들의 반발도 여전합니다.

코드 오브 컨덕트 도입 (2018)

Linus Torvalds가 일시적으로 커널 관리를 중단하고 Linux Foundation의 Contributor Covenant를 채택한 사건. 이전의 "Code of Conflict"를 대체하여 보다 포용적인 커뮤니티 문화로의 전환을 시도했습니다. Linus는 자신의 공격적인 커뮤니케이션 스타일을 반성하며 복귀했습니다.

기술 선택의 교훈: 커널의 주요 기술 논쟁들은 대부분 "이론적 우수성 vs 실용적 효과"의 대립이었습니다. 모놀리식 설계, Git, CFS 모두 이론적 최적이 아닌 실용적 판단이 승리한 사례입니다. 이것이 "Talk is cheap. Show me the code." (Linus Torvalds)라는 커널 커뮤니티 철학의 근간입니다.

커널과 산업 생태계

리눅스 커널은 세계 IT 인프라의 근간입니다. 서버, 클라우드, 모바일, 임베디드, 슈퍼컴퓨터까지 거의 모든 컴퓨팅 영역에서 지배적 위치를 차지합니다.

시장 점유율 (2025~2026)

분야리눅스 점유율비고
슈퍼컴퓨터 (Top500)100%2017년부터 전수 리눅스
클라우드 서버~90%AWS, GCP, Azure 기본 OS
웹 서버~80%Apache, Nginx, Caddy 운영
모바일 (Android)~72%Android 커널 = 리눅스 커널
IoT/임베디드~65%라우터, NAS, 산업 자동화
컨테이너 호스트~95%Docker/Kubernetes 표준 OS
데스크톱~4%지속적 성장 (Steam Deck 영향)

주요 배포판 커널 정책

배포판커널 정책현재 커널지원 기간
RHEL 95.14 기반 + 백포트5.14.0-xxx2032년 (10년)
Ubuntu 26.04 LTS7.0 기반 + HWE7.0.0-xxx2031년 (5년)
Ubuntu 24.04 LTS6.8 기반 + HWE6.8.0-xxx2029년 (5년)
Debian 13 (Trixie)6.6/6.12 LTS 기반6.12.xxx2029년+ (5년+)
Debian 12 (Bookworm)6.1 LTS 기반6.1.xxx2028년 (5년+)
Fedora 44 (2026-04-28 예정)최신 안정 커널6.19~13개월
Arch Linux최신 릴리스 직후6.19.13롤링 릴리스
Android 16GKI 2.0 (6.12 LTS)6.12.xxx기기 수명
ChromeOSLTS + 백포트6.6/6.12기기 AUE 날짜
SLES 15 SP66.4 기반 + 백포트6.4.xxx2031년

Android GKI (Generic Kernel Image)

Google의 GKI는 Android 커널 파편화 문제를 해결하기 위한 핵심 프로젝트입니다. 기존에는 각 제조사(삼성, 퀄컴, 미디어텍 등)가 독자적으로 포크한 커널을 사용했으나, GKI 2.0(Android 12+)부터 Google이 단일 커널 바이너리를 제공하고 벤더 모듈만 별도로 로드하는 구조로 전환했습니다.

# Android GKI 커널 구조

# GKI 커널 (Google 제공, 공통)
boot.img
├── kernel (vmlinuz - GKI)     # 모든 기기 공통
├── ramdisk.img                # 초기 램디스크
└── dtb                        # Device Tree Blob

# 벤더 모듈 (제조사 제공, 기기별)
vendor_boot.img
├── vendor_ramdisk.img
└── dtb (추가 오버레이)

vendor_dlkm.img
└── lib/modules/               # 벤더 커널 모듈 (.ko)
    ├── qcom_xxx.ko            # 퀄컴 SoC 드라이버
    ├── samsung_xxx.ko         # 삼성 하드웨어 드라이버
    └── camera_xxx.ko          # 카메라 HAL 드라이버

# GKI 버전 확인 (Android 기기에서)
uname -r
# 예: 6.6.30-android15-6-gxxxxxxxx

# GKI 모듈 심볼 리스트 (ABI 안정성 보장)
# android/abi_gki_aarch64.stg 파일로 관리

클라우드 커널 커스터마이징

주요 클라우드 공급자들은 자체 커널을 운영하여 가상화 성능과 보안을 최적화합니다.

클라우드커널특징
AWSAmazon Linux Kernel (5.10/6.1 LTS)Nitro 하이퍼바이저 최적화, ENA 드라이버
Google CloudGKE 커널 (COS)Container-Optimized OS, eBPF 강화
AzureMicrosoft Linux KernelHyper-V 최적화, CBL-Mariner
Oracle CloudUEK (Unbreakable Enterprise Kernel)DTrace, Btrfs 강화
IBM CloudRHEL 커널 기반POWER/s390x 최적화
커널 생태계의 선순환: 클라우드 기업들이 자체 커널을 운영하면서 발견한 버그 수정과 성능 개선은 대부분 메인라인에 다시 기여됩니다. AWS의 Firecracker(KVM 기반 마이크로VM), Google의 gVisor(시스콜 필터링), Meta의 eBPF 생태계 등은 모두 메인라인 커널에 기반하며 개선사항을 업스트림합니다. 이러한 선순환 구조가 리눅스 커널의 지속적인 발전을 보장합니다.

실시간 리눅스와 자동차/산업 분야

PREEMPT_RT의 메인라인 통합(6.12)은 자동차, 로봇, 산업 자동화 분야에서 리눅스 채택을 가속화하고 있습니다. 이전에는 별도의 RT 패치를 유지해야 했으나, 이제 표준 커널에서 하드 실시간을 달성할 수 있습니다.

표준리눅스 활용요구 지연시간
AUTOSAR Adaptive자율주행 ECU의 OS 후보<1ms
AGL (Automotive Grade Linux)IVI/클러스터/ADAS 플랫폼5~50ms (IVI)
ROS 2 (Robot OS)로봇 제어 미들웨어<1ms (모터 제어)
EtherCAT/PROFINET산업용 실시간 이더넷<1ms (사이클 타임)
5G RAN (O-RAN)기지국 L1/L2 처리<100us
# PREEMPT_RT 커널 설정 및 검증

# RT 커널 빌드 설정
make menuconfig
# General setup → Preemption Model → Fully Preemptible Kernel (RT)
# CONFIG_PREEMPT_RT=y

# RT 커널 확인
uname -a
# ...SMP PREEMPT_RT...

# 최악 지연시간 측정 (cyclictest)
cyclictest -m -p 99 -t 4 -D 60 -q
# T: 0 Min:   2 Act:   5 Avg:   4 Max:  18
# T: 1 Min:   2 Act:   4 Avg:   4 Max:  22
# Max < 50us가 일반적인 RT 성능 기준

# IRQ 스레드 확인 (RT에서는 대부분의 IRQ가 스레드화)
ps -eo pid,cls,rtprio,comm | grep irq

# RT 태스크 우선순위 설정
chrt -f 80 ./my_realtime_app      # SCHED_FIFO, 우선순위 80
chrt -r 50 ./my_realtime_app      # SCHED_RR, 우선순위 50

# CPU isolation (RT 전용 코어 확보)
# 커널 부팅 파라미터: isolcpus=2,3 nohz_full=2,3 rcu_nocbs=2,3
taskset -c 2 ./my_realtime_app    # 격리된 CPU 2에서 실행
실시간 vs 처리량(Throughput): PREEMPT_RT는 최악 지연시간을 보장하지만 전체 처리량은 감소합니다. 서버 워크로드에서는 기본 PREEMPT_DYNAMIC이 더 적합하며, 실시간이 필요한 특수 환경에서만 PREEMPT_RT를 사용해야 합니다. 하이브리드 접근법으로 RT 코어와 처리량 코어를 분리하는 것이 일반적입니다.

커널 참고 도서 (역사 이해에 도움)

도서저자연도내용
Just for FunLinus Torvalds2001리눅스 탄생 스토리 (자서전)
Rebel CodeGlyn Moody2001리눅스와 오픈소스 역사
Understanding the Linux KernelBovet, Cesati20052.6 커널 내부 구조 상세
Linux Kernel DevelopmentRobert Love2010커널 개발 입문서 (3rd ed.)
Linux Device DriversCorbet, Rubini, Kroah-Hartman2005드라이버 개발 바이블 (LDD3)
The Art of Linux Kernel DesignLixin Yang2014커널 설계 철학
BPF Performance ToolsBrendan Gregg2019eBPF 기반 성능 분석
Linux Observability with BPFCalavera, Fontana2019BPF 관측 가능성
Learning eBPFLiz Rice2023현대 eBPF 프로그래밍

참고자료

리눅스 커널의 역사, 개발 프로세스, 거버넌스에 대한 공식 문서와 외부 참고 자료입니다.

커널 공식 문서 및 아카이브

역사 및 문화 자료

버전 관리와 Git 역사

컨퍼런스 및 발표

서적

커널 역사와 함께 이해하면 유용한 문서들입니다.