11 điểm bởi GN⁺ 2026-02-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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.11BusyBox 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

 
GN⁺ 2026-02-04
Ý 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ềmdriver 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ế

    • Tôi đã chạy Office 97 trong VM, và nó vẫn đầy đủ tính năng và nhanh
      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
    • Có vẻ đây là câu chuyện chỉ đúng với Linux
      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
    • Vấn đề không phải hiệu năng mà là sự phình to của phần mềm hiện đại
      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ị
    • Tôi nhớ hồi đầu những năm 2000 từng chạy server CS 1.6 với AMD 800MHz và RAM 256MB
      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
    • Tôi khuyên dùng Plop Boot Manager
      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

    • Gần đây tôi xem lại Puppy Linux, DSL và TinyCoreLinux để tạo VM cho sandbox agent LLM
      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
    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

    • Journaling thật ra không phải lợi thế lớn như tưởng tượng
      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
    • FAT cũng có thể đạt độ ổn định ở mức journaling nhờ thiết kế driver
      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
    • Ngày xưa thậm chí còn chưa có initrd, cả hệ thống được đọc trực tiếp từ đĩa
      Slackware 8 hay cả NetBSD hiện nay vẫn giữ kiểu cấu trúc đó
    • Cũng có thể dùng kiểu root chỉ đọc kết hợp overlay ghi được như cấu trúc squashfs + jffs2 overlay của OpenWrt
    • Để giảm rủi ro mất điện, tôi nghĩ dùng ổ đĩa mềm thứ hai sẽ tốt hơn
  • 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

    • MenuetOS/KolibriOS cũng là ví dụ tương tự
      Giờ những hệ thống như vậy lại tồn tại trở lại
    • xwoaf-rebuild cũng cùng dòng đó
    • Lúc mới thấy, việc nhét GUI và driver vào 1.44MB quả thật khó tin
    • Giờ chắc chỉ riêng bảng Unicode thôi cũng đã vượt dung lượng rồ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

    • Tiếng coil whine trên laptop ngày nay ít nhiều vẫn gợi lại cảm giác “máy tính đang làm việc” của thời đó
      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”

    • Đúng là cách diễn đạt rất đậm chất thế hệ CD-R/RW
  • 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

    • Hồi đó ngoài cửa hàng có bán floppy chứa Slackware với giá “siêu sốc”
      Chỉ có điều chất lượng kém nên cài đặt rất vất vả
    • MuLinux cũng là một bản phân phối live dựa trên floppy, và có thể mở rộng bằng các floppy bổ sung cho X11 hoặc gói ngôn ngữ
    • Thực ra chắc là hơn 30 đĩa
      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
    • Có lẽ bản chạy bằng hai đĩa là Puppy Linux
      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