Hiện trạng các dòng Linux kernel: từ 3.x đến 7.0¶
Số major của kernel chỉ là quy ước đặt tên, không phản ánh breaking change. Khác biệt thực sự nằm ở các tính năng tích lũy qua từng bản nhỏ. Bài này điểm lại các mốc chính từ 3.x đến 7.0 (đối chiếu ngày 28/09/2026) và những lưu ý cho công việc embedded.
Tổng quan¶
Các mốc tính năng theo phiên bản và tháng phát hành; khoảng cách giữa các ô không biểu diễn thời lượng. Thông tin bảo trì LTS/CIP cần được theo dõi ở bảng riêng.
Nguồn timeline: kernel.org, Linux Kernel documentation, PSI, folio trong 5.16, BPF CO-RE. Đối chiếu 28/09/2026.
Số major (3 → 4 → 5 → 6 → 7) chỉ là quy ước đặt tên, không phản ánh breaking change. Linus tăng số major khi số minor đạt khoảng .19/.20. Khác biệt thực sự nằm ở các tính năng tích lũy qua từng bản nhỏ.
| Dòng | Thời gian | Điểm nhấn |
|---|---|---|
| 3.x | 2011 - 2015 | Dọn dẹp ARM, Device Tree, ARM64, NO_HZ_FULL, SCHED_DEADLINE, container nền tảng |
| 4.x | 2015 - 2018 | eBPF mở rộng, cgroup v2, BBR, giảm thiểu Spectre/Meltdown, PSI |
| 5.x | 2019 - 2022 | io_uring, WireGuard, Landlock, BPF CO-RE, memory folio |
| 6.x | 2022 - 2026 | Rust, MGLRU, EEVDF, PREEMPT_RT mainline, sched_ext |
| 7.0 | 2026 | Kế thừa 6.x, tiếp tục hoàn thiện Rust, scheduler, BPF, driver |
Các nhánh tồn tại song song trên cùng một trục thời gian (bản review 28/09/2026). Dấu * là EOL dự kiến; CIP được vẽ xấp xỉ theo năm. Nguồn: kernel.org, CIP Kernel WG "A Decade of Stability" (06/08/2026). Chưa gồm vòng đời hỗ trợ riêng của các bản phân phối và nhà cung cấp BSP.
Linux 3.x (7/2011 - 4/2015, từ 3.0 đến 3.19)¶
Bản 3.0 về bản chất là bản 2.6.40 được đổi tên, không đi kèm thay đổi lớn.
- ARM đa nền tảng + ARM64 (3.7): Khái niệm: dọn dẹp mã board-specific rời rạc, chuyển cấu hình phần cứng sang Device Tree; thêm kiến trúc ARM64 (AArch64). Mục đích: một kernel image chạy được nhiều board ARM khác nhau thay vì build riêng từng board; mở đường cho CPU ARM 64-bit hiệu năng cao. Tham khảo.
- NO_HZ_FULL (3.10): Khái niệm: cơ chế giảm ngắt nhịp lập lịch định kỳ trên CPU có một tác vụ sẵn sàng chạy khi đủ điều kiện. Mục đích: giảm nhiễu thời gian xử lý (jitter), hữu ích cho ứng dụng tính toán, xử lý gói và thời gian thực. Không loại bỏ mọi ngắt hoặc nguồn nhiễu của hệ thống. Tham khảo.
- SCHED_DEADLINE (3.14): Khái niệm: chính sách lập lịch phân bổ thời gian CPU theo ngân sách và thời hạn hoàn thành của tác vụ. Mục đích: hỗ trợ các công việc có yêu cầu thời gian rõ ràng, như xử lý theo chu kỳ hoặc điều khiển. Khả năng đáp ứng deadline phụ thuộc tính khả thi của tải và điều kiện hệ thống; không tự bảo đảm hard real-time cho toàn bộ ứng dụng. Tham khảo.
- User namespace (3.8): Khái niệm: ánh xạ UID/GID khác nhau giữa host và namespace con. Mục đích: cho phép tiến trình có "root ảo" trong container mà không có quyền root thật trên host, nền tảng bảo mật container. Tham khảo.
- OverlayFS (3.18): Khái niệm: filesystem xếp lớp, gộp lớp chỉ đọc (lower) và lớp ghi (upper) thành một view. Mục đích: cơ chế layer ảnh của Docker/containerd, tiết kiệm dung lượng khi nhiều container dùng chung base image. Tham khảo.
- Mạng: Open vSwitch (3.3), switch ảo cho SDN/ảo hóa mạng. CoDel/fq_codel (3.5), thuật toán chống bufferbloat, giảm độ trễ hàng đợi. TCP Fast Open (3.6-3.7), bỏ bớt 1 vòng bắt tay TCP để giảm độ trễ kết nối. nftables (3.13), framework lọc gói thế hệ mới thay iptables. eBPF bắt đầu từ 3.15, syscall
bpf()ở 3.18, nền móng cho quan sát hệ thống và lọc gói hiệu năng cao sau này. - Block và lưu trữ: F2FS (3.8), filesystem tối ưu riêng cho flash (SSD/eMMC), tăng tuổi thọ và tốc độ ghi. bcache (3.10), dùng SSD làm cache cho HDD. zswap (3.11), nén trang nhớ trước khi swap, giảm I/O. blk-mq (3.13), block layer đa hàng đợi, khai thác NVMe/nhiều core. zram ra khỏi staging (3.14), swap ảo nén ngay trong RAM, tiết kiệm cho thiết bị ít RAM.
- API mới: memfd_create, vùng nhớ ẩn danh có file descriptor. seccomp syscall, lọc syscall được phép gọi, dùng để sandbox. getrandom (khoảng 3.17), lấy số ngẫu nhiên an toàn từ kernel cho sinh khóa mã hóa.
- LTS nổi tiếng: 3.2, 3.4, 3.10, 3.14, 3.18. Nhiều BSP embedded và thiết bị mạng đời cũ vẫn chạy 3.10 hoặc 3.14.
- Còn thiếu so với các bản sau: cgroup v2, io_uring, PREEMPT_RT mainline, eBPF đầy đủ.
Linux 4.x (2015 - 2018)¶
- eBPF mở rộng: Khái niệm: máy ảo nhỏ trong kernel chạy chương trình đã verify an toàn tại các hook (mạng, syscall, tracing) mà không cần sửa kernel. Mục đích: quan sát hệ thống (observability), lọc gói tốc độ cao (XDP), bảo mật runtime (Cilium, Falco) không cần module kernel tùy biến rủi ro.
- cgroup v2 (4.5): Khái niệm: viết lại cơ chế giới hạn tài nguyên (CPU, RAM, I/O) theo một cây thống nhất thay vì nhiều cây rời rạc như v1. Mục đích: quản lý tài nguyên nhất quán và chính xác hơn cho Docker/Kubernetes. Tham khảo.
- OverlayFS trưởng thành: tiếp tục ổn định làm nền cho layer ảnh container (xem giải thích ở 3.18).
- BBR (4.9): Khái niệm: thuật toán điều khiển nghẽn TCP của Google, đo băng thông và độ trễ thay vì chỉ dựa vào mất gói như CUBIC. Mục đích: thông lượng cao và độ trễ thấp hơn trên mạng có bufferbloat. Tham khảo.
- Giảm thiểu Spectre/Meltdown (4.15): Khái niệm: các bản vá (KPTI, retpoline...) chống khai thác qua speculative execution của CPU. Mục đích: chặn rò rỉ dữ liệu qua side-channel, đánh đổi bằng một phần hiệu năng. Tham khảo.
- Device Tree và ARM64 trưởng thành: được nhiều nhà sản xuất SoC hỗ trợ chính thức hơn, giảm khối lượng công việc khi port sang BSP mới.
- PSI, Pressure Stall Information (4.20): Khái niệm: cơ chế đo thời gian tác vụ bị đình trệ do tranh chấp CPU, bộ nhớ hoặc I/O, phản ánh áp lực tài nguyên thay vì chỉ mức sử dụng CPU hay lượng RAM còn trống. Mục đích: phát hiện tình trạng thiếu tài nguyên đang ảnh hưởng đến ứng dụng, hỗ trợ giám sát và quyết định phân bổ tài nguyên. Tham khảo.
Linux 5.x (2019 - 2022)¶
- io_uring (5.1): Khái niệm: giao diện I/O bất đồng bộ cho phép ứng dụng gửi yêu cầu và nhận kết quả qua các hàng đợi dùng chung với kernel. Mục đích: giảm chi phí giao tiếp ứng dụng–kernel và xử lý nhiều yêu cầu I/O hiệu quả hơn, hữu ích cho lưu trữ, cơ sở dữ liệu và dịch vụ mạng. Mức cải thiện phụ thuộc workload và cách sử dụng; không mặc định mọi thao tác đều bỏ được syscall. Tham khảo.
- WireGuard (5.6): Khái niệm: giao thức VPN gọn (~4000 dòng code) được đưa thẳng vào kernel thay vì chạy userspace như OpenVPN. Mục đích: VPN nhanh hơn, dễ audit bảo mật hơn, độ trễ thấp hơn nhờ chạy trong kernel. Tham khảo.
- API mount mới (~5.2): Khái niệm: giao diện mới để tạo, cấu hình và gắn hệ thống tệp vào cây thư mục. Mục đích: giúp quản lý mount linh hoạt hơn và xử lý cấu hình, lỗi rõ ràng hơn cho công cụ hệ thống và container. Tham khảo.
- Time namespace (5.6): Khái niệm: cơ chế cho container có giá trị riêng của các đồng hồ monotonic và boottime, không bao gồm đồng hồ ngày giờ
CLOCK_REALTIME. Mục đích: duy trì cách ứng dụng nhìn nhận thời gian khi lưu/khôi phục trạng thái hoặc di chuyển container giữa các máy. Tham khảo. - Landlock: Khái niệm: LSM cho phép ứng dụng tự giới hạn quyền truy cập file/tài nguyên của chính nó, không cần quyền root để cấu hình. Mục đích: sandbox nhẹ cho ứng dụng không tin cậy hoàn toàn (browser, plugin) mà không cần SELinux/AppArmor đầy đủ. Tham khảo.
- BPF CO-RE, Compile Once, Run Everywhere: Khái niệm: cơ chế giúp chương trình eBPF đã biên dịch thích ứng với khác biệt về cấu trúc dữ liệu giữa các kernel, dựa trên thông tin kiểu BTF và công cụ liên quan. Mục đích: giảm nhu cầu biên dịch riêng khi phân phối công cụ quan sát, mạng và bảo mật. Khả năng tương thích vẫn phụ thuộc BTF, tính năng BPF và công cụ trên nền tảng đích; không bảo đảm chạy trên mọi kernel/BSP. Tham khảo.
- Hỗ trợ phần cứng mới: Wi-Fi 6, AMD Zen, ARM64 server; driver và tối ưu lịch CPU cho các nền tảng này.
- Memory folio (5.16): Khái niệm: đối tượng giúp kernel quản lý một hoặc nhiều trang nhớ vật lý liên tiếp như một đơn vị; không đồng nghĩa với hugepage và không thay thế toàn bộ
struct page. Mục đích: đơn giản hóa quản lý bộ nhớ, đặc biệt trong page cache, và hỗ trợ xử lý các khối nhớ lớn với ít chi phí quản lý hơn. Việc sử dụng folio tiếp tục được mở rộng trong 6.x. Tham khảo.
Linux 6.x (2022 - 2026)¶
- Rust vào kernel (6.1): Khái niệm: hỗ trợ ban đầu để phát triển mã kernel bằng Rust bên cạnh C. Mục đích: giảm nguy cơ lỗi an toàn bộ nhớ và data race trong mã được viết bằng Rust. Mức an toàn còn phụ thuộc tính đúng đắn của mã
unsafevà lớp giao tiếp với C; Rust không loại bỏ mọi lỗi logic hay race condition. Tham khảo. - MGLRU, Multi-Gen LRU (6.1): Khái niệm: cơ chế lựa chọn trang nhớ để thu hồi, phân nhóm theo các thế hệ phản ánh mức độ gần đây của việc truy cập. Mục đích: giúp kernel giữ lại dữ liệu còn hữu ích và thu hồi dữ liệu ít được dùng, cải thiện hiệu quả sử dụng RAM và hiệu năng khi thiếu bộ nhớ. MGLRU không tự bảo đảm giới hạn độ trễ cho ứng dụng thời gian thực. Tham khảo.
- EEVDF (bắt đầu từ 6.6): Khái niệm: cơ chế chọn tác vụ trong nhóm lập lịch công bằng (fair class), được đưa vào để thay dần cách chọn tác vụ của CFS. Mục đích: cân bằng việc phân chia CPU với khả năng đáp ứng của tác vụ nhạy độ trễ. Không thay thế các chính sách lập lịch thời gian thực hoặc cam kết deadline cho ứng dụng. Tham khảo.
- PREEMPT_RT vào mainline (6.12): Khái niệm: tập thay đổi giúp kernel dễ nhường CPU hơn cho tác vụ ưu tiên cao. Mục đích: giảm độ trễ đáp ứng và hỗ trợ ứng dụng thời gian thực trong điều khiển, embedded và RAN. Mức độ trễ phụ thuộc nền tảng và workload; PREEMPT_RT không thay thế cơ chế đồng bộ thời gian. Tham khảo.
- sched_ext (6.12): Khái niệm: framework viết bộ lập lịch CPU tùy chỉnh bằng eBPF, nạp/gỡ khi đang chạy mà không cần build lại kernel. Mục đích: thử nghiệm hoặc triển khai chính sách lập lịch chuyên biệt mà không đụng vào core kernel. Tham khảo.
Linux 7.0 (2026)¶
Chủ yếu kế thừa 6.x: Rust được dùng nhiều hơn, tiếp tục hoàn thiện scheduler, BPF và driver. Phần này chưa kiểm chứng chi tiết, cần đối chiếu thêm trên kernelnewbies.org.
Lưu ý cho công việc embedded¶
Phân biệt ba bài toán thời gian trong embedded/RAN¶
| Bài toán | Mục đích | Cơ chế liên quan |
|---|---|---|
| Ngân sách CPU | Cấp đủ thời gian xử lý để tác vụ hoàn thành công việc. | Chính sách lập lịch và phân bổ tài nguyên; SCHED_DEADLINE là một lựa chọn khi phù hợp. |
| Độ trễ đáp ứng | Giảm thời gian chờ từ khi tác vụ cần chạy đến khi thực sự được thực thi. | PREEMPT_RT và giảm nhiễu hệ điều hành; NO_HZ_FULL xử lý nguồn nhiễu từ scheduling tick. |
| Đồng bộ thời gian/tần số | Giữ đồng hồ bám nguồn tham chiếu để các thành phần phối hợp đúng thời gian. | GNSS/PTP cho thời gian/pha tùy kiến trúc; SyncE hỗ trợ đồng bộ tần số. |
Ba bài toán có liên quan nhưng không thay thế nhau: được cấp đủ CPU không đồng nghĩa đáp ứng tức thời, và đáp ứng nhanh không đồng nghĩa đồng hồ đã đồng bộ chính xác.
Phần scheduler/real-time, time namespace, CO-RE và Rust được đối chiếu nguồn ngày 28/09/2026. Nội dung tại đây tập trung vào khái niệm và mục đích; cấu hình, triển khai và đo kiểm thuộc tài liệu chuyên sâu.
- ABI userspace gần như không đổi, nhưng API nội bộ kernel đổi liên tục giữa các bản, nên out-of-tree driver/module phải port lại.
- Từ 6.12, PREEMPT_RT có trong mainline trên các kiến trúc được hỗ trợ. Cần kiểm tra cấu hình, BSP/driver và đo latency trên hệ thống đích; không mặc định mọi nền tảng đều hết nhu cầu vá riêng.
- Các mốc theo từng bản nhỏ được viết từ trí nhớ, nên đối chiếu trên kernelnewbies.org khi cần độ chính xác cao.

