The two main problems I ran into were 1) software support at the application layer, and 2) video driver support. There is a herculean effort on the part of package maintainers to build software for distros, and no one has been building 32 bit version of software for years, even if it is possible to build from source. There is only a very limited set of software you can use, even CLI software because so many things are built with 64 bit dependencies. Secondly, old video card drivers are being dropped from the kernel. This means all you have is basic VGA "safe-mode" level support, which isn't even fast enough to play an MPEG2. My final try was to install Debian 5, which was period correct and had support for my hardware, but the live CDs of the the time were not hybrid so the ISO could not boot from USB. I didn't have a burner so I finally gave up.
So I think these types of projects are fun for a proof of concept, but unfortunately are never going to give life to old computers.
It baffles me how usable Office 97 still. I was playing with it recently in a VM to see if it worked as well as I remembered, and it was amazing how packed with features it is considering it's nearing on thirty. There's no accounting for taste but I prefer the old Office UI to the ribbon, there's a boatload of formatting options for Word, there's 3D Word Art that hits me right in the nostalgia, Excel 97 is still very powerful and supports pretty much every feature I use regularly. It's obviously snappy on modern hardware, but I think it was snappy even in 1998.
I'm sure people can enumerate here on the newer features that have come in later editions, and I certainly do not want to diminish your experience if you find all the new stuff useful, but I was just remarkably impressed how much cool stuff was in packed into the software.
(edit to say I'm obviously ignoring i8n etc.)
With memory prices skyrocketing, I wonder if we will see a freeze in computer hardware requirements for software. Maybe it's time to optimize again.
It's really astonishing how full-featured it all was, and it was running on those Pentium machines that had a "turbo" button to switch between 33 and 66 MHz and just a few MBs of RAM.
With the small caveat that I only use Word, it runs perfectly in WINE and has done for over a decade. I use it on 64-bit Ubuntu, and it runs very well: it's also possible to install the 3 service releases that MS put out, and the app runs very quickly even on hardware that is 15+ years old.
The service packs are a good idea. They improve stability, and make export to legacy formats work.
WINE works better than a VM: it takes less memory, there's no VM startup/shutdown time, and host integration is better: e.g. host filesystem access and bidirectional cut and paste.
It definitely was snappy. I used it on school computers that were Pentium (1?) with about as much RAM as my current L2 cache (16MB). Dirty rectangles and win32 primitives. Very responsive. It also came with VB6 where you could write your own interpreted code very easily to do all kinds of stuff.
Still remember it was possible to perfectly mimick existing documents that had long stopped being printed with such a quality in replication.
The introduction of ribbons was a cruel mistake. It gets harder and harder to know where anything is located nowadays because ribbons hide options too often.
I am now starting to wonder how much of it has to do with network access to Sharepoint and telemetry data that most likely didn't exist in the Office 97 dial-up era.
Features-wise - I doubt there is a single feature I use (deliberately) today in Excel or Word that wasn't available in Office 97.
I'd happily suffer Clippy over Co-Pilot.
Truly, I do not miss the swamp of toolbar icons without any labels. I don't weep for the old interface.
Nope, that’s a modern problem. That’s what happens when the js-inmates run the asylum. We get shitty bloated software and 8300 copies of a browser running garage applications written by garbage developers.
I can’t wait to see what LLMs do with that being the bulk of their training.
Exciting!
That seems odd? Debian 12 Bullseye (oldstable) has fully supported i386 port. I would expect it to run reasonably well on late 32 bit era systems (Pentium4/AthlonXP)
But otherwise, yes, Debian 12 should work fine as you say. Not so long ago I installed it on an old Pentium M laptop I had lying around. Did take some tweaking, turned out that the wifi card didn't support WPA2/3 mixed mode which I had configured on my AP, so I had to downgrade security for the experiment. But video was hopeless, it couldn't even play 144p videos on youtube without stuttering. Maybe the video card (some Intel thing, used the i915 driver) didn't have HW decoding for whatever video encoder youtube uses nowadays (AV1?), or whatever.
[1] My first broadband connection was in 1998 at 768/768 kbit symmetrical. My first megabit speed connection was in 2006 or 2007. in 2010 or 2011 we got VDSL and it was 16 whole megabits. Now i have 300mbit on a good day, and 150mbit on a bad day.
I literally wrote the guide on how to use old hardware with VM tech to route your house, first with ipcop[2], then generically[3], and just this week i wrote a guide on how to get ipv6 working with starlink and dd-wrt[4].
i've been in this a long time.
[2]https://web.archive.org/web/20220323223325/https://www.dslre...
[3]https://web.archive.org/web/20131214075417/https://www.dslre...
and the dd-wrt starlink one from this week:
[4]https://nextcloud.projectftm.com/index.php/s/4iScqZbrfYiNcKy
ETA: it is hilarious how much pushback i got about doing all of this in a VM, just scant years before "you should just use a VM for that" became the default answer, and a decade before "just put it in a k8s cluster and pay someone a quarter million a year to babysit it" became a thing...
also ipcop booted and installed off a single floppy forever
Alternatively you may have accidently built a great machine for installing FreeDOS to run old DOS games/applications. It does install from USB, but needs BIOS so can't run it on modern PC hardware.
It can boot from a floppy or from a CD drive, and it lets you chainload into a live usb even on old computers.
I used it to boot from CD from a floppy in an old Pentium MMX and it worked great (although slow, of course)
My first thought: How about using a current computer to run qemu then mounting the Lenny iso as an image and installing to a qemu hard drive? Then dd the hard drive image to your 32bit target. (That might need access to a hard drive caddy depending on how you can boot the 32bit target machine, so a 'hardware regress' I suppose).
My second thought: If target machine is bootable from a more recent live linux, try a debootstrap install of a minimal Lenny with networking (assuming you can connect target machine to a network, I'm guessing with a cable rather than wifi). Reboot and install more software as required.
My biggest obstacles are that it doesn't have an ethernet port and that it doesn't have BIOS USB support (although it does have a card with two USB ports).
I've managed to run some small Linux distros on it (I'll definitely try this one), but, you're right, I haven't really found anything useful to run on it.
I have P1 90mhz P2 500mhz and typing from P4 just now :P
I think biggest limit will be missing SSE2 PAE POPCNT modern distros need this
Start with a conventional MBR and active FAT32 partition, and make sure it will boot to MS-DOS, this only requires the 3 DOS OS files to be present when the bootsector is a DOS bootsector (which seeks IO.SYS).
Once that's done, then (optionally) copy the DOS bootsector to a file on that FAT32 volume, name the (512 byte) file BOOTSECT.DOS. A disk editor can do this, or carefully use dd in Linux.
I then boot to Windows and use its CLI to run SYSLINUX.EXE (v6.03 on virgin media), to "Syslinux" (verb) the FAT32 volume. You can alternatively do this from Linux. This replaces the DOS bootsector with a Syslinux bootsector that will seek a Syslinux folder instead of seeking IO.SYS. Also writes ldlinux.sys and ldlinux.c32 to the FAT volume.
You do have to be consistent with your Syslinux version, the .C32 files in use must be from the same version of Syslinux that you use to "Syslinux" the FAT volume. And must match the version of Isolinux used to make the ISO. To find out which version of Isolinux was originally used on the ISO, open the ISO in a disk editor and these have big sectors but about the third sector down will be some readable text with the Isolinux version number.
Then copy all the files & folders from the mounted ISO to the FAT volume, change the name of the isolinux folder to syslinux, in the syslinux folder change the name of isolinux.cfg to syslinux.cfg.
A properly prepared distro distributed in ISO form should then boot normally the way it is intended when stored on a FAT filesystem instead.
Show-stoppers can still arise when some live distros have .CFG bootstrings within their Isolinux folder that specify CDROM or other hardcoded deficiencies, for USB you can sometimes specify REMOVABLE after you change the foldername to Syslinux. You can also specify a chosen volume in case it's not picked up by default.
You may need to look at every .CFG file in the Syslinux folder, they are all usually linked, ideally there is only syslinux.cfg but some people make it more complicated than that. Back them up before editing but they are just text files.
I expect at least the base system (including X) to work without big issues (if your hardware is supported), for extra packages you may need a bit of luck.
[1] https://www.openbsd.org/plat.html
This statement must be Linux-only
Pre-compiled packages for i386 are still available for all versions of NetBSD including the current one
I still compile software for i386 from pkgsrc
https://ftp.netbsd.org/pub/pkgsrc/current/
NB. I'm not interested in graphical software, I prefer VGA textmode
Don't lose hope. You can boot it one way or other :)
Little known fact; before 2006 all we did was play Pong and make beep-boop noises on our computers.
From the main page:
As with most things in the GNU/Linux community, this project continues to stand on the shoulders of giants. I am just one guy without a CS degree, so for now, this project is based on antiX 23 i386. AntiX is a fantastic distribution that I think shares much of the same spirit as the original DSL project. AntiX shares pedigree with MEPIS and also leans heavily on the geniuses at Debian. So, this project stands on the shoulders of giants. In other words, DSL 2024 is a humble little project!
Though it may seem comparably ridiculous that 700MB is small in 2024 when DSL was 50MB in 2002, I’ve done a lot of hunting to find small footprint applications, and I had to do some tricks to get a workable desktop into the 700MB limit. To get the size down the ISO currently reduced full language support for German, English, French, Spanish, Portuguese and Brazilian Portuguese (de_DE, en_AU, en_GB, en_US, es_ES, fr_FR, es_ES, pt_PT, & pt_BR ). I had to strip the source codes, many man pages, and documentation out. I do provide a download script that will restore all the missing files, and so far, it seems to be working well.
It really depends on what you are looking at. This is a bit of an apples to oranges comparison, but OpenWrt happily works with 16MB of disk space, and can go down to 8MB if you squeeze it. It includes a modern Linux kernel, shell, networking stack, ssh server, package manager, text editor, web server with dynamic pages, etc...
Part of it's trick is that it aggressively pares down the hardware support, such that you normally download an OpenWrt image customized to your exact router. But of course the biggest difference is that it doesn't include a graphics stack or any GUI applications.
I work in embedded Linux, and its a whole different world here of trimming the fat on Linux to keep the BOM prices low. But you'd be surprised how lean we can get it.
For those who are curious, Alpine was the recommended distro as I went through various reviews. I don't know how reliable that advice is.
I once tried to use it as a GUI daily driver on my work laptop (since I was already using it for containers and VMs at work) and found that stretched it a bit too far out of its speciality. It definitely had the necessary packages, just with a lot of rough edges and increased rate of problems (separate from glibc, systemd, or other expected compatibility angles). Plus the focus on having things be statically linked makes really wide (lots of packages) installs negated any space efficiency gains it had.
I don't know if that's also true for data integrity on physical magnetic media. FAT12 is not a journaling filesystem. On a modern drive, a crash during a write is at best, annoying while on a 3.5" floppy with a 33mhz CPU, a write operation blocks for a perceptible amount of time. If the user hits the power switch or the kernel panics while the heads are moving or the FAT is updating, that disk is gone. The article mentions sync, but sync on a floppy drive is an agonizingly slow operation that users might interrupt.
Given the 253KiB free space constraint, I wonder if a better approach would be treating the free space as a raw block device or a tiny appended partition using a log-structured filesystem designed for slow media (like a stripped down JFFS2 or something), though that might require too many kernel modules.
Has anyone out there experimented with appending a tar archive to the end of the initramfs image inplace for persistence, rather than mounting the raw FAT filesystem? It might be safer to serialize writes only on shutdown, would love more thoughts on this.
1) mark blocks allocated in first FAT
If a crash occurs here, then data written is incomplete, so write FAT1 with data from FAT2 discarding all changes.
2) write data in sectors
If a crash occurs here, same as before, keep old file size.
3) update file size in the directory
This step is atomic - it's just one sector to update. If a crash occurs here (file size matches FAT1), copy FAT1 to FAT2 and keep the new file size.
4) mark blocks allocated in the second FAT
If a crash occurs here, write is complete, just calculate and update free space.
5) update free spaceMakes sense, great point. I would rather use a second drive for the write disk space, if possible (I know how rare it's now to have two floppy drives, but still).
This isn't true, I commented lower in the thread, but FAT keeps a backup table, and you can use that to restore the disk.
https://news.ycombinator.com/item?id=38059961
https://news.ycombinator.com/item?id=27249075
That was 1999 and I never saw anything like that afterwards.
Now you have ;-)
https://web.archive.org/web/20240901115514/https://pupngo.dk...
Sadly, it does not seem to boot on my 486 DX2, I even stuffed 32M of RAM into the machine (8*4M, maximum the mainboard supports), more than the recommended 20M.
I have copied the floppy image from the site. It churns for about a minute and a half, loading kernel and initrd, then says "Booting kernel failed: Invalid Argument" and drops into SYSLINUX prompt.
EDIT: I tried a few more floppies to rule that out as the cause of the problem.
Here are some screenshots: https://imgur.com/a/floppinux-0-3-1-Mdh1c0w
EDIT 2: I cloned SYSLINUX, checked out the specific commit and did some prodding around.
The function `bios_boot_linux` in `com32/lib/syslinux/load_linux.c` initializes errno to EINVAL. Besides sanity checking the header of the kernel image, there are a few other error paths that also `goto bail;` without changing errno.
Those other error paths all seem to be related to handling the memory map. I know that the BIOS in my machine does not support the E820h routine. I have a hunch that this might be the reason why it fails.
The website has an image gallery where people ran it on actual hardware: https://krzysztofjankowski.com/floppinux/floppinux-in-the-wi...
Most of those machines seem to be newer systems which probably support E820h, except for another 486 DX2 with a similar vintage as mine, that also failed to boot.
For my 486 distro[see snacklinux.org], I use syslinux 4.07 due to similar issues. I never had any luck with syslinux 6.x, I’d recommend a similar path. It always seems funny to me when I see similar projects, claiming it runs on 486 hardware but rarely do I see people actually doing that, and just fire up qemu instead. Running Linux in a vacuum isn’t realistic, especially when we’re talking old hardware and configuring IRQs manually.
It is running some AMI BIOS variant with a copyright date of 1992, I currently don't have the exact version string around to compare with the ROM dumps on retroweb. vbindiff says the "F" and "M" images are identical and the "H" only has a few 1-byte differences, mostly typos in ASCII strings.
I've written a small boot sector program once that tries out memory and CPU information gathering techniques, so I know the INT 15h, E820h, E801h are not implemented but INT 12h and INT 15h AH=88h return something sane. When I have more than 16M installed, the later reports the full 31M of HIMEM, but I'm not sure how the ISA memory hole factors into this.
From what I saw glancing at the scanning code yesterday, syslinux 6.x should fall back onto AH=88h if AX=E820/E801 doesn't work. It's interesting to know that this worked in older SYSLINUX, I'm curious to check out what changed.
Whish coil whine was configurable :)
oh god
The HDD was borked but it had a 3.5" bay that worked, so I got a floppy-based distro running on it. I later replaced the drive and then made the mistake of attempting to compile X11 on it. Results were... mixed.
Ah, good times ;-)
X disks were X11. There were also the A,B, C etc disks.
Then there was the Coherent install, with massive manual on ultra thin paper with the shell on the front.
This could be increased noticeably by using one of the common extended floppy formats. The 21-sectors-per-track format used by MS¹ for Windows 95's floppy distribution was widely supported enough by drives (and found to be reliable enough on standard disks) that they considered it safe for mass use, and gave 1680KB instead of the 1440Kb offered by the standard 18-sector layout. The standard floppy formatting tools for Linux support creating such layouts.
--------
[1] There was some suggestion² that MS invented the extended floppy format, they were sometimes called “windows format”, but it³ had been used elsewhere for some time before MS used them for Windows and Office.
[2] I'm not sure if this came from MS themselves, or was invented by the tech press.
[3] and even further extended formats, including 1720KByte by squeezing in two extra tracks as well as more data per track which IIRC was used for OS/2 install floppies.
As an alternative, isn't ext2 smaller by having no FAT tables?
https://www.zelow.no/floppyfw/
to setup small router on 486 with 12 MB ram and run flawless. Later i get Linksys WRT54GL and decommissioned that machine.
And they used to fail all the time, especially when you had something that spanned more than a single disk.
Are you from South Africa? I understand it was the standard slang name there -- and nowhere else, because of the double entendre.
(That mail also mentions the floppy driver is "basically orphaned" though. But evidently it's still there and builds.)
Maybe you're thinking of the floppy tape (ftape) driver, which was removed back in the 2.6.20 kernel. Though there's a project keeping an out-of-tree version of it working with recent kernels at https://github.com/dbrant/ftape
The Linux kernel drops i486 support in 6.15 (released May 2025), so 6.14 (released March 2025) is the latest version with full compatibility.
It's basically what people used before USB sticks. But it was also the storage medium that software was sold on, before CD-ROMs became widespread.