- คู่มือแบบทีละขั้นตอนที่แนะนำให้ผู้ใช้ สร้างระบบ 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เริ่มต้นในปี 1999 และใช้งานต่อจนถึงปี 2001 แต่สุดท้ายก็เลิกเพราะการจัดการ dependency และการคอมไพล์ใหม่เป็นเรื่องที่หนักเกินไป
ตอนนั้นเอกสารยังไม่ละเอียดเหมือนทุกวันนี้ ต้องไล่แกะเอง และยังมีแพ็กเกจแปลก ๆ อยู่มาก
ถึงอย่างนั้น ช่วงที่ย้ายไปใช้ Slackware แล้วได้ build แพ็กเกจอย่าง XFree86 และ GNOME เองรวมถึงมีส่วนร่วมด้วยก็เป็นช่วงเวลาที่สนุกมาก
ถ้ามีเวลา ก็ควรลองสักครั้ง เพราะมุมมองที่มีต่อลินุกซ์จะเปลี่ยนไปอย่างสิ้นเชิง
ตอนนี้น่าจะคุ้มค่าที่จะลองอีกครั้งใน virtual machine
พลังที่แท้จริงของ LFS/BLFS คือคุณสามารถปรับระบบให้เข้ากับการใช้งานของตัวเองได้
ฉันกำลังติดตามอยู่ราว 4000 โปรเจกต์ด้วย Ruby script หาก gem-coop กลายเป็นทางเลือกแทน rubygems.org เชิงพาณิชย์ได้ ฉันก็ตั้งใจจะเปิดเผยโปรเจกต์ของตัวเองอีกครั้ง
แม้จะไม่ได้นำระบบที่ทำเสร็จไปใช้งานจริง แต่ก็คุ้มค่ากับเวลาหลายเย็นที่ใช้ไป
ฉันคิดว่าการเข้าถึงข้อมูลที่ดีขึ้นคือหนึ่งในเหตุผลสำคัญที่ทำให้ลินุกซ์เติบโต
ตอนเด็ก ๆ การทำ LFS ทำให้ได้เรียนรู้ว่าเราสามารถเข้าถึงคอมพิวเตอร์ได้ลึกถึงระดับล่างสุด
เพียงแต่ Gentoo หรือ Arch ก็ให้ผลด้านการเรียนรู้ใกล้เคียงกัน ในขณะที่ใช้เวลาติดตั้งน้อยกว่ามาก
หลายคนพูดว่า “จะไปทาง LFS แทน Gentoo” แต่ส่วนใหญ่ก็มักเลิกกลางทาง หรือไม่ก็เกลียดดิสโทรแบบ source-based ไปตลอด
เขาเปรียบ Slackware และ LFS กับ Haskell โดยสื่อว่าถ้าไปสุดทางเกินไปก็จะกลายเป็นสิ่งที่ไม่มีประสิทธิผล
LFS มีเอกสารที่สมบูรณ์มาก ส่วน Slackware แม้จะตามยุคไม่ทันแล้ว แต่ความพยายามของ Patrick ก็น่าทึ่งมาก
แล้วไปเก็บชิ้นส่วน 386/486 PC มาประกอบจากคลังรีไซเคิลพีซีในซีแอตเทิล ก่อนจะติดตั้งลินุกซ์ลงไป
ฉันเติบโตมากับการเรียนรู้ลินุกซ์ผ่านเครื่อง Frankenstein ที่ประกอบขึ้นแบบนั้น
ถ้าใช้ระบบที่อิง RPM ก็จะได้ความสะดวกด้านการจัดการมากกว่า เพราะฟีเจอร์ transaction ของ dnf ช่วยให้ดูประวัติการติดตั้งและ rollback ได้
ถ้าคุณเคยทำตามหนังสือเพื่อสร้าง OS สักครั้ง ก็จะเข้าใจความแตกต่างของดิสโทรอื่น ๆ ได้ง่ายขึ้น และรู้สึก เป็นเจ้าของ ระบบมากขึ้น
การ cross-compile สำหรับ ARMv6 นั้นยากมาก แต่ก็ได้เรียนรู้อะไรมากมาย
เขาใช้ Jenkins ทำ build automation และจัดระบบด้วย bash script กับ Makefile
อิมเมจสุดท้ายมีขนาดประมาณ 40MB ซึ่งทำให้รู้สึกภูมิใจมาก
“อย่าข้ามการทดสอบเด็ดขาด”
เพราะแม้แต่ glibc เองก็ยังยอมให้บางการทดสอบล้มเหลวได้ เขาเลยใส่ข้อความคล้ายกันไว้ในซอฟต์แวร์ของตัวเอง
เมื่อเห็นคำเตือนว่า “ถ้าฝ่าฝืนขั้นตอนนี้ ระบบอาจพังได้” ก็รู้สึกว่ามันเหมือน ลินุกซ์ดิสโทรแบบ Dark Souls
ตอนคอมไพล์เคอร์เนลใหม่ ตัวเลือกจำนวนมากอาจทำให้เหนื่อย แต่กระบวนการเรียนรู้แบบนี้เองคือเสน่ห์ของลินุกซ์
เป็นวัฒนธรรมที่แทบไม่ค่อยเห็นใน OS อื่น โดยเฉพาะ Windows
มีคนสงสัยว่ามี LFS เวอร์ชันสำหรับ BSD หรือไม่