- Floppinux, một bản phân phối Linux siêu nhẹ có thể khởi động từ một đĩa mềm duy nhất (1.44MB), đã được cập nhật lên bản 2025 (v0.3.1)
- Phiên bản mới dựa trên nhân Linux 6.14.11 và BusyBox 1.36.1, đồng thời bao gồm không gian lưu trữ bền vững (264KB) và khả năng tương thích với phần cứng hiện đại
- Có thể chạy chỉ với CPU từ Intel 486DX (33MHz) trở lên và 20MB RAM, hỗ trợ trình soạn thảo văn bản (vi) cùng các lệnh thao tác tệp cơ bản
- Hoạt động trên cả phần cứng thực và trình giả lập (qemu, Bochs, 86Box), đồng thời được thiết kế để người dùng tự build kernel và toolchain
- Kể từ lần công bố đầu tiên 4 năm trước, dự án đã được dùng cho mục đích giáo dục và thử nghiệm; bản này tập trung vào duy trì kernel mới nhất và cập nhật tutorial học tập
Tổng quan dự án
- Floppinux hướng tới việc xây dựng một hệ thống Linux tối thiểu có thể khởi động từ một đĩa mềm duy nhất
- Được thiết kế theo dạng workshop học tập tương tự “Linux From Scratch”, cho phép người dùng tự chỉnh sửa và mở rộng
- Bản phân phối hoàn chỉnh cung cấp môi trường terminal dựa trên văn bản, cho phép chỉnh sửa tệp và viết script đơn giản
- Phần dung lượng còn lại là 264KB, cho phép người dùng lưu trực tiếp các tệp đã tạo lên đĩa mềm
Tính năng chính và yêu cầu hệ thống
- Hỗ trợ khởi động từ một đĩa mềm duy nhất, kernel mới nhất (6.14), CPU x86 32-bit (486DX trở lên)
- Bao gồm trình soạn thảo văn bản (vi), các lệnh thao tác tệp cơ bản (cat, cp, mv, rm, v.v.) và khả năng scripting đơn giản
- Có thể lưu tệp trên đĩa mềm thông qua persistent storage
- Yêu cầu phần cứng tối thiểu: Intel 486DX 33MHz, 20MB RAM, ổ đĩa mềm gắn trong
Cấu hình kernel
- Linux 6.14.11 được dùng làm phiên bản kernel cuối cùng còn hỗ trợ đầy đủ CPU i486
- Thiết lập kernel tập trung vào các chức năng khởi động tối thiểu, bao gồm initramfs nén XZ, hỗ trợ thực thi ELF, và hệ thống tệp FAT
- Đã bật hỗ trợ cho TTY, thiết bị khối, hệ thống tệp /proc và sysfs
- Kết quả build kernel được tạo thành bzImage (881KiB)
Môi trường build và toolchain
- Việc build được thực hiện trên Omarchy Linux (HĐH 64-bit dựa trên Arch), và quy trình tương tự cũng có thể áp dụng trên các hệ thống tương thích POSIX
- Sử dụng trình biên dịch chéo i486-linux-musl-cross để build cho mục tiêu 32-bit
- Dùng qemu làm môi trường giả lập, Bochs cho mục đích debug, còn 86Box là phương án thay thế dù chậm hơn
Bộ công cụ dựa trên BusyBox
- Sử dụng BusyBox 1.36.1, cung cấp tập hợp lệnh gọn nhẹ thay thế các tiện ích GNU
- Các lệnh chính được chọn gồm: cat, cp, df, echo, ls, mkdir, mv, rm, sync, vi, mount, umount, clear, test
- Được build thành static binary để loại bỏ phụ thuộc vào thư viện dùng chung
- Sau khi build BusyBox, hệ thống tệp gốc tạo ra (rootfs.cpio.xz) có kích thước 137KiB
Cấu hình hệ thống tệp và khởi tạo
- Bao gồm cấu trúc thư mục tối thiểu cùng thông điệp chào mừng (welcome), inittab, và script khởi tạo rc
- Script rc sẽ mount
/proc, /sys, sau đó tạo thư mục /home và mount đĩa mềm vào /mnt
- Khi khởi động, hệ thống in banner chào mừng rồi vào shell (
/bin/sh)
- Chỉ định thông điệp khởi động và tham số kernel thông qua cấu hình syslinux.cfg
APPEND root=/dev/ram rdinit=/etc/init.d/rc console=tty0 tsc=unstable
Tạo ảnh khởi động
- Tạo ảnh đĩa mềm 1.44MB (floppinux.img), sau đó format và cài bootloader (syslinux)
- Sao chép kernel, hệ thống tệp gốc và các tệp cấu hình vào ảnh
- Có thể kiểm tra khởi động bằng qemu rồi ghi ra đĩa mềm thực tế
- Có kèm cảnh báo về nguy cơ mất dữ liệu nếu chọn sai ổ đĩa
Tóm tắt cuối cùng
- Phiên bản: 0.3.1 (tháng 12/2025)
- Kernel: 6.14.11
- BusyBox: 1.36.1
- Kích thước ảnh: 1.44MiB
- Dung lượng còn lại: khoảng 253KiB
- Các lệnh được hỗ trợ: thao tác tệp (cat, cp, mv, rm, ls, mkdir), quản trị hệ thống (df, sync, mount, umount), xử lý văn bản (echo, more), trình soạn thảo (vi)
Ý nghĩa
- Floppinux là một bản phân phối siêu nhẹ được tối ưu cho việc học cấu trúc kernel Linux và quá trình khởi động
- Hiện thực hóa một môi trường Linux hoàn chỉnh có thể chạy trên phần cứng thực trong chỉ một đĩa mềm
- Có thể được dùng như một nền tảng ví dụ hữu ích cho giáo dục, thử nghiệm hệ thống retro, và nhập môn phát triển nhúng
1 bình luận
Ý kiến trên Hacker News
Dịp Giáng sinh tôi đã thử biến một chiếc máy tính thời kỳ 32-bit thành thứ gì đó có thể dùng được ở mức thực tế
Vấn đề không phải hiệu năng mà là hỗ trợ phần mềm và driver video
Dạo này hầu như không còn build package cho 32-bit nữa, nên ngay cả CLI cũng bị hạn chế vì phụ thuộc 64-bit
Trong kernel, các driver GPU cũ cũng đã bị loại bỏ nên chỉ còn chế độ VGA mặc định, đến mức phát MPEG2 cũng chật vật
Cuối cùng tôi định cài Debian 5 phù hợp với phần cứng đó, nhưng ISO thời ấy không boot USB được nên đành bỏ cuộc
Kết luận là mấy dự án kiểu này thì vui thật, nhưng khó dùng thực tế
Giao diện cũ dễ chịu hơn ribbon UI, còn những thứ như WordArt thì gợi cảm giác hoài niệm
Tính năng của các bản mới cũng hay, nhưng thật ngạc nhiên khi một phần mềm gần 30 năm tuổi lại hoàn thiện đến vậy
NetBSD vẫn cung cấp package và pkgsrc cho i386
liên kết kho pkgsrc
Tôi thích chế độ văn bản VGA hơn đồ họa
Có quá nhiều ứng dụng dựa trên trình duyệt và đầy rẫy chương trình chậm chạp viết bằng JS
Việc LLM được huấn luyện trên kiểu mã này cũng khá thú vị
Còn chạy kèm cả NAT gateway lẫn web server mà vẫn ổn
Thế mà giờ lại thấy 16GB còn không đủ, thật trớ trêu
Có thể boot từ floppy hoặc CD rồi chainload USB ngay cả trên PC cũ
Tôi đã dùng trên Pentium MMX, chậm thì có chậm nhưng hoạt động tốt
Bản phân phối Linux đầu tiên tôi từng dùng là Damn Small Linux (DSL)
Ban đầu nó được dùng cho nỗ lực port sang GameCube, nhưng nhóm phát triển chính sau đó chuyển sang Gentoo
DSL 2024 hiện dựa trên antiX 23 i386, cắt giảm gói ngôn ngữ và tài liệu để nhét được môi trường desktop trong giới hạn 700MB
Có thể dùng script khôi phục để tải lại các file cần thiết
trang chính thức
Xem các bài đánh giá thì Alpine là distro được khuyên dùng, nhưng tôi cũng không rõ mức độ đáng tin đến đâu
Tôi đã thử trên một máy 486 thật nhưng boot thất bại
Gắn 32MB RAM vào nhưng báo lỗi “Booting kernel failed: Invalid Argument”
Có vẻ nguyên nhân là BIOS không hỗ trợ routine memory map E820h
Có thể tham khảo ảnh chụp màn hình và
bộ sưu tập phần cứng thực tế
Chiến lược duy trì dữ liệu dựa trên FAT12 được nêu trong bài là một cách tiếp cận thông minh để tiết kiệm không gian
Nhưng floppy không có journaling nên khi mất điện thì nguy cơ hỏng dữ liệu khá lớn
Thay vào đó, dùng filesystem dạng log-structured như JFFS2, hoặc chỉ serialize bằng tar lúc tắt máy, có thể sẽ an toàn hơn
Tôi đã dùng FAT suốt hàng chục năm mà hầu như không gặp hỏng dữ liệu
Đến giờ phần lớn thiết bị embedded vẫn dùng FAT
Có thể phục hồi sau sự cố bằng cách điều chỉnh thứ tự sao chép FAT1/FAT2 và cập nhật kích thước file
Slackware 8 hay cả NetBSD hiện nay vẫn giữ kiểu cấu trúc đó
Tôi nhớ bản demo QNX năm 1999
Từ một đĩa 1.44MB mà chạy được ngay GUI và trình duyệt web
Từ đó đến nay tôi chưa thấy thứ gì như vậy nữa
Giờ những hệ thống như vậy lại tồn tại trở lại
Nếu muốn tăng thêm phần 264KB còn trống, có thể dùng định dạng floppy mở rộng
Giống như đĩa cài Windows 95, dùng định dạng 21-sector track thì có thể lên tới 1680KB
Ngay cả công cụ định dạng tiêu chuẩn của Linux cũng tạo được layout như vậy
Tôi nhớ tiếng ổ đĩa mềm và cảm giác háo hức khi chờ tải xong
Giá mà có thể chỉnh âm này bằng cài đặt thì hay
Tôi đã bật cười khi thấy câu “ghi floppy trong 5 phút”
Tôi tự hỏi có nhất thiết phải format floppy không
Nếu syslinux hoặc lilo có thể nạp kernel trực tiếp từ sector của floppy thì có vẻ sẽ đơn giản hơn
ext2 có khi còn nhỏ hơn FAT
Tôi nhớ năm 1997 từng nhận Slackware bằng bộ 12 đĩa floppy
Chỉ có điều chất lượng kém nên cài đặt rất vất vả
Tôi tải từ VAX qua FTP, rồi chuyển sang PC DOS bằng Kermit để cài, nhưng cứ phải làm lại vì đĩa hỏng giữa chừng
Dòng X là cho X11, còn các dòng A/B/C là cho hệ thống cơ bản
Tôi đã chạy nó trên hệ thống Coppermine 933MHz, rồi sau này thay HDD xong định build X11 thì lại thất bại