Floppinux - एक फ्लॉपी डिस्क में समाया एम्बेडेड Linux का 2025 संस्करण जारी
(krzysztofjankowski.com)- एक ही फ्लॉपी डिस्क (1.44MB) से बूट होने वाला हल्का Linux डिस्ट्रीब्यूशन Floppinux अब 2025 संस्करण (v0.3.1) में अपडेट किया गया है
- नया संस्करण Linux kernel 6.14.11 और BusyBox 1.36.1 पर आधारित है, और इसमें persistent storage (264KB) तथा आधुनिक हार्डवेयर संगतता शामिल है
- यह Intel 486DX(33MHz) या उससे ऊपर के CPU और केवल 20MB RAM पर चल सकता है, तथा text editor (vi) और बुनियादी फ़ाइल संचालन कमांड्स को सपोर्ट करता है
- यह वास्तविक हार्डवेयर और emulator (qemu, Bochs, 86Box) दोनों पर चलता है, और इसे इस तरह बनाया गया है कि उपयोगकर्ता स्वयं kernel और toolchain बिल्ड करें
- 4 साल पहले पहली बार जारी होने के बाद से इसका उपयोग शिक्षा और प्रयोग के लिए होता रहा है; इस संस्करण में नवीनतम kernel को बनाए रखने और learning tutorial को अपडेट करने पर जोर है
प्रोजेक्ट अवलोकन
- Floppinux का लक्ष्य एकल फ्लॉपी डिस्क से बूट होने वाला न्यूनतम Linux सिस्टम बनाना है
- इसे “Linux From Scratch” जैसी सीखने के लिए workshop शैली में डिज़ाइन किया गया है, ताकि उपयोगकर्ता इसे सीधे संशोधित और विस्तारित कर सकें
- तैयार डिस्ट्रीब्यूशन text-based terminal environment देता है, जिसमें फ़ाइल संपादन और सरल script लेखन किया जा सकता है
- बची हुई स्टोरेज 264KB है, इसलिए उपयोगकर्ता अपनी बनाई हुई फ़ाइलों को सीधे फ्लॉपी पर सहेज सकते हैं
मुख्य फीचर्स और आवश्यक विनिर्देश
- single floppy boot, नवीनतम kernel (6.14), 32-bit x86 CPU (486DX या उससे ऊपर) सपोर्ट
- text editor (vi), बुनियादी फ़ाइल संचालन कमांड्स (cat, cp, mv, rm आदि), और सरल scripting फीचर्स शामिल
- persistent storage के जरिए फ्लॉपी पर फ़ाइलें सहेजी जा सकती हैं
- न्यूनतम हार्डवेयर आवश्यकताएँ: Intel 486DX 33MHz, 20MB RAM, internal floppy drive
kernel कॉन्फ़िगरेशन
- Linux 6.14.11 वह अंतिम kernel है जो i486 CPU को पूरी तरह सपोर्ट करता है
- kernel सेटिंग्स को न्यूनतम boot फीचर्स पर केंद्रित रखा गया है, और इसमें XZ-compressed initramfs, ELF executable support, और FAT filesystem शामिल हैं
- TTY, block device, /proc और sysfs filesystem सपोर्ट सक्षम किया गया है
- kernel build का आउटपुट bzImage(881KiB) के रूप में बनता है
build environment और toolchain
- build को Omarchy Linux(Arch-आधारित 64-bit OS) पर किया गया, लेकिन वही प्रक्रिया POSIX-compatible सिस्टम्स पर भी लागू की जा सकती है
- i486-linux-musl-cross cross compiler का उपयोग 32-bit target build के लिए किया गया है
- emulation environment के रूप में qemu का उपयोग किया गया है; Bochs debugging के लिए है, और 86Box धीमा लेकिन एक विकल्प है
BusyBox-आधारित toolset
- BusyBox 1.36.1 का उपयोग किया गया है, जो GNU utilities की जगह लेने वाला हल्का command set देता है
- चुने गए प्रमुख कमांड्स: cat, cp, df, echo, ls, mkdir, mv, rm, sync, vi, mount, umount, clear, test
- इसे static binary के रूप में build किया गया है, जिससे shared library dependency हट जाती है
- BusyBox build के बाद बना root filesystem (
rootfs.cpio.xz) 137KiB का है
filesystem और initialization कॉन्फ़िगरेशन
- इसमें न्यूनतम directory structure, welcome message, inittab, और rc initialization script शामिल हैं
- rc script
/proc,/sysको mount करने के बाद/homedirectory बनाती है और फ्लॉपी को/mntपर mount करती है - boot के समय welcome banner दिखाने के बाद shell(
/bin/sh) में प्रवेश होता है
- rc script
- syslinux.cfg सेटिंग्स के जरिए boot message और kernel parameters निर्धारित किए जाते हैं
APPEND root=/dev/ram rdinit=/etc/init.d/rc console=tty0 tsc=unstable
boot image बनाना
- 1.44MB floppy image (
floppinux.img) बनाई जाती है, फिर उसे format करके bootloader (syslinux) इंस्टॉल किया जाता है - kernel, root filesystem, और configuration files को image में कॉपी किया जाता है
- qemu से boot test करने के बाद इसे वास्तविक फ्लॉपी पर लिखा जा सकता है
- गलत drive चुनने पर data loss का जोखिम होने की चेतावनी भी शामिल है
अंतिम सारांश
- संस्करण: 0.3.1 (दिसंबर 2025)
- kernel: 6.14.11
- BusyBox: 1.36.1
- image size: 1.44MiB
- बची हुई जगह: लगभग 253KiB
- समर्थित कमांड्स: फ़ाइल संचालन (cat, cp, mv, rm, ls, mkdir), सिस्टम प्रबंधन (df, sync, mount, umount), text processing (echo, more), editor (vi)
महत्व
- Floppinux, Linux kernel की संरचना और boot process को सीखने के लिए अनुकूलित एक अति-हल्का डिस्ट्रीब्यूशन है
- यह वास्तविक हार्डवेयर पर भी चलने वाला पूर्ण Linux environment एक ही फ्लॉपी डिस्क में समेटता है
- शिक्षा, retro system प्रयोग, और embedded development की शुरुआत के लिए यह एक उपयोगी उदाहरण प्लेटफ़ॉर्म है
1 टिप्पणियां
Hacker News की राय
क्रिसमस के दौरान मैंने 32-bit युग के कंप्यूटर को सच में उपयोग करने लायक स्तर तक लाने की कोशिश की थी
समस्या performance नहीं बल्कि software support और video drivers थे
आजकल 32-bit के लिए packages लगभग build ही नहीं होते, इसलिए CLI भी 64-bit dependencies की वजह से सीमित हो गया है
kernel में भी पुराने GPU drivers हट चुके हैं, इसलिए सिर्फ basic VGA mode बचता है और MPEG2 playback भी मुश्किल हो जाता है
आखिर में मैंने hardware के मुताबिक Debian 5 install करने की कोशिश की, लेकिन उस समय के ISO में USB boot support नहीं था, इसलिए छोड़ना पड़ा
नतीजा यही है कि ऐसे project मजेदार तो हैं, लेकिन रोज़मर्रा के इस्तेमाल के लिए मुश्किल हैं
ribbon UI से पुराना interface बेहतर लगता है, और WordArt जैसी features nostalgia जगाती हैं
नए versions की features भी अच्छी हैं, लेकिन लगभग 30 साल पुराने software का इतना polished होना हैरान करता है
NetBSD अब भी i386 के लिए packages और pkgsrc देता है
pkgsrc repository link
मुझे graphics से ज़्यादा VGA text mode पसंद है
browser-based apps बहुत ज़्यादा हो गई हैं, और JS से बने धीमे programs हर जगह हैं
यह दिलचस्प है कि LLM ऐसे code पर train हो रहे हैं
साथ में NAT gateway और web server भी चल रहे थे, और सब ठीक काम करता था
लेकिन आज 16GB भी कम लगना एक अजीब विडंबना है
इसे floppy या CD से boot करके पुराने PC पर भी USB से chainloading किया जा सकता है
मैंने इसे Pentium MMX पर इस्तेमाल किया था; धीमा था, लेकिन ठीक चला
मैंने सबसे पहले जो Linux distro इस्तेमाल किया था, वह Damn Small Linux (DSL) था
इसे मूल रूप से GameCube porting की कोशिश में इस्तेमाल किया गया था, लेकिन मुख्य development team बाद में Gentoo पर चली गई
मौजूदा DSL 2024, antiX 23 i386 पर आधारित है, और 700MB सीमा के भीतर desktop environment रखने के लिए language packs और documentation कम किए गए हैं
restore script से ज़रूरी files फिर से डाउनलोड की जा सकती हैं
official site
reviews में Alpine को recommended distro बताया गया था, लेकिन उसकी विश्वसनीयता को लेकर पक्का नहीं हूँ
मैंने इसे असली 486 पर test किया, लेकिन boot fail हो गया
32MB RAM लगाई थी, फिर भी “Booting kernel failed: Invalid Argument” error आया
लगता है कि BIOS में E820h memory map routine support न होने की वजह से ऐसा हुआ
screenshot और
real hardware gallery देखी जा सकती है
लेख में बताई गई FAT12-based persistence strategy जगह बचाने के लिए काफ़ी समझदारी भरा तरीका है
लेकिन floppy में journaling नहीं होती, इसलिए power cut होने पर data corruption का जोखिम बड़ा है
इसकी जगह log-structured filesystem (जैसे JFFS2) इस्तेमाल करना, या shutdown के समय ही tar से serialize करना, ज़्यादा सुरक्षित हो सकता है
मैंने दशकों तक FAT इस्तेमाल किया है, लेकिन data corruption बहुत कम देखा है
आज भी ज़्यादातर embedded devices FAT ही इस्तेमाल करते हैं
FAT1/FAT2 copies और file size update के क्रम को बदलकर crash के बाद recovery संभव हो सकती है
Slackware 8 या आधुनिक NetBSD भी अब तक वैसी ही संरचना बनाए हुए हैं
मुझे 1999 की QNX demo floppy याद है
1.44MB disk से सीधे GUI और web browser चल जाते थे
उसके बाद मैंने वैसी चीज़ कभी नहीं देखी
अब फिर से वैसी systems मौजूद हैं
बची हुई 264KB जगह बढ़ाने के लिए extended floppy format इस्तेमाल किया जा सकता है
Windows 95 install disk की तरह 21-sector track format इस्तेमाल करें तो 1680KB तक पहुँचा जा सकता है
Linux के standard formatting tools से भी ऐसा layout बनाया जा सकता है
floppy disk की आवाज़ और loading का रोमांच याद आता है
अच्छा होता अगर इस आवाज़ को settings से adjust किया जा सकता
“5 मिनट में floppy burn करना” पढ़कर हँसी आ गई
सोचता हूँ कि क्या floppy को सच में format करना ज़रूरी है
अगर syslinux या lilo kernel को सीधे floppy sectors से load कर सकें, तो चीज़ें और सरल हो सकती हैं
ext2 शायद FAT से छोटा भी हो
मुझे 1997 में 12 floppy disks के set में Slackware मिलने की याद है
लेकिन उनकी quality अच्छी नहीं थी, इसलिए install करना मुश्किल होता था
मैंने इसे VAX पर FTP से लिया, फिर Kermit से DOS PC पर transfer करके install किया, लेकिन बीच में खराब disks की वजह से कई बार दोहराना पड़ा
X series, X11 के लिए थी, और A/B/C series base system के लिए थीं
मैंने उसे 933MHz Coppermine system पर चलाया था, और बाद में HDD बदलने के बाद X11 build करने की कोशिश की थी, जो नाकाम रही