6 คะแนน โดย GN⁺ 2026-01-22 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • คู่มือแบบทีละขั้นตอนที่แนะนำให้ผู้ใช้ สร้างระบบ Linux ด้วยตนเองจากซอร์สโค้ด
  • เวอร์ชัน 12.4 เผยแพร่เมื่อวันที่ 1 กันยายน 2025 และรวม เคอร์เนล 6.16.1, GCC 15.2.0, Glibc 2.42 รุ่นล่าสุด เป็นต้น
  • ครอบคลุมกระบวนการทั้งหมดตั้งแต่ การจัดเตรียม cross-toolchain , การติดตั้งเครื่องมือชั่วคราว ไปจนถึง การทำให้ระบบบูตได้สมบูรณ์
  • แต่ละบทแยก รายการแพ็กเกจ, ลำดับการบิลด์, ขั้นตอนการทดสอบ, การตั้งค่าระบบ ไว้อย่างละเอียด
  • เป็นแหล่งข้อมูลสำคัญสำหรับนักพัฒนาและวิศวกรระบบในการ เรียนรู้โครงสร้างภายในของ Linux และสร้างดิสทริบิวชันแบบปรับแต่งเอง

ภาพรวม

  • Linux From Scratch(LFS) เป็นโครงการที่ออกแบบมาเพื่อให้ผู้ใช้สร้างระบบ Linux ด้วยตนเองโดยไม่พึ่งดิสทริบิวชันที่มีอยู่
    • อธิบายกระบวนการคอมไพล์และตั้งค่าทุกองค์ประกอบจากซอร์สโค้ดแบบเป็นลำดับขั้น
    • ก่อตั้งโดย Gerard Beekmans และดูแลงานบรรณาธิการโดย Bruce Dubbs
  • เอกสารถูกจัดทำในรูปแบบ คู่มือออนไลน์บน HTML และระบุลิงก์รายละเอียดกับเวอร์ชันของแพ็กเกจในแต่ละขั้นตอนไว้อย่างชัดเจน

ข้อมูลเวอร์ชัน

  • เวอร์ชันเสถียรปัจจุบันคือ 12.4 เปิดเผยเมื่อวันที่ 1 กันยายน 2025
  • ลิขสิทธิ์เป็นของ Gerard Beekmans ในช่วงปี 1999–2025
  • รุ่นล่าสุดประกอบด้วยแพ็กเกจหลัก เช่น Linux 6.16.1, GCC 15.2.0, Glibc 2.42, Python 3.13.7

โครงสร้างเอกสาร

  • เอกสารประกอบด้วย 5 ส่วนหลัก ได้แก่ คำนำ, การเตรียมการบิลด์, การสร้าง cross-toolchain, การบิลด์ระบบ, การตั้งค่าการบูต, ภาคผนวก
    • คำนำ(Preface) : อธิบายผู้อ่านเป้าหมาย ความรู้ที่จำเป็น การปฏิบัติตามมาตรฐาน และเหตุผลในการเลือกแพ็กเกจ
    • การเตรียมการบิลด์(Preparing for the Build) : รวมข้อกำหนดของระบบโฮสต์ การสร้างพาร์ทิชัน การตั้งค่าตัวแปรสภาพแวดล้อม เป็นต้น
    • การสร้าง LFS Cross Toolchain และเครื่องมือชั่วคราว(Building the LFS Cross Toolchain and Temporary Tools) : จัดเตรียมคอมไพเลอร์หลัก เช่น Binutils, GCC, Glibc
    • การบิลด์ระบบ LFS(Building the LFS System) : ติดตั้งและตั้งค่าซอฟต์แวร์ระบบหลัก
    • การทำให้ระบบ LFS บูตได้(Making the LFS System Bootable) : คอมไพล์เคอร์เนลและตั้งค่า GRUB
    • ภาคผนวก(Appendices) : รวมคำย่อ การพึ่งพา boot scripts ใบอนุญาต เป็นต้น

