Hacker News new | past | comments | ask | show | jobs | submit login
Booting a 486 from floppy with the most up-to-date stable Linux kernel (insentricity.com)
315 points by LeoPanthera on July 6, 2020 | hide | past | favorite | 167 comments



Does anyone else miss having this level of motivation? And that's not an isolation effect on me, I gave up on trying fun things like this for a long long time now.


I really missed it. From when I was 11, until I was about 20, I enjoyed doing this kind of work.

When I was 20, I got into a relationship with someone who was critical of it, and I ended up succumbing to their criticism, quitting my hacking, and going into IT industry instead.

I did that for about 15 years, but all along, I missed doing this kind of stuff. I kept doing it a little here and there, but my jobs would eat most of my hack juice, and I just didn't have much left for my own projects.

But I had already tasted the sweet nectar, and eventually I got tired of waiting for it, and abandoned the professional world gradually but completely.

I'm back to hacking now, and I could not be happier.


sounds great, how do you sustain yourself, still working?


No, I have become freegan, which means I have abandoned the currency system and live largely without touching it.


This takes the cake for unexpected comment of the night. Could you explain where you live (location and housing situation) and how you feed yourself? I'm genuinely curious.


I do not live in one place, I travel around.

Sometimes I live outdoors, which I find comfortable with practice.

I consider NYC my project's headquarters and it is where I stay majority of the time.

I am sometimes housed by friends, family, and supporters of my software projects.

For food, I primarily dumpster-dive.


Do you find something ethically wrong with selling your services to someone who would pay for them? Or is it that you don't want anyone telling you what to do? I'm honestly curious about the reasons for becoming freegan.


Is, erm, is this satire?

If you are genuinely able to be genuinely self sufficient without interacting with currency while still bieng able to have power to go on a computer with an internet connection, I have to say, props to you.

I just hope you do not get hit with a serious medical issue. Or have a fire and then get hit with a fire Marshall tearing you a new one over your unpaid property bieng not up to code.


Thank you for your well wishes. I do not own any property, up to code or not.

I think overwork, unhappiness, and stress lead to many serious and preventable medical issues in today's world.

Not satire.


They may not be US based.


Can you point to a good intro on freeganism? Podcasts, YouTube channels, books, blogs?


In my mid-40's I still get this urge to play around with "useless" things. In most cases, I don't actually act on it, and instead spend an hour or two watching videos of or reading blogs by people who actually did it.

That doesn't mean I don't spend some time on these things. I've been doing some Atari 2600 programming, and have been playing around with an emulated IBM mainframe (TK4 on Hercules). I have also been working on a new demo effect on the Atari ST.

Note how the things I actually do follow through on, they're all working on emulators. It does give me the ability to take advantage of modern technology (such as Emacs) while still exploring the limits of old systems.

I'd like to think that getting older means you can appreciate both the old and the new, and I think my hobby projects reflect that.


Hey ! I'm just doing that on Apple 2 :-)

Coding with modern tool sis fun because you can go much faster to handle the technical challenges of demos. Meaning, in my case, I can reach the algorithmic (the most interesting to me) aspect much faster.

For example, I've made a "bad apple" demo and I was able to quickly prototype a running version thanks to emulator, assembler, etc. Then I spend the remaining 80% of the project of figuring out the compression scheme.

Today, I'm working on some 3D stuff. Spent some time on basics (line drawing, assembler, etc) and again, I've reached the point where compression is the issue ! Back in the old days, this would've taken so much longer...


I get where you're coming from, but at the same time... I've been there, done that. I don't mean that in a negative way- rather, it's just that I've already gotten the satisfaction I'm going to get out of projects of this nature. Same thing as when I was in to rebuilding V8 engines when I was younger. It was fun to figure out the system, and see what was possible with a few tweaks. Now that I've clearly defined where the edges are, it's on to the next thing. I don't need to repeat the same experiment forever, you know?


Yeah I enjoy having the sense of accomplishment and the knowledge gained but like you have trouble getting excited about repeating things. I think people who do their hobbies in a serious exploratory way are probably the minority though. I ride motorcycles struggle to understand guys who just want to go ride the same route 10 hours every weekend. I guess its a kind of emotional release rather than intellectual thrill.


I've actually had quite a bit of motivation after moving out of my old apartment. I was able to unpack all of my electronics stuff and tools again. Previous place was way too small. Actually unpacking stuff triggered a lot of desire to do stuff with it again.

