- Floppinux ดิสโทรลินุกซ์ขนาดเบาที่สามารถบูตได้จาก ฟลอปปีดิสก์เพียงแผ่นเดียว (1.44MB) ได้รับการอัปเดตเป็นฉบับปี 2025 (v0.3.1)
- เวอร์ชันใหม่นี้ใช้ Linux kernel 6.14.11 และ BusyBox 1.36.1 เป็นฐาน พร้อม พื้นที่เก็บข้อมูลแบบถาวร (264KB) และรองรับฮาร์ดแวร์สมัยใหม่
- สามารถทำงานได้ด้วย CPU ระดับ Intel 486DX (33MHz) ขึ้นไปและ RAM 20MB เท่านั้น พร้อมรองรับ โปรแกรมแก้ไขข้อความ (vi) และคำสั่งจัดการไฟล์พื้นฐาน
- ทำงานได้ทั้งบน ฮาร์ดแวร์จริงและอีมูเลเตอร์ (qemu, Bochs, 86Box) และถูกออกแบบให้ผู้ใช้สร้างเคอร์เนลกับ toolchain ได้ด้วยตนเอง
- หลังจากเปิดตัวครั้งแรกเมื่อ 4 ปีก่อน ก็ถูกนำไปใช้เพื่อการศึกษาและการทดลองมาโดยตลอด โดยฉบับนี้เน้นที่ การคงเคอร์เนลให้ทันสมัยและการอัปเดตทิวทอเรียลสำหรับการเรียนรู้
ภาพรวมโครงการ
- Floppinux มีเป้าหมายในการสร้าง ระบบลินุกซ์ขนาดเล็กที่สุดที่บูตได้จากฟลอปปีดิสก์เพียงแผ่นเดียว
- ถูกออกแบบในรูปแบบ เวิร์กช็อปเพื่อการเรียนรู้ ที่คล้ายกับ “Linux From Scratch” ทำให้ผู้ใช้สามารถแก้ไขและขยายระบบได้ด้วยตนเอง
- ดิสโทรที่สร้างเสร็จแล้วจะมอบ สภาพแวดล้อมเทอร์มินัลแบบข้อความ ที่สามารถแก้ไขไฟล์และเขียนสคริปต์อย่างง่ายได้
- พื้นที่เก็บข้อมูลที่เหลืออยู่มี 264KB ทำให้ผู้ใช้สามารถบันทึกไฟล์ที่สร้างขึ้นลงบนฟลอปปีดิสก์ได้โดยตรง
ความสามารถหลักและข้อกำหนดระบบ
- รองรับ การบูตจากฟลอปปีดิสก์แผ่นเดียว, เคอร์เนลล่าสุด (6.14) และ CPU x86 แบบ 32 บิต (486DX ขึ้นไป)
- มี โปรแกรมแก้ไขข้อความ (vi), คำสั่งจัดการไฟล์พื้นฐาน (cat, cp, mv, rm เป็นต้น) และความสามารถด้าน สคริปต์อย่างง่าย
- สามารถบันทึกไฟล์ลงฟลอปปีดิสก์ได้ผ่าน persistent storage
- ความต้องการฮาร์ดแวร์ขั้นต่ำ: Intel 486DX 33MHz, RAM 20MB, ฟลอปปีดิสก์ไดรฟ์ภายใน
การตั้งค่าเคอร์เนล
- ใช้ Linux 6.14.11 ซึ่งเป็นเคอร์เนลรุ่นสุดท้ายที่ยังรองรับ CPU i486 อย่างสมบูรณ์
- การตั้งค่าเคอร์เนลมุ่งเน้นที่ ความสามารถขั้นต่ำสำหรับการบูต และรวม initramfs แบบบีบอัด XZ, การรองรับการรัน ELF และ ระบบไฟล์ FAT
- เปิดใช้งานการรองรับ TTY, block device, ระบบไฟล์ /proc และ sysfs
- ผลลัพธ์จากการบิลด์เคอร์เนลถูกสร้างเป็น bzImage (881KiB)
สภาพแวดล้อมการบิลด์และ toolchain
- บิลด์บน Omarchy Linux (OS 64 บิตที่อิงกับ Arch) และสามารถใช้ขั้นตอนเดียวกันได้บนระบบที่เข้ากันได้กับ POSIX
- รองรับการบิลด์เป้าหมายแบบ 32 บิตด้วยคอมไพเลอร์ข้ามแพลตฟอร์ม i486-linux-musl-cross
- ใช้ qemu เป็นสภาพแวดล้อมจำลอง โดย Bochs ใช้สำหรับดีบัก และ 86Box แม้จะช้าแต่ก็ใช้แทนได้
ชุดเครื่องมือบนพื้นฐานของ BusyBox
- ใช้ BusyBox 1.36.1 ซึ่งเป็นชุดคำสั่งขนาดเบาที่ใช้แทน GNU utilities
- คำสั่งหลักที่เลือกมาได้แก่ cat, cp, df, echo, ls, mkdir, mv, rm, sync, vi, mount, umount, clear, test
- บิลด์เป็น static binary เพื่อตัดการพึ่งพา shared library ออกไป
- หลังจากบิลด์ BusyBox แล้ว root filesystem ที่สร้างขึ้น (rootfs.cpio.xz) มีขนาด 137KiB
การตั้งค่าระบบไฟล์และการเริ่มต้นระบบ
- มีโครงสร้างไดเรกทอรีขั้นต่ำ พร้อม ข้อความต้อนรับ (welcome), inittab และ สคริปต์เริ่มต้น rc
- สคริปต์ rc จะเมานต์
/proc, /sys จากนั้นสร้างไดเรกทอรี /home และเมานต์ฟลอปปีดิสก์ที่ /mnt
- เมื่อบูตแล้ว ระบบจะแสดง แบนเนอร์ต้อนรับ ก่อนเข้าสู่เชลล์ (
/bin/sh)
- กำหนดข้อความบูตและพารามิเตอร์เคอร์เนลผ่านการตั้งค่า syslinux.cfg
APPEND root=/dev/ram rdinit=/etc/init.d/rc console=tty0 tsc=unstable
การสร้างอิมเมจบูต
- สร้าง อิมเมจฟลอปปีดิสก์ 1.44MB (floppinux.img) จากนั้นฟอร์แมตและติดตั้งบูตโหลดเดอร์ (syslinux)
- คัดลอกเคอร์เนล, root filesystem และไฟล์ตั้งค่าลงในอิมเมจ
- สามารถทดสอบการบูตด้วย qemu แล้วจึงเขียนลงฟลอปปีดิสก์จริง
- มีคำเตือนถึงความเสี่ยงของข้อมูลสูญหายหากเลือกไดรฟ์ผิด
สรุปสุดท้าย
- เวอร์ชัน: 0.3.1 (ธันวาคม 2025)
- เคอร์เนล: 6.14.11
- BusyBox: 1.36.1
- ขนาดอิมเมจ: 1.44MiB
- พื้นที่ที่เหลือ: ประมาณ 253KiB
- คำสั่งที่รองรับ: การจัดการไฟล์ (cat, cp, mv, rm, ls, mkdir), การดูแลระบบ (df, sync, mount, umount), การประมวลผลข้อความ (echo, more), โปรแกรมแก้ไข (vi)
ความสำคัญ
- Floppinux คือ ดิสโทรขนาดจิ๋วที่ถูกปรับแต่งมาอย่างเหมาะสมสำหรับการเรียนรู้โครงสร้างเคอร์เนลลินุกซ์และกระบวนการบูต
- ทำให้ สภาพแวดล้อมลินุกซ์ที่สมบูรณ์และทำงานได้บนฮาร์ดแวร์จริง อยู่ภายในฟลอปปีดิสก์เพียงแผ่นเดียว
- สามารถใช้เป็นแพลตฟอร์มตัวอย่างที่มีประโยชน์สำหรับ การศึกษา การทดลองกับระบบย้อนยุค และการเริ่มต้นพัฒนา embedded
1 ความคิดเห็น
ความเห็นจาก Hacker News
ตอนคริสต์มาสเคยพยายามทำให้คอมพิวเตอร์ยุค 32 บิตกลับมาอยู่ในสภาพที่ ใช้งานได้จริง
ปัญหาไม่ใช่ประสิทธิภาพ แต่เป็น การรองรับซอฟต์แวร์ และ ไดรเวอร์วิดีโอ
ทุกวันนี้แทบไม่มีใคร build แพ็กเกจสำหรับ 32 บิตแล้ว ทำให้แม้แต่ CLI ก็ยังถูกจำกัดเพราะ dependency ฝั่ง 64 บิต
ใน kernel ก็ถอดไดรเวอร์ GPU รุ่นเก่าออกไป เหลือแค่โหมด VGA พื้นฐานจนแม้แต่เล่น MPEG2 ยังลำบาก
สุดท้ายเลยพยายามติดตั้ง Debian 5 ที่เหมาะกับฮาร์ดแวร์นี้ แต่ ISO ในยุคนั้นบูตจาก USB ไม่ได้เลยต้องยอมแพ้
สรุปคือโปรเจกต์แบบนี้สนุกดี แต่เอาไปใช้งานจริงยาก
ชอบอินเทอร์เฟซแบบเก่ามากกว่า Ribbon UI และฟีเจอร์อย่าง WordArt ก็ชวนให้นึกถึงวันวาน
ฟีเจอร์ของรุ่นใหม่ก็ดี แต่ก็น่าทึ่งที่ซอฟต์แวร์อายุเกือบ 30 ปียังสมบูรณ์ขนาดนี้
NetBSD ยังมี แพ็กเกจและ pkgsrc สำหรับ i386 อยู่
ลิงก์คลัง pkgsrc
ส่วนตัวชอบ VGA text mode มากกว่ากราฟิก
แอปแบบ browser-based มีมากเกินไป และโปรแกรมช้าๆ ที่เขียนด้วย JS ก็เต็มไปหมด
น่าสนใจที่ LLM กำลังเรียนรู้จากโค้ดแบบนี้
แถมยังรัน NAT gateway กับเว็บเซิร์ฟเวอร์ไปพร้อมกันได้สบาย
แต่ทุกวันนี้กลับรู้สึกว่า 16GB ยังไม่พอ มันช่างน่าขำดี
บูตจากฟลอปปีดิสก์หรือ CD แล้ว chainload ไป USB ได้แม้บนพีซีรุ่นเก่า
เคยใช้บน Pentium MMX ช้าอยู่บ้างแต่ทำงานได้ดี
Linux ดิสโทรแรกที่เคยใช้คือ Damn Small Linux (DSL)
เดิมทีถูกใช้กับความพยายามพอร์ตลง GameCube แต่ทีมพัฒนาหลักภายหลังย้ายไป Gentoo
ตอนนี้ DSL 2024 ใช้ฐาน antiX 23 i386 และเพื่อต้องยัดเดสก์ท็อปทั้งชุดให้อยู่ใน ข้อจำกัด 700MB จึงลด language pack กับเอกสารออก
สามารถใช้สคริปต์กู้คืนเพื่อดาวน์โหลดไฟล์ที่ต้องการกลับมาได้
เว็บไซต์ทางการ
จากรีวิวที่อ่านมา Alpine เป็นดิสโทรที่ถูกแนะนำ แต่ก็ยังไม่แน่ใจเรื่องความน่าเชื่อถือ
ลองทดสอบบน 486 จริงแล้ว แต่บูตไม่ผ่าน
ใส่ RAM 32MB แล้ว แต่ขึ้นข้อผิดพลาด “Booting kernel failed: Invalid Argument”
คาดว่าสาเหตุมาจาก BIOS ไม่รองรับ E820h memory map routine
ดูได้จากภาพหน้าจอ และ
แกลเลอรีฮาร์ดแวร์จริง
กลยุทธ์ persistence แบบ อิง FAT12 ที่บทความเสนอถือว่าเป็นแนวทางที่ฉลาดสำหรับการประหยัดพื้นที่
แต่ฟลอปปีดิสก์ไม่มี journaling จึงเสี่ยงข้อมูลเสียหายเมื่อไฟดับ
ทางเลือกที่ปลอดภัยกว่าอาจเป็นการใช้ log-structured filesystem เช่น JFFS2 หรือ serialize เป็น tar เฉพาะตอนปิดระบบ
ใช้ FAT มาหลายสิบปีแทบไม่เคยเจอข้อมูลเสียหายเลย
แม้ตอนนี้อุปกรณ์ embedded ส่วนใหญ่ก็ยังใช้ FAT อยู่
ปรับลำดับการคัดลอก FAT1/FAT2 และการอัปเดตขนาดไฟล์ ก็ช่วยให้กู้คืนได้เมื่อระบบล่ม
Slackware 8 หรือแม้แต่ NetBSD รุ่นใหม่ก็ยังคงโครงสร้างแบบนั้นอยู่
จำ QNX demo floppy ปี 1999 ได้
มันรันทั้ง GUI และเว็บเบราว์เซอร์ได้ทันทีจากดิสก์ 1.44MB
หลังจากนั้นก็ไม่เคยเห็นอะไรแบบนั้นอีกเลย
ตอนนี้ระบบแบบนั้นกลับมามีอีกครั้งแล้ว
ถ้าอยากเพิ่มพื้นที่จาก 264KB ที่เหลือ ก็ใช้ extended floppy format ได้
ถ้าใช้ฟอร์แมตแบบ 21 sectors/track เหมือนดิสก์ติดตั้ง Windows 95 ก็ขยายได้ถึง 1680KB
เครื่องมือฟอร์แมตมาตรฐานของ Linux ก็สร้าง layout แบบนี้ได้
คิดถึง เสียง ของฟลอปปีดิสก์กับความตื่นเต้นตอนโหลด
ถ้าปรับเสียงนี้ได้จากการตั้งค่าก็คงดี
อ่านประโยคที่ว่า “เขียนฟลอปปีเสร็จใน 5 นาที” แล้วหลุดขำ
สงสัยว่าจำเป็นต้องฟอร์แมตฟลอปปีจริงหรือเปล่า
ถ้า syslinux หรือ lilo โหลด kernel ตรงจาก sector ของฟลอปปี ได้ ก็น่าจะง่ายกว่า
ext2 อาจเล็กกว่า FAT ก็ได้
จำได้ว่าในปี 1997 เคยได้ Slackware มาเป็น ชุดฟลอปปี 12 แผ่น
แต่คุณภาพไม่ดีเลยทำให้ติดตั้งยาก
ตอนนั้นดาวน์โหลดจาก VAX ผ่าน FTP แล้วส่งต่อมาที่ DOS PC ด้วย Kermit เพื่อติดตั้ง แต่ต้องทำซ้ำเพราะมีดิสก์เสียกลางทาง
ซีรีส์ X ใช้สำหรับ X11 ส่วนซีรีส์ A/B/C ใช้สำหรับระบบพื้นฐาน
เคยใช้บนระบบ 933MHz Coppermine และจำได้ว่าภายหลังเปลี่ยน HDD แล้วพยายาม build X11 แต่ไม่สำเร็จ