When [Mike] fired up his PCjr webserver back in March, he probably wasn’t expecting it to go viral. 2640 hours later, here we are! Not only has his machine run continuously for over 110 days, it also is surviving a global hug of death. All of this is thanks to some very special software.
We see lots of old machines here on Hackaday. We also see lots of minimal web servers. But we don’t see many that can run for thousands of hours, offering up to 8 simultaneous connections. Curious if jr is still up? Check brutmanlabs.org. The whole website is hosted on the 40-year-old machine. If you want to be a bit more kind, here’s a direct link to the text-only status page. While many of those hours were idle, currently lots of folks are hitting that little V20 CPU, so please give it a few seconds to respond.
The PCjr has a few upgrades — the aforementioned V20 CPU upgrade, a jrIDE sidecar, and a memory upgrade to 736 kB to name a few. Ethernet connectivity is via a Xircom parallel port adapter – which is circa 1993. The operating system is IBM PC DOS 5.02. One thing to note is that all these upgrades were possible back in the mid-1980’s when the PCjr was still current. [Mike] could run the system with an MFM hard drive, an ISA ethernet card (via an adapter), and use the original CRT monitor. Older DOS versions would work too — though partition sizes would be limited. The “modern” conveniences are just to keep from wearing out vintage hardware which is quickly becoming rare.
The real glue that holds this all together is [Mike’s] own software: mTCP. mTCP is a full set of tools for running internet applications on systems running MS-DOS or a compatible OS. We’ve seen quite a few mTCP projects over the years. [Mike] has worked tirelessly testing the software, ensuring that it is stable and reliable.
Software is never perfect though – one thing [Mike] didn’t implement is a log roller. Since he has logging turned on, the PCjr was slowly filling up its hard drive. Once the drive was full, mTCP would perform an orderly shutdown — but the uptime will be reset. [Mike] was able to go in and switch off logging with DOS’s DEBUG command. A live patch is not the way one would normally update software – but the fact that he was able to do it shows how deep [Mike’s] knowledge of the software goes.
[Mike] has even provided a live stream recording of the little PCjr handling requests from all over the globe.
736 KB ought to be enough for anybody.
*laughing cry emoji*
For GDPR compliance, if my ip is displayed in the video, how can i ask for its removal ?
It’s not yours, it’s on loan to you from IANA by way of a regional registry and your ISP.
And .. we don’t know it’s yours ;)
And2 An IP alone is useless, there are lots of these.
Sure! Just send copies of all your identification documents to confirm that you are who you say you are, and a copy of your most recent ISP bill plus any bank or credit card numbers which have been used to pay your ISP in the last 6 months. Oh.. here’s a vial and a swab for the DNA test. I think that ought to cover it! Once these items have been verified someone will be contacting you to implement your request within 90 days or half your money back.
Machine is not as old, but my 12 year old Celeron laptop (only used for internet browsing) running linux stayed up for 602 days (14448 hours). Didn’t want to reboot it, but had to for a kernel change that has been waiting for over a year. Have a printscreen to prove…
There was that kernel hot patching thing a few years ago… They would package up hot fixes that could be applied to a running kernel. There have also been some lightweight VM / container things that could sleep a userland and bring it back up on a new ring 0 kernel.
…not that kind of “change”. I was faffing around in the kernel scheduler.
And now a year later, I cannot for the life of me remember why…only that I was waiting to test it. In over a month, I have not run into any obvious problems, so at least I didn’t break anything obvious. :-)
104.1666666666667 days of uptime? 🤷♂️
I just checked the house server – it’s been up for over 2000 days… but I agree it’s only on the intranet, not the internet.. It’s on a ups (with a big battery) and under the house…
Remember, this is an early home computer designed to compete with the C64 and the Apple II. It’s not server quality hardware and it is way outside of its duty cycle. It’s also exposed to whatever garbage comes in on port 80 (no filtering) and it has survived a multi-day “hug of death”, all while running a primitive operating system and homebrew software.
On a modern machine I’d say you are overdue for patches. On this machine, I’d say it is way overdue for a hardware or software failure. And I’ve actually found two software failures now, but I was able to work around both of them by hand patching memory as it kept running. Long term testing does have its advantages, which is why I’m doing this.
But can it run Doom, Quake, or Crysis?
It can’t even run Wolf3D, probably
No, but it was reasonably good at the Microsoft Flight Simulator, ColorPaint (on a cartridge), and Castle Wolfenstein. (The original one …)
Under the house? Well that’s a step up from hidden behind a wall.
https://www.theregister.com/2001/04/12/missing_novell_server_discovered_after/
Under the house is good as
1) it’s cool there (and it gets hot here in summer (aus))
2) Its secure – most people breaking into the house won’t find it, particularly as the network cables are running in the brick walls (put a channel in before I tiled..) and would be difficult to trace.
3) it’s out of the way so doesn’t get accidentally unplugged etc.
I put it on a commercial UPS hacked with a much bigger battery..
It’s running ubutu 12.04 lts, that has been trimmed down with all disk access removed – all logs etc to ram – the root drive is a (now old) ssd which is never written to, the hard disks are only spun up when a request for a file happens (either read or write).. Will only take requests from the local subnet…
Hmm… what is so special about it? That this is PCjr put directly to the internet (directly or filtered by some fw)? That it hosts web server? Or the uptime, which is rather nothing special (100 days, mabye someone thought – 1000 days and it is a mistake)? I think that there are more legacy hardware running web servers with definitely more uptime eg. c64 webserver running contiki os, some amiga 1200 running NetBSD buildbox etc. etc.
a homemade daemon on a homemade TCP stack on ancient equipment running extended DOS, that is constantly being hit by the world? I’m impressed the uptime is > 1. I personally would be hard pressed to get the OS and hardware running right for a 100 day run.
I think you missed the point of the article, as this was all covered …
39 year old low spec hardware. Well tested, personally written software. And it survived a hug of death while serving a meaningful number of pages, not just dropping packets in the corner. Oh, and the firewall passed everything on port 80 through to the machine so it was subject to all of the script kiddie attacks too.
If you’ve ever tried to run old hardware for a long time you’d understand how hard it is to put all of the pieces together to make it work.
Very hard to use an attack on “X” on a web server when the server doesn’t even have “X”, or “Y”, or “G”. ;)
Precisely. ;-0
I can hear when a script kiddie is poking for vulnerabilities because it’s a rapid fire series of 404s. There is no PHP on this box.
Very nice work, congratulations.