One of the things I found was a tube full of rom-less 8051 microcontrollers and another tube of AM85C30 Dual UARTs I probably picked up at a robotics club swap meet years ago. Ended up building a breadboard "computer" and picked up an universal programmer on eBay for like $50 (uses the open source minipro tool). (https://imgur.com/IjJ6HO6)

Also did some reverse engineering on how to do in-system programming of the BIOS chip in some 386EX based single board computer I have. I wanted to give myself an extra challenge while following the rust blog_os project.


You need some "magic baud" crystals! I'm partial to 11.0592 because it fits nicely under chips rated for 12MHz without wasting much, and a lot of parts rated for 10 will happily overclock there quite stably.

This is an incredibly useful reference: https://en.wikipedia.org/wiki/Crystal_oscillator_frequencies


Yup! I have some on hand, but the DUART only takes a single clock line and I didn't have the parts for to build the crystal driver. This particular 8051 has a built in one, but no oscillator out. Was contemplating using one of its timers.

I didn't even realize the AVR supported a clock out until I bumped into it in the data sheet. Maddeningly it's not broken out on the Arduno Mega =P.


I'm in the same boat -- too little space for my electronics hobby. I did buy an 200 mhz osciloscope, soldering microscope, hot air and new soldering iron though.

The only excuse to pull them out is to fix broken electronics/toys.


I used to do this kind of stuff in junior high, high school, and college...back when I had the time now. Now with a day job it's time to find some time to muck around and really explore things with your curiosity and imagination. I totally see where you're coming from.


For most people I know (including me) tinkering like that dies down when you get an IT job. After spending 40h+ per week dealing with stupid computers, you rarely have enough motivation to do it again at home, as a hobby. You just want stuff to work.

But the tinkering urge isn't gone. I highly recommend finding different hobby, that can satisfy that itch. Gardening, woodworking, cars, motorcycles, 3d printing, etc. You can spend many hours doing "useless" things there, and have tons of fun.

For me, for example, I used to get happiness from spending 20h of my time to get Linux running on some old HW, worth $5. Now I get similar rush from spending 20h trying to build something from wood, that ends up costing me way more and looking more crappy that picking it up at the store.


I second that. Woodworking is great for hackers.


It seems that with experience, you sometimes just understood that something's theoretically possible, and lose interest at that point. At least, that's how I try to rationalize my laziness.


I picked it up again!

2 years ago, I was fed and bored with spending my evenings and weekends doing nothing useful, so I built myself an electronics lab and now I’m in there almost every night.

The last few weekends I’ve been trying to reverse engineer and hack the firmware of a 25 year old Tektronix oscilloscope.

It’s a bit of a pointless exercise, and somebody asked me on Twitter “why?”, and the simple reply is “because it’s there.”

But also: I’ve learned to use Ghidra and it’s given me tons of hours of tinkering.


I lost interest in this stuff when I got my first sysadmin job.


Ironically, that's when I gained an interest in it. There's often time to play around when everything is running smoothly, and experimenting with Linux on old (and new) hardware looks like you're working to others.


Dealing with garbage tech is what brings me down. Completely broken, unusable garbage software is everywhere, backed by egos, emotions, power plays, and entrenchment. That's the part I don't want to deal with. The only thing worse than having to deal with a bunch of idiots is having to deal with a bunch of things made by them. It pisses me off how broken everything is and how few people seem to take issue with it.

Everything is like this. Sturgeon's law is everywhere.

Once I can somehow push those things out of my life, I'm good.


This is why I save my vacation days up and take a big chunk once or twice a year, instead of frittering away fridays and mondays to have little "long weekends" throughout the year, as I did in the past.

I discovered that, after 4 or 5 days of staycation, I've handled most of the crap that was hanging over my head. I've caught up on laundry, done whatever administrative stuff I had been procrastinating about, and I can finally start to relax. Which is to say, pursue leisure activities without feeling like there's something else I should be doing.

Being able to unplug from the day-job allows me to disconnect from a lot of that garbage tech and its frustration factors, and dedicate long periods of concentration to in-depth tasks that might not yield immediate payback. When I only have a few hours in the evening to put towards a task, I tend towards things with short-term payback, so I don't feel like I wasted the evening. That keeps me from really hacking on stuff in my spare time.


I'm super into the 3-day weekends, but I also agree with the extra long vacation-staycation thing, where you can just "be" for a while. Like 4 days of nothin & puttering around, followed by 2 days of cleaning & finally attending to {X,Y,Z}.


Oh man do I know the feeling. I said to my boss not that long ago something along the lines of "modern software has taught me to hate technology". I day dream about leaving my career for something else. I'd even take a significant pay cut for it.


Get OpenBSD/Slackware, set XFCE as your main DE. With that and a bunch of tools you won't come back.


Extra hard when a 2 year old keeps cramming half-eaten fruit into everything.


I think in a lot of the cases it is a combination of how the jobs have sucked a lot more out of folks and having family/kids/responsibilities etc. The latter was always present but the former has just gotten worse over the years.


I still have it, but almost everything else in life is fighting against letting me explore it.


I've just become a lot lazier


I started playing too many video games :(


Switch domains. I've done software for a living because I liked it for 35 years or so, then coasted for a bit and now have a small specialized consulting company and as much free time as I can manage goes towards music related projects. Much happier now, strongly motivated and every now and then a bit of software gets written around that theme as well.


I've struggled with keeping this kind of motivation for years. My way out involved getting an interesting job and finding a topic, which is somehow related to the work (so that your reason doesn't fight) yet not directly aimed at a practical outcome in your work (to keep the enjoyment).

For me, personally, the hobby part became SAT solving. It's related to software verification and theorem proving and I feel like learning something useful - even for my family through better career prospects (responsibility box ticked). And I still get the bit-fiddling just as when hacking old microprocessors.


It's also kind of a combination of motivation and depth. I've done some work coaching people who are seeking change like this, and you have to hack the process a bit, so that the depth-oriented part is tightly aligned with the subject and their history.

Without the depth consideration tied to something really firm (so to speak), it might as well be an article about how fun a challenge it is to casually travel to deep space, for how approachable it will be given even the highest level of layman's motivation.


I feel ya. Every now and then I have a burst of creativity though and try to pick a project that can be completed in a day =) they're rarer now though (mid 30's)


We need a list of projects to complete in 30 minutes or less ;)


