Mã nguồn nhân Linux
Nhân Linux là lớp phần mềm nền tảng của các hệ điều hành Linux, chịu trách nhiệm quản lý tài nguyên phần cứng, thực thi các ranh giới bảo mật, và cung cấp các dịch vụ hệ thống cốt lõi mà tất cả phần mềm khác phụ thuộc vào.
Nhân Linux là xương sống của hàng tỷ thiết bị trên toàn thế giới—thiết yếu cho các nhà phát triển làm việc với nội bộ hệ điều hành, driver, phần mềm hệ thống, và bất kỳ ai cần hiểu hoặc sửa đổi cách Linux hoạt động ở cấp độ thấp nhất.
Vấn đề nó giải quyết
Việc hiểu cách nhân hệ điều hành hoạt động, đóng góp vào phần mềm hệ thống cốt lõi, viết driver phần cứng, hoặc debug các vấn đề hệ thống cấp thấp đòi hỏi quyền truy cập và khả năng đọc hiểu mã nguồn nhân thực tế.
Đây là gì?
Nhân Linux là thành phần cốt lõi của hệ điều hành Linux, được viết chủ yếu bằng C, giao tiếp trực tiếp với phần cứng trong khi cung cấp quyền truy cập được kiểm soát vào tài nguyên hệ thống cho tất cả phần mềm khác chạy trên máy.
Vì sao đang được chú ý
Với hơn 238.000 star và 63.000 fork, nhân Linux vẫn là một trong những dự án nguồn mở tích cực và quan trọng nhất hiện nay, vận hành mọi thứ từ máy chủ, điện thoại thông minh, thiết bị nhúng đến siêu máy tính.
Tính năng chính
- ✓Lớp trừu tượng phần cứng quản lý CPU, bộ nhớ, lưu trữ và thiết bị ngoại vi
- ✓Quản lý tiến trình và bộ nhớ với các thuật toán lập lịch tiên tiến
- ✓Hỗ trợ filesystem toàn diện bao gồm ext4, Btrfs, XFS và các filesystem mạng
- ✓Stack mạng hỗ trợ IPv4/IPv6, định tuyến, tường lửa và các giao thức nâng cao
- ✓Framework bảo mật bao gồm SELinux, AppArmor và seccomp
- ✓Kiến trúc driver mở rộng cho tích hợp với phần cứng từ nhiều nhà cung cấp
- ✓Tài liệu nhân toàn diện bao gồm phát triển, bảo mật và quản trị
Trường hợp dùng tốt nhất
- •Phát triển driver mức nhân cho thiết bị phần cứng mới
- •Đóng góp hoặc duy trì các bản phân phối Linux
- •Nghiên cứu học thuật về thiết kế và triển khai hệ điều hành
- •Nghiên cứu bảo mật và phân tích lỗ hổng trên nhân
- •Xây dựng hệ thống Linux nhúng tùy chỉnh cho phần cứng cụ thể
Cách cài đặt / dùng thử
Build từ source: clone repo, cấu hình với make menuconfig, biên dịch với make, cài đặt với make modules_install và make install. Kernel đã build sẵn có tại kernel.org.
Cách sử dụng
Mã nguồn nhân dùng để build kernel tùy chỉnh, phát triển driver (loadable kernel modules), áp dụng patch, nghiên cứu nội bộ OS hoặc đóng góp upstream. Người dùng clone repo, đọc Documentation/ và làm theo hướng dẫn quy trình phát triển.
Điểm mạnh
- ✓Vận hành đa số máy chủ, điện thoại thông minh (Android) và hạ tầng đám mây trên toàn thế giới
- ✓Được tài liệu hóa cực kỳ tốt với hướng dẫn mở rộng cho nhà phát triển, sysadmin và nhà nghiên cứu
- ✓Phát triển do cộng đồng dẫn dắt với quy trình đóng góp rõ ràng và cấu trúc maintainer
- ✓Hỗ trợ sự đa dạng phần cứng rộng lớn từ thiết bị IoT đến siêu máy tính
- ✓Phản hồi bảo mật tích cực và chính sách phát hành kernel ổn định
Hạn chế & rủi ro
- △Repository không chỉ định giấy phép—người dùng phải tham khảo file COPYING để hiểu điều khoản pháp lý trước khi sử dụng hoặc sửa đổi code
- △Độ phức tạp của codebase cực kỳ cao; điều hướng và hiểu các subsystem đòi hỏi chuyên môn và thời gian đáng kể
- △Build kernel tùy chỉnh tốn thời gian; các bản build đầy đủ có thể mất một giờ hoặc hơn trên phần cứng thông thường
- △Không phù hợp cho người tìm kiếm hệ điều hành sẵn sàng chạy—chỉ có mã nguồn nhân được cung cấp ở đây
Lựa chọn thay thế
Ai nên thử — và ai nên bỏ qua
Nhà phát triển phần mềm hệ thống, người viết driver, nhà nghiên cứu OS, nhà phân tích bảo mật, maintainer bản phân phối, và bất kỳ ai cần hiểu hoặc sửa đổi cách Linux tương tác với phần cứng ở cấp độ thấp nhất. Người dùng thông thường hoặc những người tìm kiếm hệ điều hành hoàn chỉnh nên tìm ở nơi khác—chỉ có mã nguồn nhân được cung cấp ở đây.
Câu hỏi thường gặp
Clone repository, cài đặt build dependency (xem Documentation/process/changes.rst), cấu hình với 'make menuconfig' hoặc 'make defconfig', biên dịch với 'make -j$(nproc)', sau đó cài đặt với 'make modules_install' và 'make install'. Các bản build đầy đủ thường đòi hỏi thời gian và không gian đĩa đáng kể.
Nhân Linux được viết chủ yếu bằng C, với một số code assembly phụ thuộc kiến trúc cho các hoạt động quan trọng về hiệu suất và khởi tạo phần cứng.
Đọc Documentation/process/development-process.rst để được hướng dẫn, đăng ký các mailing list của subsystem liên quan qua lore.kernel.org, học phong cách code từ Documentation/process/coding-style.rst, và làm theo quy trình gửi patch trong Documentation/process/submitting-patches.rst.
Repository mã nguồn nhân Linux không chỉ định giấy phép trong các trường GitHub tiêu chuẩn. Người dùng nên tham khảo file COPYING ở thư mục gốc của repository để biết điều khoản giấy phép áp dụng.