- Hướng dẫn từng bước để người dùng tự xây dựng một hệ thống Linux trực tiếp từ mã nguồn
- Phiên bản 12.4 được công bố vào ngày 1 tháng 9 năm 2025, bao gồm kernel 6.16.1 mới nhất cùng GCC 15.2.0, Glibc 2.42 và nhiều thành phần khác
- Bao quát toàn bộ quy trình từ cấu hình cross-toolchain để build hệ thống, cài đặt các công cụ tạm thời, cho đến hoàn thiện một hệ thống có thể khởi động
- Mỗi chương cung cấp chi tiết rõ ràng về danh sách gói, thứ tự build, quy trình kiểm thử, cấu hình hệ thống
- Là tài liệu quan trọng để các nhà phát triển và kỹ sư hệ thống học cấu trúc bên trong của Linux và tạo ra bản phân phối tùy biến
Tổng quan
- Linux From Scratch (LFS) là một dự án được thiết kế để người dùng tự build hệ thống Linux mà không cần dựa vào bản phân phối có sẵn
- Giải thích từng bước quy trình biên dịch và cấu hình mọi thành phần từ mã nguồn
- Được sáng lập bởi Gerard Beekmans, biên tập duy trì do Bruce Dubbs phụ trách
- Tài liệu được cung cấp dưới dạng sổ tay trực tuyến dựa trên HTML, trong đó nêu rõ các liên kết chi tiết và phiên bản gói cho từng bước
Thông tin phiên bản
- Phiên bản ổn định hiện tại là 12.4, phát hành ngày 1 tháng 9 năm 2025
- Bản quyền thuộc về Gerard Beekmans trong giai đoạn 1999–2025
- Bản phát hành mới nhất bao gồm các gói chính như Linux 6.16.1, GCC 15.2.0, Glibc 2.42, Python 3.13.7
Cấu trúc tài liệu
- Tài liệu gồm 5 phần chính: lời mở đầu, chuẩn bị build, xây dựng cross-toolchain, build hệ thống, cấu hình khởi động, phụ lục
- Lời mở đầu (Preface): giải thích về đối tượng độc giả, kiến thức cần thiết, tuân thủ tiêu chuẩn, lý do chọn gói, v.v.
- Chuẩn bị build (Preparing for the Build): bao gồm yêu cầu đối với hệ thống host, tạo phân vùng, thiết lập biến môi trường, v.v.
- Xây dựng LFS Cross Toolchain và Temporary Tools (Building the LFS Cross Toolchain and Temporary Tools): cấu hình các thành phần trình biên dịch cốt lõi như Binutils, GCC, Glibc
- Build hệ thống LFS (Building the LFS System): cài đặt và cấu hình phần mềm hệ thống chủ chốt
- Hoàn thiện hệ thống LFS có thể khởi động (Making the LFS System Bootable): biên dịch kernel và cấu hình GRUB
- Phụ lục (Appendices): bao gồm chữ viết tắt, phụ thuộc, boot script, giấy phép, v.v.
Các thành phần chính
- Danh sách gói bao gồm hơn 100 tiện ích và thư viện cốt lõi
- Ví dụ: Coreutils 9.7, Bash 5.3, Perl 5.42.0, Python 3.13.7, OpenSSL 3.5.2, Systemd Udev 257.8
- Với từng gói, các bước cài đặt, kiểm thử, dọn dẹp (cleanup) được liệt kê cụ thể
- Bao gồm boot script dựa trên SysVinit 3.14 và cấu hình bootloader GRUB 2.12
Cấu hình hệ thống và khởi động
- Chương 9 (System Configuration) đề cập đến mạng, locale, quản lý thiết bị, cấu hình đầu vào, v.v.
- Chương 10 (Making the LFS System Bootable) bao gồm quá trình tạo
/etc/fstab, build kernel và cấu hình GRUB
- Chương 11 (The End) hướng dẫn khởi động lại hệ thống và giới thiệu tài liệu học tiếp theo
Phụ lục và giấy phép
- Phụ lục D bao gồm các script
boot và sysconfig phiên bản 20250827
- Phụ lục F nêu rõ hai giấy phép Creative Commons và MIT License
- Cung cấp thêm tài liệu tham khảo như danh sách phụ thuộc, bảng thuật ngữ, lời cảm ơn
Ý nghĩa
- LFS là một dự án phục vụ học tập và nghiên cứu, cho phép trực tiếp trải nghiệm nguyên lý cấu thành và hệ thống build của Linux
- Được các quản trị viên hệ thống, nhà phát triển bản phân phối và nhà nghiên cứu bảo mật sử dụng như tài liệu tham khảo chuẩn để xây dựng môi trường Linux tối giản
1 bình luận
Ý kiến trên Hacker News
Bắt đầu từ năm 1999 và dùng đến 2001, nhưng đã bỏ cuộc vì việc quản lý phụ thuộc và biên dịch lại quá vất vả
Khi đó tài liệu chưa chi tiết như bây giờ nên phải tự lần theo, lại còn có nhiều gói khá obscure
Dù vậy, giai đoạn chuyển sang Slackware, tự build và đóng góp cho các gói như XFree86, GNOME vẫn rất vui
Nếu có thời gian thì rất đáng thử. Cách nhìn của bạn về Linux sẽ thay đổi hoàn toàn
Giờ có lẽ đáng để thử lại trong máy ảo
Sức mạnh thực sự của LFS/BLFS là có thể điều chỉnh hệ thống theo đúng nhu cầu của mình
Tôi đang theo dõi 4000 dự án bằng script Ruby. Nếu gem-coop trở thành lựa chọn thay thế cho rubygems.org thương mại, tôi sẽ công khai lại dự án của mình
Dù không dùng hệ thống hoàn chỉnh đó trong thực tế, vài buổi tối bỏ ra hoàn toàn xứng đáng
Tôi nghĩ khả năng tiếp cận thông tin tốt hơn là một lý do lớn giúp Linux phát triển
Khi còn nhỏ, làm LFS đã giúp tôi hiểu rằng có thể chạm tới tận tầng thấp nhất của máy tính
Tuy vậy, Gentoo hay Arch cũng mang lại hiệu quả học tập tương tự mà thời gian cài đặt ngắn hơn rất nhiều
Nhiều người nói “tôi sẽ dùng LFS thay vì Gentoo”, nhưng đa số либо bỏ cuộc giữa chừng hoặc ghét luôn các bản phân phối dựa trên mã nguồn
Tác giả ví Slackware và LFS với Haskell, ý rằng đi quá xa về cực đoan thì sẽ trở nên kém hiệu quả
LFS có tài liệu rất đầy đủ, còn Slackware tuy đã bị thời thế bỏ lại nhưng nỗ lực của Patrick thật đáng nể
Tôi nhặt nhạnh linh kiện PC 386/486 từ một kho tái chế PC ở Seattle, lắp ráp lại rồi cài Linux
Tôi lớn lên cùng việc học Linux trên những chiếc máy Frankenstein tự ráp như thế
Dùng hệ thống dựa trên RPM thì có thể tận dụng tính năng transaction của dnf để theo dõi lịch sử cài đặt và rollback, quản lý thuận tiện hơn nhiều
Chỉ cần một lần đi theo cuốn sách để tạo ra một OS, bạn sẽ dễ hiểu sự khác biệt giữa các bản phân phối khác và có cảm giác sở hữu hệ thống hơn
Cross-compile cho ARMv6 rất khó, nhưng học được rất nhiều
Tôi dùng Jenkins để tự động hóa build, và dùng script bash cùng Makefile để cấu thành hệ thống
Ảnh cuối cùng chỉ khoảng 40MB, và riêng điều đó cũng đã rất đáng tự hào
Tôi rất ấn tượng với câu “đừng bao giờ bỏ qua test”
Vì ngay cả glibc cũng cho phép một số bài test thất bại, tôi đã đưa một câu tương tự vào test của phần mềm mình
Nhìn cảnh báo “nếu bỏ qua bước này hệ thống có thể hỏng” khiến tôi có cảm giác đây như một bản phân phối Linux kiểu Dark Souls
Khi biên dịch lại kernel, số lượng tùy chọn quá nhiều khiến mọi thứ rất mệt, nhưng chính quá trình học như vậy lại là sức hấp dẫn của Linux
Đây là một văn hóa khó thấy ở các OS khác, đặc biệt là Windows
Không biết có phiên bản LFS nào dành cho BSD hay không