There’s no ROI on doing this stuff besides the intangibles. This is a startup news website, and you’re on here because you want, or were interested in, getting rich during the ages of 18-35.

Could just be me though.


It's not just you, but personally, I've never been interested in getting rich. For me, HN is a replacement for slashdot, after every second comment there was racial slur copypasta. I'm here for the technical articles and wacky projects like this.

For myself, opportunities to hack on fun side-projects are rare but I cherish them. Geeking out brings me satisfaction and joy. I've put a couple of fun projects on github and every fork & star is a little hit of shameless gratification: unlike karma on these blasted social sites, it feels like I've done something tangible to bring a smile to somebody's face. Because I did! That's not an intangible, it's good for my mental health!


Similar here. I have no interest in contemporary startup culture, just visit for the occasional interesting technical nugget and discussion.


The virtue of reusing an old system is somewhat eroded by the fact that its noise and power consumption exceed that of a more powerful Pi 3 B+, which can be had for $50-60 with case and power supply (circa 2020).

I see little advantage in keeping the old hardware around anymore. I think I still have some old ISA cables downstairs in a box - high time to acknowledge to myself that I will NEVER use those again.


The Pi is also notoriously Broadcom-proprietary[1], whereas an x86 PC has been a de-facto standard for decades; everything is well-known or has been reverse-engineered already, especially with a 486-era system.

It's somewhat similar to the reason people (like me) restore and drive old cars, also despite the "noise and power consumption" (and some happen to like the former ;-) --- they're relatively simple and well-understood.

Likewise, there is also a very active retrocomputing community, although a lot of it goes back much older than 486 or even PC --- the C64, ZX, and the like continue to have plenty of new software written for them.

[1] and if you ask for a datasheet or any more details about it on their "excellent community" (to quote some), you basically get told politely to f'off: https://www.raspberrypi.org/forums/viewtopic.php?t=163420


Hmm. This https://s-matyukevich.github.io/raspberry-pi-os/ made it seem like it's about as open as an x86 PC. The only thing I see that's proprietary is the very initial bootloader that apparently runs on the GPU. But then x86 motherboards come with proprietary BIOSes as well.


We are talking about hardware specifications.


Broadcom is horrible with datasheets. If you're not apple or intel, an f off should be expected in any request for a datasheet from them.


At work, we briefly considered deploying a fleet of raspberry pis as cheep ARM servers. We ordered an initial batch for evaluation, but then quickly realized just how little technical information Broadcom and the Raspberry Pi Foundation are willing to make available to their users. They were tight-lipped even with the bare minimums. We ended up abandoning the idea soon after.

Unless these companies manage to break away from their bad habits, I can't see ARM servers gaining any sort of market share outside of big companies.


Are you able to expand a bit on what info you were looking for? I had been considering using the Compute Module for a more "commercial" application of the Pi, and we use them periodically almost like an IoT event hub at work, so kind of curious what your roadblocks were for adoption. I probably won't have any solutions, just curious what you were dealing with.


I've heard good things about the sopine clusterboard[1] + modules[2].

1. https://www.pine64.org/clusterboard/

2. https://www.pine64.org/sopine/


The analogy between retrocomputing and classic car enthusiasts really captures the spirit of what’s going on well.


I guess it depends on if noise and power are your primary considerations.

For some, they'd rather not see a useful machine take up space in a landfill, leech toxins into the environment, and simultaneously drive unneeded demand for the production of yet another computer.

I guess one would have to do the math and figure out what the environmental impact of a new Pi 3 B+ is.

Or they could figure out if the increased electrical cost of running an old machine over x number of years is greater than the expense of purchasing and powering a new Pi 3 B+. Where I live, I could run a 486 for a heck of a long time on $60, especially when you factor in that the Pi still needs to be powered, too.


I fully empathize with this - I hate throwing out/recycling electronics. The power side it truly does depend on your local rates of course. If you consider a 24/7 draw of about 35 watts to power an out-of-box 486 DX2 (headless) vs like 3 watts for an RPI, you can do the math with some variance and figure out just how long the $60 will last you. But a 10-fold reduction in power consumption is pretty remarkable. When you consider that an RPI might replace multiple 486's, even more so.

Alternative uses for a 486 case - make a planter box, bird house or a bee hive. https://www.instructables.com/id/Computer-case-beehive/

Alternative uses for 486 mobo - incorporate it into furniture design, cut it up to create a wind chime, create stuff like that to avoid the landfill. :)


There's also the environmental impact of the energy use. That 486 is pumping out 10x the greenhouse gasses.


Not really. 10x per MIPS, otherwise 486 CPU consumes about same number of watts. The whole PC though...


I'm not sure how much use a 486 is without the rest of the PC?


Dad told me he got a new computer. I asked how long he had the old one.

Apparently it was my old team fortress computer. So like 15 years.


My parents are still using the first computer I ever built, which is easily 10 years old! Power consumption on that machine is excessive, and I've been meaning to replace it, but the cost per year in excess electricity hasn't made it worth it to upgrade the machine.


How about a reduction in your personal help desk call queue? Or support incidents/month metric? I only partially kid - I switched the folks over to iPads and _everyone_ is happier.


I switched my mom to an iPad.

Fixing the computer keeps my dad busy. Seriously he has nothing better to do.


Alternative use for a 486 case - reused as a computer case for a cluster of fresh single-board computers.


