6 điểm bởi GN⁺ 2026-01-22 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 bootsysconfig phiên bản 20250827
  • Phụ lục F nêu rõ hai giấy phép Creative CommonsMIT 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

 
GN⁺ 2026-01-22
Ý kiến trên Hacker News
  • Chia sẻ trải nghiệm tự xây dựng Linux From Scratch (LFS) để tìm hiểu nội tại của hệ thống Linux
    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
    • Cũng có phiên bản LFS dùng systemd, cùng Gaming LFS và cả phiên bản có hệ thống build tự động
    • Tôi cũng thử vào khoảng năm 1999, khi đó phần giải thích còn thiếu, chủ yếu chỉ kiểu “hãy nhập lệnh này”
      Giờ có lẽ đáng để thử lại trong máy ảo
    • Wayland thực ra khá đơn giản. Cấu hình còn ít hơn systemd
      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
    • Tôi cũng từng làm khi còn học cấp ba, khoảng năm 2005, và trải nghiệm build hàng chục dự án để hiểu cách các thành phần khớp với nhau thật sự rất tuyệt
      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
    • Hồi đó phải tự lần theo phụ thuộc, còn giờ có thể hỏi ngay ChatGPT để có câu trả lời
      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
  • Cứ mỗi lần thấy dự án này là tôi lại bấm upvote
    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
    • Tôi cũng từng làm khi còn là thiếu niên vào năm 1999, đúng vào giai đoạn hoàn hảo: đủ thông minh để xử lý vấn đề, lại có rất nhiều thời gian
    • Giờ số thứ phải biên dịch còn nhiều hơn. LLVM, cmake, meson và nhiều thứ khác khiến thời gian build dài hơn, nhưng mọi thứ vẫn chạy tốt
  • Nếu ai hỏi muốn hiểu bản chất của một bản phân phối Linux, tôi luôn khuyên dùng LFS
    • Tôi cũng học được phần lớn kiến thức Linux từ đây
      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
    • Nhờ LFS mà tôi có cảm giác mình học được về sed, gcc CFLAGS, bootstrapping còn nhiều hơn cả về OS
  • Chia sẻ một đoạn trích từ blog “20 Years of Gentoo”
    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ả
    • Haskell thì khó, nhưng Slackware và LFS lại đơn giản. Tôi không nghĩ phép so sánh đó đúng
      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 cũng từng có trải nghiệm bị hỏng một phần. Stack mạng hoạt động khác nhau tùy chương trình, và từ đó tôi không thử lại nữa
  • Khoảng năm 2006, tôi đã mua bản in giấy của sách LFS
    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ế
  • Với tư cách người đã dùng Linux hơn 25 năm, giờ tôi cho rằng tự build LFS là lãng phí thời gian
    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
    • LFS là một quá trình rèn luyện để học tập. Mục tiêu không phải là sự dễ dàng, mà là phơi bày tầng thấp nhất của OS
    • Giá trị của LFS không nằm ở hệ thống hoàn chỉnh mà ở quá trình thấu hiể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
    • Ngay cả không dùng RPM vẫn có thể làm điều tương tự. Tôi dùng AppDir có quản lý phiên bản, còn NixOS dùng các thư mục băm và nix để đảm bảo trạng thái
    • Trước lời khuyên kiểu “cứ đi con đường dễ hơn”, có người phản hồi rằng đừng dập tắt ý chí muốn thử cái mới của người khác
  • BLFS (Beyond Linux From Scratch) được nhắc tới trong nhiều bình luận có thể xem tại liên kết này
  • Năm 2014, tôi đã làm Cross-Linux From Scratch để build cho Raspberry Pi
    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
  • Khi đọc chương test của glibc
    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
    • Đúng vậy, cảm giác thật sự là như thế
  • LFS/BLFS không hoàn hảo, nhưng là ví dụ rất tốt cho thấy tri thức và khả năng ứng dụng của Linux
    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