องค์ประกอบหลัก

  • รายการแพ็กเกจ มียูทิลิตีและไลบรารีแกนหลักมากกว่า 100 รายการ
    • ตัวอย่าง: Coreutils 9.7, Bash 5.3, Perl 5.42.0, Python 3.13.7, OpenSSL 3.5.2, Systemd Udev 257.8
  • สำหรับแต่ละแพ็กเกจ มีการระบุขั้นตอน การติดตั้ง, การทดสอบ, การทำความสะอาด(cleanup) ไว้อย่างเป็นรูปธรรม
  • รวม boot scripts ที่อิงกับ SysVinit 3.14 และการตั้งค่า bootloader GRUB 2.12

การตั้งค่าระบบและการบูต

  • บทที่ 9(System Configuration) ครอบคลุมเครือข่าย locale การจัดการอุปกรณ์ การตั้งค่าการป้อนข้อมูล เป็นต้น
  • บทที่ 10(Making the LFS System Bootable) รวมขั้นตอนการเขียน /etc/fstab การบิลด์เคอร์เนล และการตั้งค่า GRUB
  • บทที่ 11(The End) แนะนำการรีบูตระบบและเอกสารสำหรับการเรียนรู้ต่อ

ภาคผนวกและใบอนุญาต

  • ภาคผนวก D มีสคริปต์ boot และ sysconfig เวอร์ชัน 20250827
  • ภาคผนวก F ระบุใบอนุญาต 2 แบบ คือ Creative Commons และ MIT License
  • มีเอกสารอ้างอิง เช่น รายการการพึ่งพา, อภิธานศัพท์, คำขอบคุณ

ความสำคัญ

  • LFS เป็นโครงการเพื่อการศึกษาและการวิจัยที่เปิดโอกาสให้สัมผัส หลักการประกอบและระบบการบิลด์ของ Linux ได้โดยตรง
  • ผู้ดูแลระบบ นักพัฒนาดิสทริบิวชัน และนักวิจัยด้านความปลอดภัย ใช้งานเป็น เอกสารอ้างอิงมาตรฐานสำหรับการสร้างสภาพแวดล้อม Linux แบบขั้นต่ำ