486 is pre-RoHS, so there’s probably lead in the solder. I wouldn’t want it hanging around kids.


Leaded solder doesn't spontaneously vaporize and become airborne. You have to touch the solder enough to rub some off onto your skin, then put that part of your skin into your mouth long enough to get the absolutely microscopic amount of lead into your body.

Solder went lead-free (and electronics in general went ROHS) so when it's buried in landfills it doesn't seep lead or other hazardous materials into groundwater.

There is zero chance of lead solder getting hot enough to skip the liquid phase of matter and go straight to a gas in a 486.


For some resources such as copper, it might actually be environmentally net positive to recycle to old copper and buy new.


And about $5 in gold in a 486 chip:

https://www.ozcopper.com/computer-cpu-gold-yields/


Citation needed. I know a ton of folks who bought those things by the cubic yard for the metals, and only managed to make an environmental mess with little dollar return.


There's much less volume of copper in a RPi than a 486, so if you recycle your 386 to get a Rpi, the net copper reserve increases.


You should develop the creativity to do something completely useless with everything.

https://inhabitat.com/wp-content/blogs.dir/1/files/2018/12/c...


If you enjoy circuit board art I saw this artist year after year in the Armadillo Christmas Bazaar. https://www.armadillobazaar.com/austin-circuit-board-2015-2/


Artist John Zaklikowski had a great exhibit called Hard Drive Universe in 2012 in SF

https://www.flickr.com/photos/schill/albums/7215762935517133...


AFAIK You can't hook up old ISA or PCI cards to a raspberry pi, and if you can, the x86 drivers and software won't work.


For the record... sure you can!! :D

An ISA/IDE cable is just copper ribbon cable using .1" spacing, which is what the GPIO header pin spacing is on a Pi. There is a pin blocked on the standard ide female connector but that pin is just one of many ground connectors on the Pi. Clip it off or dremel/drill out the hole as needed. Jeez, now I just convinced myself that I MIGHT use the cable some day. Thanks a lot! >:/ Was trying to throw it away.

There's a PCI bridge for the raspberry pi 4, if for whatever reason one would want to do such a thing. Drivers might be a problem if the card's linux support sucks but that's kind of a separate issue. https://www.tomshardware.com/news/raspberry-pi-4-pci-express...

EDIT: Oh, maybe your point was that the reason to keep the 486 around is to use old ISA/PCI cards - sorry, I mentioned ISA cables in OC so thought you were replying to that. Yeah, point taken, but I'm skeptical that there are any but the most narrow cases where the function of an old ISA/PCI card can't be replicated/emulated with better performance on a Pi. I mean, trying to think of the edge cases - an old SCSI RAID controller? Maybe some proprietary industrial controller stuff? but yeah. My comment about junking the old stuff was just a criticism of the inclination I think all of us nerds have to get that old box back into production use at home. I think there are very few - if any - cases where that makes sense anymore.


What is this "ISA cable" thing you keep talking about? You mean an IDE cable? ISA is a bus, not a cable.

I have all sorts of ISA cards that have no alternative (other than for huge expense) or software. Quite a few IEEE-488, many other weird interfaces, DSP dev boards, one of a kind/prototype boards, other stuff. I have boxes of the stuff, and know hundreds of people who have the same needs. We have mailing lists.

No, a PI can't do that. No it can't emulate that. No it's not as generally useful as you think unless all you care about is stuff written in the last 5 years.


Yeah I said IDE in the comment you're replying to. IDE or ATA is a subset of the Industry Standard Architecture (ISA), but yeah you're right - I should have said IDE cable in OC. Forgive me, it's been a while.

I don't doubt there are specialized boards out there that have no modern functional equivalent (esp. industrial apps), but you CAN connect to stuff using GPIB (IEEE 488) with a Pi, so that's not one of them.

If legacy OS/app support is your issue I'm not sure it's going to give you much value booting your 486 with a linux distro today (what the post was about, and the context in which my comment was made about the Pi).

If you're locked into the 486-generation hardware interfaces and the Windows/DOS software platform, and CAN'T leverage hardware interface bridges and software emulators on modern systems with horsepower to spare, you're talking about the edge cases of the edge cases.

My point was never directed at the edge cases of the edge cases. I said "I see little advantage in keeping the old hardware around". The rare edge cases are represented by that "little advantage" I CAN see. But it's little, man. Most situations where a 486 would offer any utility today, particularly on Linux but not only that, a $50 3-watt Pi can do the job better, cheaper and cleaner.

Those things are the embodiment of "generally useful" - A low power, small form-factor, relatively high-power compute platform with an easy to use GPIO header and libraries for many languages, able to leverage most Debian packages (including DOS emulators). I admit it doesn't meet 100% of planetary need, but it's right up there with anti-lock brakes, microwavable meals, and stretchy pants in my book. Convince me otherwise.


I find the most useful application of old hardware is to occasionally re-ground your perspective on code performance and resource utilization. Writing software for old hardware is an effective way to force yourself to write performant code, even if only as a rare weekend exercise :)


You can get all that from using an AT-tiny :)


It’s more like art than an engineering accomplishment


Another good cheap option if the Pi doesn't suit you is an up-cycled thin client - some HP T620 configs (quad AMD Jaguar, 4GB RAM, 16GB flash) are <=$55 on eBay US w/PSU.

