Floppinux:單張 1.44 MiB 軟碟上的嵌入式 Linux(2025 年版) (★
106 分)
FLOPPINUX 2025 年版(v0.3.1)把一套可開機的 Linux 做進單張 3.5 吋 1.44 MiB 軟碟,定位像是「做單張軟碟版的 Linux From Scratch」:帶你從頭裁切 Linux 核心與使用者空間工具,最後在有軟碟機的老 PC 上直接開機進入終端機,能編輯檔案、寫簡單腳本,且在軟碟上保留約 264 KB 的可寫入空間讓使用者檔案能持續儲存。專案目標是極簡但可用,硬體門檻鎖定 i486(Intel 80486 等級的 32 位元 x86)以上處理器,最低 486DX 33 MHz、20 MB 記憶體與內建軟碟機,並強調可在實機或模擬器上運作。
教學核心是「把每一個 KB 都算到極致」。作者指出 Linux 核心從 6.15 起移除 i486 支援,因此選用仍相容的 6.14.11,先用 tinyconfig 起步,再以 menuconfig 只保留必要元件,例如 XZ 壓縮的 initramfs/initrd(開機時載入到記憶體的初始檔案系統)、486DX 目標處理器、軟碟與 RAM disk、TTY、可執行檔格式(ELF 與 #! 腳本)、以及 FAT(MSDOS)/proc/sysfs 等基本檔案系統支援。使用者空間則選 BusyBox(把多個常用指令整合成單一小型可執行檔的工具箱)1.36.1 並採靜態連結,挑選 vi、ash、mount/umount、mdev、init 等最小指令集合;為了在 64 位元主機上建置 32 位元目標,搭配 i486-linux-musl 交叉編譯器(musl libc:輕量 C 標準函式庫),最後做出最小目錄結構、裝置節點、inittab 與開機腳本。
持續儲存的設計是此版亮點:開機腳本會把 /dev/fd0 以 msdos(FAT)可讀寫方式掛載到
/mnt,建立 /mnt/data 後再用 bind mount 把它對應到
/home,讓使用者在
/home 的變更實際寫回軟碟資料區,同時把系統本體留在壓縮的 rootfs.cpio.xz。完成後用 Syslinux(常用於 FAT 的輕量開機載入器)做開機設定,建立 1440 KiB 軟碟映像檔、格式化、安裝開機載入器並複製核心與 rootfs;作者也提供用 QEMU(開源硬體模擬器)在 i386 模式、20 MB 記憶體與 486 CPU 參數下先行測試的方法。最終映像檔仍維持 1.44 MiB,作者列出的成果是核心約 881 KiB、工具與 rootfs 壓縮後約 137 KiB,df 顯示約 253 KiB 可用空間,並提醒寫入後要記得 sync,實際燒錄到軟碟時更要小心 dd 目標裝置避免毀損分割區。
留言區一方面充滿復古感:有人懷念軟碟讀寫聲與等待開機的期待感,也有人第一次聽到「floppy」而被科普這是 USB 隨身碟與 CD-ROM 普及前的常見儲存媒介,過去軟體也常以軟碟販售;還有人補充 3.5 吋其實是硬殼「diskette」,早年更大張、真的會「軟」的才更符合 floppy 的字面意思。也出現大量回憶與考古:1999 年的 QNX 1.44 MB 展示版可直接進視窗管理員並帶基本瀏覽器、MuLinux 與 Puppy Linux 等軟碟發行版、Slackware 曾需用多張軟碟安裝(有人爭論是 12 張還是 30+ 張,並分享撥接時代壞片重抓的痛苦),以及用 486 加兩張網卡跑 floppyfw/CoyoteLinux 當家用路由器、防火牆的實戰經驗。也有人質疑「為什麼要做」,但多數回應把它定位為學習與懷舊專案,就算沒有實體軟碟機,也能靠模擬器或復古硬體體驗。
技術討論則集中在「把 FAT12(早期 FAT 檔案系統的 12 位元版本)當持續儲存」的可靠度:有留言肯定用 bind mount 省空間很巧妙,但擔心 FAT12 不是日誌式(journaling)檔案系統,軟碟寫入又慢,若當機或中途斷電,可能造成檔案系統不一致甚至資料遺失;因此有人提議把剩餘空間當 raw block,或改用偏向追加寫入的日誌式檔案系統(例如精簡的 JFFS2,Journalling Flash File System 2),甚至把變更累積成 tar 並在關機時一次序列化寫回,以降低風險。也有人反駁「斷電就整張報廢」太誇張,指出 FAT 有兩份配置表可供復原,頂多出現 lost clusters(遺失叢集鏈)可用檔案系統檢查工具清理,並延伸到「日誌式檔案系統未必如想像中必要」的觀點。另一路討論把這類專案放回現實:即使 32 位元硬體效能對文書早已足夠,真正難題往往是應用層與驅動逐漸不再支援、以及瀏覽器型軟體的膨脹;有人補充 Debian 仍有 i386 支援,也有人建議改用 NetBSD 或用 isohybrid 等工具解決老 ISO 的開機媒介限制。
👥
57 則討論、評論 💬
https://news.ycombinator.com/item?id=46866544