1 ความคิดเห็น

 
GN⁺ 2026-01-22
ความคิดเห็นจาก Hacker News
  • มีการเล่าถึงประสบการณ์ที่เคยสร้าง Linux From Scratch (LFS) ด้วยตัวเองเพื่อเรียนรู้การทำงานภายในของระบบลินุกซ์
    เริ่มต้นในปี 1999 และใช้งานต่อจนถึงปี 2001 แต่สุดท้ายก็เลิกเพราะการจัดการ dependency และการคอมไพล์ใหม่เป็นเรื่องที่หนักเกินไป
    ตอนนั้นเอกสารยังไม่ละเอียดเหมือนทุกวันนี้ ต้องไล่แกะเอง และยังมีแพ็กเกจแปลก ๆ อยู่มาก
    ถึงอย่างนั้น ช่วงที่ย้ายไปใช้ Slackware แล้วได้ build แพ็กเกจอย่าง XFree86 และ GNOME เองรวมถึงมีส่วนร่วมด้วยก็เป็นช่วงเวลาที่สนุกมาก
    ถ้ามีเวลา ก็ควรลองสักครั้ง เพราะมุมมองที่มีต่อลินุกซ์จะเปลี่ยนไปอย่างสิ้นเชิง
    • มีทั้ง LFS เวอร์ชัน systemd รวมถึง Gaming LFS และเวอร์ชันที่เป็นระบบ build อัตโนมัติด้วย
    • ฉันก็เคยลองราวปี 1999 เหมือนกัน ตอนนั้นคำอธิบายยังไม่พอ แทบจะเป็นแค่แนวว่า “พิมพ์คำสั่งนี้”
      ตอนนี้น่าจะคุ้มค่าที่จะลองอีกครั้งใน virtual machine
    • จริง ๆ แล้ว Wayland นั้นเรียบง่าย มีสิ่งที่ต้องตั้งค่าน้อยกว่า systemd เสียอีก
      พลังที่แท้จริงของ LFS/BLFS คือคุณสามารถปรับระบบให้เข้ากับการใช้งานของตัวเองได้
      ฉันกำลังติดตามอยู่ราว 4000 โปรเจกต์ด้วย Ruby script หาก gem-coop กลายเป็นทางเลือกแทน rubygems.org เชิงพาณิชย์ได้ ฉันก็ตั้งใจจะเปิดเผยโปรเจกต์ของตัวเองอีกครั้ง
    • ฉันก็เคยลองเหมือนกันตอนมัธยมปลาย (ราวปี 2005) และประสบการณ์ในการ build โปรเจกต์เป็นสิบ ๆ ตัวพร้อมเรียนรู้ว่าระบบเชื่อมต่อกันอย่างไรนั้นยอดเยี่ยมมาก
      แม้จะไม่ได้นำระบบที่ทำเสร็จไปใช้งานจริง แต่ก็คุ้มค่ากับเวลาหลายเย็นที่ใช้ไป
    • สมัยนั้นต้องตาม dependency กันเอง แต่ตอนนี้ใช้ ChatGPT ก็ได้คำตอบแทบจะทันที
      ฉันคิดว่าการเข้าถึงข้อมูลที่ดีขึ้นคือหนึ่งในเหตุผลสำคัญที่ทำให้ลินุกซ์เติบโต
  • ทุกครั้งที่เห็นโปรเจกต์นี้ก็จะกด upvote
    ตอนเด็ก ๆ การทำ LFS ทำให้ได้เรียนรู้ว่าเราสามารถเข้าถึงคอมพิวเตอร์ได้ลึกถึงระดับล่างสุด
    • ฉันก็เคยทำตอนเป็นวัยรุ่นในปี 1999 เช่นกัน เป็นช่วงเวลาที่สมบูรณ์แบบ เพราะฉลาดพอจะแก้ปัญหาได้ และก็มีเวลามากพอด้วย
    • ตอนนี้มีของที่ต้องคอมไพล์เพิ่มขึ้นมาก ทั้ง LLVM, cmake, meson และอื่น ๆ ทำให้เวลา build นานขึ้น แต่ก็ยังใช้งานได้ดีอยู่
  • ถ้ามีใครอยากเข้าใจแก่นแท้ของลินุกซ์ดิสโทร ฉันจะแนะนำ LFS เสมอ
    • ฉันเองก็ได้ความรู้เรื่องลินุกซ์จำนวนมากจากที่นี่
      เพียงแต่ Gentoo หรือ Arch ก็ให้ผลด้านการเรียนรู้ใกล้เคียงกัน ในขณะที่ใช้เวลาติดตั้งน้อยกว่ามาก
    • รู้สึกว่า LFS ทำให้ฉันได้เรียนรู้เรื่อง sed, gcc CFLAGS, bootstrapping มากกว่าตัว OS เองเสียอีก
  • มีการแชร์ข้อความอ้างอิงจากบล็อก “20 Years of Gentoo”
    หลายคนพูดว่า “จะไปทาง LFS แทน Gentoo” แต่ส่วนใหญ่ก็มักเลิกกลางทาง หรือไม่ก็เกลียดดิสโทรแบบ source-based ไปตลอด
    เขาเปรียบ Slackware และ LFS กับ Haskell โดยสื่อว่าถ้าไปสุดทางเกินไปก็จะกลายเป็นสิ่งที่ไม่มีประสิทธิผล
    • Haskell นั้นยาก แต่ Slackware กับ LFS นั้นเรียบง่าย ฉันคิดว่าเปรียบเทียบกันไม่ค่อยถูกนัก
      LFS มีเอกสารที่สมบูรณ์มาก ส่วน Slackware แม้จะตามยุคไม่ทันแล้ว แต่ความพยายามของ Patrick ก็น่าทึ่งมาก
    • ฉันเองก็เคย ทำระบบพังบางส่วน มาเหมือนกัน สแตกเครือข่ายทำงานต่างกันไปตามโปรแกรม หลังจากนั้นก็ไม่ได้ลองใหม่อีกเลย
  • ราวปี 2006 ฉันซื้อหนังสือ LFS ฉบับกระดาษ
    แล้วไปเก็บชิ้นส่วน 386/486 PC มาประกอบจากคลังรีไซเคิลพีซีในซีแอตเทิล ก่อนจะติดตั้งลินุกซ์ลงไป
    ฉันเติบโตมากับการเรียนรู้ลินุกซ์ผ่านเครื่อง Frankenstein ที่ประกอบขึ้นแบบนั้น
  • ในฐานะคนที่ใช้ลินุกซ์มานานกว่า 25 ปี ทุกวันนี้ฉันมองว่าการ build LFS เองเป็น การเสียเวลา
    ถ้าใช้ระบบที่อิง RPM ก็จะได้ความสะดวกด้านการจัดการมากกว่า เพราะฟีเจอร์ transaction ของ dnf ช่วยให้ดูประวัติการติดตั้งและ rollback ได้
    • LFS คือ กระบวนการฝึกฝน เพื่อการเรียนรู้ จุดประสงค์ไม่ใช่ความง่าย แต่คือการเปิดให้เห็นระดับล่างสุดของ OS
    • คุณค่าของ LFS ไม่ได้อยู่ที่ระบบที่สร้างเสร็จแล้ว แต่คือ กระบวนการทำความเข้าใจ
      ถ้าคุณเคยทำตามหนังสือเพื่อสร้าง OS สักครั้ง ก็จะเข้าใจความแตกต่างของดิสโทรอื่น ๆ ได้ง่ายขึ้น และรู้สึก เป็นเจ้าของ ระบบมากขึ้น
    • ถึงไม่มี RPM ก็ยังทำสิ่งคล้ายกันได้ ฉันใช้ AppDir แบบมี version control ส่วน NixOS ก็ใช้ไดเรกทอรีแบบแฮชและ nix เพื่อรับประกันสถานะของระบบ
    • มีคนโต้ตอบกับคำแนะนำแนว “ไปทางที่ง่ายสบายไว้ก่อน” ว่าไม่ควรทำลายความตั้งใจของคนที่อยากลองอะไรใหม่ ๆ
  • BLFS (Beyond Linux From Scratch) ที่หลายคอมเมนต์พูดถึง สามารถดูได้ที่ ลิงก์นี้
  • ในปี 2014 มีคนทำ Cross-Linux From Scratch เพื่อ build สำหรับ Raspberry Pi
    การ cross-compile สำหรับ ARMv6 นั้นยากมาก แต่ก็ได้เรียนรู้อะไรมากมาย
    เขาใช้ Jenkins ทำ build automation และจัดระบบด้วย bash script กับ Makefile
    อิมเมจสุดท้ายมีขนาดประมาณ 40MB ซึ่งทำให้รู้สึกภูมิใจมาก
  • มีคนเล่าว่าอ่าน บททดสอบ glibc แล้วประทับใจกับประโยค
    “อย่าข้ามการทดสอบเด็ดขาด”
    เพราะแม้แต่ glibc เองก็ยังยอมให้บางการทดสอบล้มเหลวได้ เขาเลยใส่ข้อความคล้ายกันไว้ในซอฟต์แวร์ของตัวเอง
    เมื่อเห็นคำเตือนว่า “ถ้าฝ่าฝืนขั้นตอนนี้ ระบบอาจพังได้” ก็รู้สึกว่ามันเหมือน ลินุกซ์ดิสโทรแบบ Dark Souls
    • ใช่เลย ให้ความรู้สึกแบบนั้นจริง ๆ
  • LFS/BLFS อาจไม่สมบูรณ์แบบ แต่เป็นตัวอย่างที่ดีของ ความรู้และการประยุกต์ใช้ ในโลกของลินุกซ์
    ตอนคอมไพล์เคอร์เนลใหม่ ตัวเลือกจำนวนมากอาจทำให้เหนื่อย แต่กระบวนการเรียนรู้แบบนี้เองคือเสน่ห์ของลินุกซ์
    เป็นวัฒนธรรมที่แทบไม่ค่อยเห็นใน OS อื่น โดยเฉพาะ Windows
    มีคนสงสัยว่ามี LFS เวอร์ชันสำหรับ BSD หรือไม่