(There's also the T620 Pro, but those are going for a bit more these days since they make good home routers when you add a quad gig-e card...)


You can also always just find an old desktop box and install a lightweight distro on it -- my grandpa got a new computer a year or so ago so I took his ~10 year old HP box, wiped it, and installed alpine. Now I have it just plugged into my router and I have a few cron jobs and docker services that I run on it.


That too. Then again I'm old enough that seven year old computers should be ancient, but with a good video card and enough RAM/SSD they still do almost any job.


I happened to have received a small pile of that exact piece of kit a while back. It is easily capable of running a full desktop OS and playing older games. Absolutely ridiculous specs for a thin client.


But then you wouldn't show up in HN's frontpage doing something completely meaningless.


Sometimes fun is the only meaning you need!

I think this is definitely in keeping with the hacker spirit and belongs on the front page for that reason alone.


For the record, I fully support this attitude to life. Doing it for its own sake is totally a virtuous pursuit.


If you want to boot Debian on there you can actually build a complete Debian system from the package archives using either Debootstrap or Multistrap. Debootstrap is useful for building a Debian system inside of another Debian system, while Multistrap is useful for building a root filesystem to copy to another computer. If you can boot an initramfs then you can boot the root filesystem using pivot-root.

The Linux kernel can execute a shell script as PID1 from the initramfs, meaning that you can just execute the minimal commands needed to mount the main root filesystem and then use pivot-root to change from the linuxrc script in your initramfs to the main init process supplied in your main root filesystem.

You might have to get really creative with compression and static linking as the linker/loader clocks in at a few-hundred kilobytes, plus the gcc support library and the glibc for another few megabytes. Alternatively you could find a way to make the system calls directly and bypass the libc. Busybox will also fit on that disk and it ships with a mount command too, so you could get up and running with that pretty easily.



also, this video features a 486 cpu because linux dropped 386 support a while ago.

https://www.zdnet.com/article/good-bye-386-linux-to-drop-sup...


Anyone know what in particular the 486SX had that the 386 didn’t to make keeping only the former alive practical? Unfortunately the kernel mailing list link in the zdnet article appears to be rotted away.


I believe 386 did not have certain "atomic" instructions like CMPXCHG or XADD. So in order to support 386, the kernel had to have special versions of all locking primitives just for 386.


Here's a working link: http://lkml.iu.edu/hypermail/linux/kernel/1212.1/01152.html

From that link:

  x86, 386 removal: Remove CONFIG_CMPXCHG
  x86, 386 removal: Remove CONFIG_XADD
  x86, 386 removal: Remove CONFIG_BSWAP
  x86, 386 removal: Remove CONFIG_INVLPG
  x86, 386 removal: Remove CONFIG_X86_WP_WORKS_OK
  x86, 386 removal: Remove CONFIG_X86_POPAD_OK


Basic multitasking (CMPXCHG) and cache management instructions.


I was always under the impression that Linux 386 simply meant 32 bit support. So, no 386 support would mean no 32 bit support rather than the 386 specifically.


I have seen i386 being used in a couple of contexts. For example, Debian uses it to refer to the 32-bit port[1]. It also seemed to be used when various Linux distributions built Pentium optimized packages when that became a thing. In that case 386 would be used for earlier 32-bit processors and 686 would be used for later 32-bit processors. So the nomenclature is not always clear.

[1] https://www.debian.org/releases/stable/i386/


No, that's x86.

They dropped 386 support, but a 486 still works.


Would it be feasible to just build a Debian image for the i486? Few packages should depend on something newer.


Since the modern Linux kernel doesn't make any promises of 486 support there's very likely plenty of places inline assembly uses instructions unavailable on a 486.

So even if you compiled it with strict -march i486 you'd end up with unsupported instructions. Modern GCC also doesn't like emitting strict i386 or i486 code anymore so you'd be likely to end up with unsupported instructions even without any inline assembly.


I don't know offhand what instructions were introduced in Pentium or later.

Doing some googling... 486 had cmpxchg, that's good.

Seems it didn't have rdtsc. It's not out of the question, I might say even pretty common, for user mode code to use that one via inline asm to implement a timer.

Obviously no SIMD instructions. If they say they're supporting 686 or better they might have some compiler flags that depend on mmx or similar? SSE came late to P6.


The author twice mentioned looking for a suitably tiny initrd / initramfs.

FYI: You don't need an initrd / initramfs. Just link the drivers required for mounting the rootfs from IDE statically into the kernel image and you're done.

Initrd used to be a kludge to work around bootloaders not supporting multiboot. And then we normalized that deviation in the form of initramfs.


back in 2002, I built a floppy that had a linux kernel (2.4.18-rc4) with multiple ethernet drivers (back then tulip was taking over the 100mbps ethernet world, so pretty sure that was included, as well as the 3c509 driver), X (vesa driver), busybox (or proto/fork busybox), rdesktop to build a a thin client on a floppy. I even had a version that was able to squeeze in vncviewer by using the over 1.44MB modes of writing floppy disks.

the project's point was to showcase stripping shared libraries of unused symbols to get the per binary density of statically linking across one's entire set of binaries. (useful for saving space on embedded systems) i wouldnt claim that it was unique (I believe Debian did something similar), but was a fun project.


Modern days Linux kernel requires a bootloader, as seen in the video. In the old days, you could dd the kernel to the floppy disk and use rdev to point to the root partition to start after loading the kernel.


A couple of days ago, I went looking for when this code was removed. It was removed in 2003: https://lwn.net/Articles/21512/


Nice link!

The code is so tiny they could have kept it... But, oh well, progress.

I like the message:

  -  .ascii "Loading"
  +bugger_off_msg:
  + .ascii "Direct booting from floppy is no longer supported.\r\n"
  + .ascii "Please use a boot loader program instead.\r\n"
  + .ascii "\n"
  + .ascii "Remove disk and press any key to reboot . . .\r\n"
  + .byte 0


> The code is so tiny they could have kept it...

Not for long; the EFI headers later used the same space, which even required severely shortening that "no longer supported" message (the first two lines of the message were replaced by just "Use a boot loader.\r\n")


There’s actually an EFI boot stub for the kernel so you don’t technically need a bootloader beyond the EFI on those systems.


What about EFI?


there was no EFI. it was BIOS as far as your eyes could see.


Yes but in modern day Linux, EFI can load the kernel without an external bootloader. So it is not the case that modern day Linux requires a bootloader.


There was a Nethack floopy for 3.4.3 (still played a lot by tons of people) which was booted up from a tiny Linux floppy. Amazing. It may work under a 486. Search for "nehabodi".

http://nehabodi.sourceforge.net/


Wish I had this flexibility with other kinds of hardware, like a phone. Having to throw out a much newer and completely functional hardware 2 years after being released, because there is almost nothing you can do with it is not good.

(And for those who want to instruct me about PC being a defined architecture, where there no such thing with smartphones, etc, etc, etc, I know all this, but the point is still valid.)


Have you looked at postmarketos? https://postmarketos.org

Lots of fun to be had, if only to play with a battery-backed raspberrypi-like headless server in the worst, less-supported cases.


back when i was 13, didn't have a computer i could mess with and internet at home, i remember unsuccessfully trying to boot coyote linux on an internet café computer from a floppy disk.

"floppydistro"s where a thing back in the day. the challenge was to fit a whole linux system along with some utilities in one or two floppy disks.

usually the first floppy disk was for core os + base utilities and the second floppy disk was for additional software.

oh the memories.


QNX used to distribute a floppy containing the entire OS and a web browser, for x86. http://toastytech.com/guis/qnxdemo.html


Posts like this showcase how malleable Linux really is without getting overly complicated to follow.

Really a nice quick read.


But not nearly as malleable as it could be. Hopefully, true 80386 support can be reintroduced to the kernel in a way that keeps it properly self-contained and easy to support. There are also a few kernel-tinification approaches floating around that could make the kernel smaller and easy to fit in a floppy-using scenario.


> Hopefully, true 80386 support can be reintroduced to the kernel in a way that keeps it properly self-contained and easy to support.

The merge which removed the 80386 support (https://git.kernel.org/torvalds/c/743aa456c1834f76982af44e8b...) stated as the reason "[...] complexity has plagued us with extra work whenever we wanted to change SMP primitives, for years."

That is, it was not easy to keep it self-contained. Every new SMP primitive has to be implemented and maintained for all the architectures supported by the kernel, and the original 80386 ISA was too limited. Not to mention that the 80386 didn't honor the write-protect bit in the page tables while in the kernel (https://git.kernel.org/torvalds/c/a5c2a893dbd4956a72fb261e87...), with consequences all over the kernel (https://git.kernel.org/torvalds/c/96d4f267e40f9509e8a66e2b39...).


Were 80386 SMP systems really all that common to begin with? Perhaps 80386 support should just focus on the uniprocessor case, at least as a start.


> Hopefully, true 80386 support can be reintroduced

To the best of my knowledge, nobody is making new 386-only chips (that have no 486 or 586 support). As long as that remains the case, hopefully that support stays removed.

> There are also a few kernel-tinification approaches floating around that could make the kernel smaller and easy to fit in a floppy-using scenario.

We could always use more people looking at the size regressions, and working on making more kernel components optional. If anyone is interested in working on this, send me email and I'd be happy to get you connected with it.


No, it will not be reintroduced. There is no use for it. That belongs in a fork.


There are perfectly good older versions of Linux that will support i386 forever. (Not to mention FreeDOS.)


There's Alan Cox's Fuzix which runs on 68000, Z80, and 8080 CPUs, among others.

http://www.fuzix.org


But why? What "real" hardware would actually have any use for it today? I understand that it might be fun, but I don't see the practical use case for it.


The 737 Max? It uses an 80286, so it’s even older.

I'm also curious what use it would have. I imagine in cases where you're tied to such old hardware, you would also be tied to old software.


> The 737 Max? It uses an 80286, so it’s even older.

If we are talking about the computer that runs MCAS, my understanding is that it isn't a 286, it is a Rockwell Collins FCC-730 (aka EDFCS-730). The FCC-730 is a proprietary custom CPU architecture, there is limited public info available on it, although I did read somewhere that it uses a stack machine architecture (like Burroughs mainframes, classic HP 3000, Tandem T-16, various "Forth on a chip" processors, etc)


To be pedantic, FCC-730 is the name of the Flight Control Computer itself. Its CPU may or may not be a 286. It has however been speculated that it is, as discussed here: https://news.ycombinator.com/item?id=20380523.


I agree, the FCC-730/EDFCS-730 is not the name of the CPU, it is the name of the computer.

According to the diagrams in US patent 7,852,235 [1], the FCC-730 CPU is an FCP-2002. I would caution against the possibly mistaken inference that this patent describes the actual architecture of the 737-MAX or any other actual flight computer, as opposed to simply a design that Rockwell-Collins may have developed and not (yet) actually deployed. In particular, while the 737-MAX does have an FCC-730, I don't think it has an IPS-5000.

A NASA Langley presentation [2] mentions formal verification of the FCP-2002. I think that if it is formally verified, it is probably not a 286. A 286 would be a poor choice for a formally verified microprocessor for embedded applications since it has a huge number of extraneous features that would complicate the verification process while yielding no benefit for the embedded application. The presentation also mentions a new "FCS 5000" product line, and its formal verification, and I wonder if that has any connection with the IPS-5000 CPU card mentioned in the patent diagram? Probably, the patent describes a new flight control computer design, meant as a successor to the design used in the 737-MAX (and other Boeing aircraft such as the 777).

The Boeing 777 autopilot uses FCP 2002 CPUs as well [3]

I swear I read somewhere that the FCP 2002 had a stack machine architecture, but now I can't find where I read that. (Did I imagine reading it?)

I'm not sure where this "286" stuff comes from. I think maybe, FCP-2002 is a 16-bit CPU, and then people say a 16-bit CPU is "like a 286", and then maybe that gets corrupted in the retelling, and "like a 286" turns into "a 286"?

[1] https://patents.google.com/patent/US7852235B1

[2] https://shemesh.larc.nasa.gov/NFM2018/talks/Butler.pdf

[3] https://web.archive.org/web/20100822151603/http://www.rockwe...


> A NASA Langley presentation [2] mentions formal verification of the FCP-2002. I think that if it is formally verified, it is probably not a 286. A 286 would be a poor choice for a formally verified microprocessor for embedded applications since it has a huge number of extraneous features that would complicate the verification process while yielding no benefit for the embedded application.

That's an interesting observation. The presentation specifically mentions verification of the microcode, which I think would be feasible to do for a 286?

> I'm not sure where this "286" stuff comes from. I think maybe, FCP-2002 is a 16-bit CPU, and then people say a 16-bit CPU is "like a 286", and then maybe that gets corrupted in the retelling, and "like a 286" turns into "a 286"?

Yeah, I'm not sure where the rumour came from either. But I do think it's plausible. According to "Computers take flight" [1], the 777 uses (among others) a 486 for its control system:

> Boeing finally built an airliner with fly-by-wire controls, the 777. The control system is more straightforward than that used by Airbus. It contains three “lanes” of three different computers each: an AMD 29050, a Motorola 68043, and an Intel 80486.

The source given is "Primary flight computers for the Boeing 777" [2], which doesn't seem publicly available.

Given the closeness in time for the 777 and the 737 NG, it seems somewhat unlikely (to me) that the 777 would go for the most popular options, while the 737 would use a bespoke CPU design. The A320 used 80186 and 68K processors [3], so the 737 would really be the odd one out in that case.

1: https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/200501...

2: https://www.sciencedirect.com/science/article/abs/pii/S01419...

3: https://books.google.se/books?id=KDX0BwAAQBAJ&pg=PA214&lpg=P...


Well, one point to note – according to your [2], the primary flight computers on the 777 are by GEC Marconi. The primary flight computers on the 737 are by Rockwell Collins. So, the CPU choices by GEC Marconi don't necessarily have any relevance to the CPU choices of Rockwell Collins.

Rockwell Collins didn't build the primary flight computer of the 777, but they did build the 777 autopilot (which is a separate computer system). The 777 autopilot and the 737 flight computer appear to have some shared technical heritage, including both using the FCP-2002 CPU (whatever it actually is).

(Why Boeing chooses different vendors for different aircraft models, I don't know, but I presume it is part of a corporate strategy of ensuring some diversity in vendors to avoid "putting all its eggs in one basket".)


> I imagine in cases where you're tied to such old hardware, you would also be tied to old software

Exactly. If you have to support some old esoteric hardware, you probably wouldn't be able to run a recent kernel anyways, since all your software would probably also be tied/constrained to whaterver it was developed and tested for.


Yeah slightly tangential but I wonder if some of the alternative OSes (looking at you Haiku) could just use Linux as the kernel for portability.


That would be great if people could admit that the kernel isn't the operating system.


Of course the kernel isn't the OS, but it's a big chunk of it, and defines building blocks (and constraints) that the upper layers use.


went to youtube to find a better video of the sound of the floppy drive, as the one in the posted video is very quiet. instead, came across this: https://www.youtube.com/watch?v=c52JQHVVqFM


Have you ever heard of the floppotron? https://www.youtube.com/c/PawełZadrożniak/featured


At this point "music on machines" is a whole tiny world on YouTube. https://www.youtube.com/channel/UCDwMh0pu1iSXeKx7qmqjIQA/pla...




I wonder how well it works. If you take an x86_64 system and make a memory control group with only 32MB of memory (and kmem tracking is enabled, which is true by default) the container will OOM right away. I've been operating under the belief that Linux now requires 64MB at a minimum, but perhaps a 32-bit uniprocessor build can get by with less.


> the container will OOM right away

that doesn't really makes sense in linux-parlance. you should try and see which is the process that is actually triggering the OOM.

if you're able to do that then you can try and swap that with another binary.

you could try and build an hello world that does while(1) sleep(30); build that with static linking and boot the container with that -- it will probably work.

also, i should look for that page, but i remember reading a page about trimming away anything possible from an hello world binary and ending up with something as small as like ~60 bytes.


here it is!

https://www.muppetlabs.com/~breadbox/software/tiny/teensy.ht...

i was off by a bit. the binary is 45 bytes and prints the number "42" (plus a newline).


It does not print anything. It returns with exit code 42.


I see that you haven't tried it.

Note: read for comprehension.

A container may OOM from kernel memory alone.


What process or processes were you running in the container?

Edit: nvm, saw you answered it in another thread: `find / > /dev/null`. Interesting!


Yes, find and its parent, the shell, but that's not why it OOMs. It OOMs because Linux uses a lot of memory for inodes and dirents and whatever it puts in slabs and then when memory pressure occurs -- when Linux must allocate in the kernel but cannot, due to limits -- it just loses its mind and instead of reclaiming it kills.


What are you putting in your container? A trivial container with non-bloated userspace should not take nearly that much memory.


Thanks for your contribution. The reason I value HN so much is the willingness of inexperienced people to inform me of what Linux "should" do.

  # cd /sys/fs/cgroup/memory/
  # mkdir lol-hackernewses
  # cd lol-hackernewses
  # echo 32000000 > memory.limit_in_bytes 
  # echo $$ > tasks
  # find / > /dev/null
  Killed
  Memory cgroup stats for /lol-hackernewses:
               anon 135168
               file 11567104
               kernel_stack 0
               slab 19771392
               sock 0
               shmem 0
               file_mapped 0
               file_dirty 0
               file_writeback 0
               anon_thp 0
               inactive_anon 0
               active_anon 94208
               inactive_file 5517312
               active_file 5881856
               unevictable 0
               slab_reclaimable 19075072
               slab_unreclaimable 696320
               pgfault 14817
               pgmajfault 2376
               workingset_refault 25773
               workingset_activate 3465
               workingset_nodereclaim 0
               pgrefill 969886
               pgscan 971861
               pgsteal 50508
               pgactivate 913407
               pgdeactivate 969886
               pglazyfree 0
               pglazyfreed 0
               thp_fault_alloc 0
               thp_collapse_alloc 0


"should"... Unfortunately, almost everything is bloated these days. My first Linux box, a 386SX/20, had only 4 megabytes of memory. I ran SLS Linux which installed off of roughly 20 floppies. I could compile C programs, and barely run X!


Tiny-X and fvwm with rxvt would run far better than any other VM + an XTerm.


You're probably being killed (in part) by the default stack sizes, which is much larger on x86_64.


That doesn't seem likely, since stacks are and have always been demand-paged on Linux. If you don't use more than 4K, your stacks will be 4K for ever.


I had no idea the Linux kernel still supported the 486. I thought you had to have a Pentium class or better.


Kernel support for 386 was dropped recently, but 486 and above are fine. I think many distros have probably dropped 486 support, though; someone upthread mentions that Debian is 686 and above only now.


That’s probably where I got the idea. Debian is usually one of the last distros to make a move like that too since they’re conservative.


Slackware may still work on 486.


Oh the floppy drive sound. I kind of miss it. Kind of, what I don't miss (besides capacity) is how those floppies were fragile, and this yyyy - yyyy ---- yyyy - yyyy sound when it was trying to re-read the sector, which was most of the times sound of defeat.


> Normally I would bypass a floppy install entirely and just boot an older computer via PXE and then install over the network. I thought I could put iPXE on a floppy and stick in an ISA NIC but iPXE just hangs without any error messages right after it's loaded from floppy.

How about the plop boot manager? It has helped me a lot back in the days. Or any other pxe implementation.

Or veven installing everything on that drive from another computer, which is likely the easiest way.

I recently came across IDE/SD card adapters. Perfect for that kind of project, as it is much easier, cheaper and energy efficient to find, swap and use SD cards nowadays. My use-case is an Xbox console for nxdk dev work, but I haven't tried yet.


Now that it boots, time to bring up a Kubernetes and deploy a Spark cluster


A long time ago I remember installing gentoo on a 486 33Mhz (Tandy I think). I initially compiled everything on a much faster Athlon XP. I do remember compiling an updated kernel on the 486 and that it took 3 days, but it did finish :D

I remember the hard drive was too big to boot from directly, there was some bootloader that could run from the floppy disk then finish booting from the hard drive.

It also had this horrible sound card/cd-rom combo controller that I never was able to make work in linux


Haha I've done that also.. Except my 486 was a GEODE like a low-power-sbc of it's day and I compiled Gentoo on that !! Tooks days !!! :) Good Times.


Almost 20 years ago i have internet, but didn't buy router. And found floppyfw: https://www.zelow.no/floppyfw/

Absolutely brilliant distribution that works perfect. And fit on one floppy - kernel and userspace.


See also: tomsrtbt (http://www.toms.net/rb/) and trinux (http://trinux.sourceforge.net/legacy/) , among others.


Also in the late 90s (maybe super early 2000s?) I used "LRP" for my router, booting from only one floppy: https://en.wikipedia.org/wiki/Linux_Router_Project


most up to date kernel, but Aboriginal Linux was end-of-lined in 2017

http://landley.net/aboriginal/


Clicked on the video to see AMERICAN MEGATRENDS INC. and wasn’t disappointed, ya freakin patriot!


Will sing-a-long contest return this year? That's a neat idea.


What's a floppy? /s




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: