Hacker News new | past | comments | ask | show | jobs | submit login
Installing Linux into a 286 laptop from the year 1989 (befinitiv.wordpress.com)
137 points by sam345 on July 1, 2021 | hide | past | favorite | 93 comments



Back in 2007 I had a "laptop crisis" in which I went from having a laptop on me at all times, to not having a laptop at all, for about a month. My home situation was pretty good, but my school situation... not so much.

I ended up doing enough of a restore of my dad's old (1989, I think?) 386 laptop and parallel Ethernet adapter. The details were something like:

1. The rechargeable battery was dead, but it was a 4.8-volt NiCad. It ran beautifully off three alkaline D batteries, strapped to the back. I just had to disconnect the batteries out whenever I had it plugged into the wall, to prevent them from charging.

2. The hard drive wouldn't spin up, so I ended up making a DOS boot disk with an SSH client (SSHDOS) and ODI drivers for the NIC, as well as the bog standard MS-DOS editor.

3. When I had Internet connectivity (read: wall proximity to Ethernet), I used SSHDOS to connect to a remote IRIX host, and used Lynx from there. Lynx was painfully slow on the 386, and SSL was right out. Not that much used it in 2007.

4. I used the MS-DOS editor as my daily-driver text editor. My workflows then, as now, are mostly text-based, so this was a pretty easy change.

Of course, I couldn't help but add a sticker to the lid: "up to 10x faster than your malware".


In 2007, I'm amazed that someone still kept an IRIX box up somewhere. I remember my uni having one around 2001, and it was regarded as positively ancient.


I've got a SGI Indigo in my mother's house. Before the pandemic still booted. Of course I forgot the root password, but the 4GB scsi disk is still alive. Of course the clock is somewhere in 199[2-5] because my Irix version wont' let me log in after January 1, 2000.


You can get the latest release of IRIX online if you’re feeling up to the task and have a CD burner.

https://archive.org/details/IRIX6530


irix 6.5 was exceptional. excellent real time performance. compilers relatively solid, and great graphics on the high end.

had to have a license for the C compiler.

peak proprietary unix.


And you can also run BZFlag on it right?


It was maintained by the fine folks at https://theworld.com/ up until a few years ago, though I can't speak as to why.


This title is sort of clickbait. I was expecting to see something about ELKS[0].

[0] https://github.com/jbruchon/elks


Yeah, I was immediately suspicious because Linux 1.0 was 386+ only due to memory management needs. but I did get a faint twinge of nostalgia for the orange-tinted plasma display on a portable that had the size, weight, and aesthetics of several bricks.


Wow. I had no idea ELKS was still being developed. I think it may even have been last century when I last saw it boot.

I wonder if Al knows there are still people working on it.


Wouldn't fuzix be a better alternative on a 286? not that expect using a 286. if i'm going to a more simple processor i would do it for the low power consumption it'd could bring https://www.spinics.net/lists/linux-8086/msg00863.html


Minix 2 is better, it has networking support.

Check my comments at these HN threads.


Sure, same with [1]. I still think its cool. What would be a better title though?

[1] https://befinitiv.wordpress.com/2021/06/24/android-9-on-a-gs...


On elks, I miss three things:

- A gopher client. Delve or cgo should compile near straight. - Audio support. - AWK.


But it's technically correct. It says "into" not "onto". :) But I got fooled as well.


More like "Install a 2021 Rpi Running Linux into a 1989 laptop" but brilliant nonetheless.

I really like the idea of using the Pi 0 as a "coprocessor" for vintage machines and/or using the legacy machine as a terminal for the Pi.

You could potentially run X11 or VNC on the 286 also.

The Pi of course can act as a Wi-Fi and SSL proxy, etc..


The video is worth watching. While popping Raspberry Pi's into old computers is straightforward, reviving such an old machine took considerably more skill. (Example: repairing damage to the PCB from capacitor leakage.)


I guess I have been lucky; I have 1000s of machines from 196x-200x (my 'newest' are Sun / SGI machines) and I have only had 2 capacitor leak cases, further everything that is not PC is working. I have a few PCs working, but compared to home computers of the 80s/90s or workstations of the same era, PCs seem to die much faster. The homecomputers from the 80s (ZX Spectrum, Commodore PET/16/Vic20/64/Amiga, MSX-1,2) all just switch on like I flew back in time. Sometimes the belt of the floppy drive breaks, but I have many of those.


Well, then do I have the video for you: https://youtu.be/ar9WRwCiSr0

Bit of a spoiler to post it in this context, but still worth it.


I feel like that's why they said "into" and not "on"


Sure-- still a misleading headline though. There's not much in the headline that truly indicates what the author was actually doing. "Into" doesn't begin to describe the fact that Linux was on an rPi, not the laptop. In the context of software like an OS, you don't expect "install" to mean a hardware device unless that's specified.

If the headline was "Installing Linux into a TV from 1989" you wouldn't expect it to actually just be the author shoving a linux-capable SBC in there.

The article has merit but when the headline is pure click bait it's difficult for me to look past that.


I think anyone remembering TVs from 1989 would in fact expect that.


When I wrote it I was envisioning some high end TV from the time, like the Sharp Nintendo TV, and the expanded RAM of a specific cartridge like some of the 3rd-party multi-game cartridges. Or maybe something smaller like LUnix. If it wasn't that, I would expect a more truthful headline like "Embedding Linux SBC into a 1989 Television".

If the headline of this had been "Embedding rPi Zero into a 1989 Laptop Chasis" then I would have though oh cool and checked it out rather than being annoyed that clickbait made it onto the HN front page.


That was a really oddball product that most people never heard about let alone considered owning.

My parents bought a higher-end '89 Sony model back then. What it meant was a tuner up to 40 channels, a whopping 25" Trinitron tube curved only in one degree (i.e. cylindrical) and OSD for most functions. The pinnacle of TV technology was Picture-in-Picture, and that's about it.


I did my schoolwork on a 286 laptop. It was cheap... Pleasant gray-scale screen, Dos 6, windows 3.1 with pipes and reversi it was really OK. Duke nukem 2d, joust and lemmings all in 1mb of ram. Wasn't that bad really.


In my first semester of Computer Science (early 2000s) I had the issue that my family computer was always busy. So I took our 286 from the closet and set it up in my room - I just needed a C compiler after all, and 34Mb hard drive space ought to be enough for everybody. I wanted to use Linux but you need a 386 or higher for that, and DOS was already installed anyway.

After about a month my mom convinced my father to get me a new PC, probably annoyed by the sound of the dot matrix printer at night. But honestly, I agree with you: it wasn't that bad.


I learned to program on that setup at home in 4th grade.

Games wouldn’t run right, so I got the big dos manual and read the entire thing and started messing with boot setting to free more memory


I could have written your comment. I sometimes think that it's not that children learn faster, it's just that they are used to be totally lost and keep trying


Even if you didn't run many (or any TSRs like Sidekick), there was a bit of fiddling to maximize the amount of the first 640K bytes available. IIRC, you could load the commonly used Microsoft stuff in the upper memory 384K.

This seems to be close to what I used to do:

https://www.computerhope.com/ac.htm


I was thinking that you need a 386 minimum with extended memory to run the earliest versions of Linux but yeah no nevermind it's a Raspberry Pi...

286's were pretty ancient by 89 anyway. The first 486 was released that same year.


The 286 was still extremely popular by the early 90s, even if it was first released a decade or so earlier.


Doubtless there were still systems around. But the 80286 had a very weird sort of virtual memory architecture--not that it mattered too much pre mainstream true virtual memory OS support. And it had been superseded since 1985 at a time when PCs were never really fast enough.


The 286 used segmentation where you could carve out contiguous regions in ram and select them using the 16bit segment registers. Going outside the segment would cause an interrupt but individual pages and page faults weren't possible until the 386.

We used the segment mode for our real time OS in university as it was simpler than virtual addressing and provided granular enough protection faults for what we were doing.

One neat thing we did with it was use separate segments for different video buffers before they were blitted to the VESA frame buffer region. This gave us a 1980's version of video sandboxing along with vsync'ed double buffering and overlapping windows.

It only really worked because the Pentium 3 we were using could memcpy something like ten thousand times faster than a 286 but it was still cool.


In college 486s were getting very dated. We still maintained an 8086 ibm xt lab for typing classes. Maintaining those machines was something


I would be genuinely interested in a multi-decade grid of what various price points bought in inflation-adjusted dollars by year for say, dell or compaq/hp over the years, say for price points in increments of $500.

Like my rock-bottom "Workforce 486" that was $2000 back in 1993 or so: 486 dx2/66, 250MB HDD, 4MB RAM ordered from the back of Computer Shopper.


Yes, I remember buying a second-hand Tulip Vanilla 286 for a princely £700 in 1990. PCs were not cheap in those days.


Yea, they were a great $999 PC in the very early 90’s. As long as you didn’t want to run Windows they were popular.


Some windows versions support the 286, perhaps win 3.0?


Windows 3.1 will run on a 286. But you really need 2-4mb for it to be usable and running stuff like Word or Excel will bring it to its knees.


They didn't chew up as much power so you did find them in lower budget laptops like the one in the article.


I clicked because Linux needed an 386: the first versions used 4Kb memory pages for virtual memory instead of the i286 segmentation.


I had a IBM PS/2 286 with, IIRC, 4MB RAM, 30MB HD and one 3.5" floppy disk, bought 2nd hand in 1992 where I played Monkey Island 2 and several other games. So, maybe it was ancient but newer PCs were so expensive back in the day that there were people still happily using it.


Yes. My first x86 computer was a 25MHz 386 bought in 1991. Even though 486's were available, it was still the envy of the kids at school. (For a very short time.) I remember seeing some 486 systems advertised for $4-5k, which in 1991 dollars was out of reach of most people. So I can completely believe a 286 would have been a fine laptop in 1989.

It wasn't like today, where if you're going to buy a new computer, you might as well always get the latest and greatest.


This is better.

https://minix1.woodhull.com/hints.html#small

If you can get lynx running, you could access gopher and thus, gopher://hngopher.com

Lynx for Minix 2.0.{2,3,4}

https://minix1.woodhull.com/pcontrib/lynx285p2b.txt

More software for Minix 2

https://minix1.woodhull.com/pcontrib/


I was going to say that I installed Linux on plenty of 286s back in the day, but after thinking about it some more, they must have all been 386s. My first few Linux systems involved manually compiling the kernel and downloading and compiling individual GNU tools one at a time. The first kernel version I remember installing was 0.96, right around September 1992.


I remember a friend in the lab downloading linux and saving it in 3 1/4" floppies. He used about 100 disks. Two months later you could buy a magazine with Slackware linux on CDRom :-)


You could also download a boot disc for the installer, and connect to Slackware and install directly from FTP.


Internet connections were too expensive back in the day.


That's true but it was still a good option if you could get your PC to a university lab. Shortly later you could also usually find a cd burner in a university lab. The grandparent commenter's friend must have installed slackware in a narrow time period where floppies were the only feasible option.


Does anyone know if a 16-bit port of Unix-like OS ever existed in the first place? What would the C ABI be in that case? I’m guessing:

    char: 8 bits
    short,int,long: 16 bits
Anyone have experience working with such a system?


I'm surprised no-one has mentioned that UNIX from Bell Labs was first developed on a 16-bit system, the PDP-11. 1BSD and 2BSD were both consequently 16-bit, and it wouldn't be until a separate small team from Bell Labs ported it to the VAX in a release called "32V" that it became 32 bit at all.

(This release and increase in word size revealed a lot of bugs in the 16 bit only Unix and C compiler -- I recommend reading the porting paper if this sort of thing interests anyone)

Edit: Paper is here https://www.bell-labs.com/usr/dmr/www/otherports/32v.html

To answer your question from the paper, it appears all the other data types were 2 bytes, except for char, which was one byte. And long/float, which were handled specially, I believe by the PDP-11's floating point co-processor "C code for the PDP-11 uses the FP-11 convention for storing long integers"


Could you provide a link to the porting paper? Would it be possible for you to summarize how process isolation worked on the PDP-11?


Sure, I linked it in. I posted the first response from my phone, took me a bit to find everything on my computer...

The PDP-11 has an MMU and supports what's essentially segmented memory (https://gunkies.org/wiki/PDP-11_Memory_Management), with different address spaces for a kernel and for a userspace. It also supports a 22-bit "real" address space, hence when 2BSD and other "older" PDP-11 unixes can use up to 4MB of real memory (and 2.10BSD's kernel actually used more memory than could fit in a 16 bit address space at once -- needing to be manually chunked and loaded in/out of memory. In the release notes (http://www.krsaborio.net/bsd/research/1987/0715.htm) the authors said "Yes, [this is the last release] at least by us; quite frankly, we'd rather sacrifice our chance at heaven than look at a 16-bit machine again.", so it's about as nightmarish as it sounds.

It doesn't support paging, though, so no real virtual memory. I'm not really sure how thorough the process isolation was -- I know in the early releases, there was basically none, and a bad user process would crash the whole machine. I believe by later models (the MMU did change over time) it was "good enough" to keep the userland from crashing the kernel, at least.

Wasn't until 3BSD from Berkeley that proper virtual memory was added -- hence why the kernel's name was changed from /unix to /vmunix. Which is where the "vm" in "vmlinux" comes from, in case anyone's curious.


> Wasn't until 3BSD from Berkeley that proper virtual memory was added -- hence why the kernel's name was changed from /unix to /vmunix. Which is where the "vm" in "vmlinux" comes from, in case anyone's curious.

Didn’t know that myself, thanks for sharing!


Xenix (an official port of System 7) was available for Intel 286s from Microsoft. There were a number of Unix-like systems for 16 bit systems, and the Ancient Unixen were initially running on 16bit processors (notably the PDP-11). You can run 16bit unix in a simulator today.


It was even available for 8086, XENIX 8086. Another 8086 UNIX at that time was PC/IX. I played around with them both, and they both have upsides and downsides.


Sure. SCO/Microsoft Xenix. You could buy a PC AT or compatible clone, hang 2-4 terminals off it (the console gave you one extra) and run point of sale, physician's office management software or accounting software. Terminals cost about 1/4 of what a 286 cost in 1986-1989 so you'd see a lot of it in small businesses, and there were a few chains that used it because they could use UUCP to send in data to the home office.

Fun. Here's a link to the programmer's guide: http://www.nj7p.org/Manuals/PDFs/Intel/174391-001.pdf pages 2:17-2:22 cover the pointer and data type sizes. Amazing how little things have changed... and how different things are at the same time.


Exactly the type of thing I was hoping to see. Mind blowing the 286 could run a fully fledged Unix. I wonder what the process isolation story is, did everything run in the same address space? If so then were all binaries position-independent?

Edit: answered my own question. So this is the obsolete segmentation isolation I’ve always read about!


> Edit: answered my own question. So this is the obsolete segmentation isolation I’ve always read about!

Yep. It was amazing what you could do with it. 286 was a chip that outside Xenix, Coherent and a few other multiuser OSes never really was fully utilized.


You've got plenty of answers already, but here is a list of specifically 8086 UNIXes (or "UNIX-likes") that I remember. Some I have played around with quite a bit.

- Coherent

- XENIX 8086

- SINIX (technically on 80186, and derived from XENIX)

- PC/IX

- Minix86

One of the first things I usually do on an old but new to me system is run a small C program that just prints sizeof() of various types, including the ones you mentioned and pointers. Here it is on SINIX, which is the one I can currently run easiest (unit is multiples of sizeof(char) == 1, with normal 8 bit bytes):

char: 1, short: 2, int: 2, long: 4, long long: 4, pointer: 2

So it's almost like you say, but long (and long long) are actually 32 bits.

Standard pointers are 16 bit, which means they address within a segment. There is almost certainly also a way to specify 32 bit far pointers (seg:off), or maybe even 32 bit "huge" pointers (still seg:off, but normalized, so that comparisons work).


There were a few.

- minix 1.0 could run on XT with a floppy disk

- coherent version < 4 could run on AT 286

- Xenix had a 286 version as well


coherent on a 286 was my first experience with unix on intel hardware. good ol' mark williams corporation.

i remember it had one hell of a doorstop book that they referred to as "the lexicon."


I remember the book that came with Coherent 4.x. It was great! I already knew C, but learned a ton of POSIX / Unix-specific stuff from that book.


Like others have said: Minix and others did. I ran Minix for a while when I had a 386sx (wish was like a 16 bit 386). In particular it lacked the protected mode that Linux used heavily.

So full 386 software didn't run on that. Minix was super fast but there was little you could do with it, sadly.

Of course pretty much all Intel computers still run Minix today as part of Intel's management engine.


It bothers me that the ME exists. A completely separate computer that can be remotely controlled and I can't turn it off. I'll be glad when there's more CPU competitors that don't have one of those, even if they are slower.


My gut tells me that no cpu manufacturer can ever be trusted if intel cannot be trusted. What is hopeful to me are RISCV softcores running on FPGA. Will never beat CPU records but will likely be the best option available for private computing.


That's why they're called "intel" :-)


On a 16 bit cpu I worked on char, short, and int were all 16 bit words, long and long long were 32 and 64 bits, but doing math with 32 bit words required the C compiler to emmit instructions to manage the 32-bit operations.

Also sizeof(long) was 2 and sizeof(long long) was 4.


I was mistaken. I think long must be a minimum of 32 bits according to the standard


> Also sizeof(long) was 2 and sizeof(long long) was 4

Wait what? Doesnt that mean a byte somehow has 16 bits?


While you got an answer already, there was also a time where 8 bit wasn't standard yet, and computers existed in all kinds of word sizes. 18 bit, 36 bit, and even "variable size" (i.e. IBM 1401). The further back you go, the more it shatters what we consider "normal" and "essentially fixed" in today's computer world.


Okay this must have been _some_ sort of 16 bit cpu, but i find it hard to believe any x86 cpu had a major c compiler with char having 16 bits.


Yeah definitely was not x86. It was an embedded DSP


sizeof() is measured in number of chars, I.e. sizeof(char) is always 1. As he said, char was also 16-bit.


Xenix from SCO and Microsoft. At least it ran on a 286. Can't answer about the C ABI.


Coherent probably qualifies: https://en.wikipedia.org/wiki/Coherent_(operating_system)

Around 1993 or so, before Linux took off, I ran it on a 386SX laptop with 3 megs of RAM. Supposedly earlier versions ran on the 286 but I never tried.


The big problem with early x86 machines was the lack of an MMU and process isolation.


Though there were multiple solutions where the MMU sat outside the CPU, on the bus between 8086 and memory. That setup was common in general, but a bit less common for the 8086 specifically. Support wasn't perfect, often paging wasn't a thing, but isolation and protection in general worked somewhat reasonably.


Microport sold Unix System V for 286s.


My first Linux install was a Mac IIsi, which had a Motorola 68030. Linux required a hardware FPU which the 030 lacked, but there were daughtercards that provided the missing FPU, and then Linux worked. It didn't do much though!


Are you sure? Linux doesn't require hardware floating point. Are you thinking of an MMU? The EC SKU 68030's didn't have them and could be provided externally.


Title is misleading. Linux is on a raspberry pi, not the original laptop hardware.


I had totally forgot about Kermit.

The rest of this article was clickbait, but that reference was awesome, and incredible to think that folks are still using it all this time later.


the most interesting thing about kermit is the guy who wrote it and his large and interesting web presence:

http://www.columbia.edu/~fdc/

military vet who completed columbia's general studies program, then took a job with the university. maintains awesome webpages on:

* computing history at columbia: http://columbia.edu/cu/computinghistory/

* 1968 protests at columbia: http://www.columbia.edu/cu/computinghistory/1968/

among many other things... definitely worth a look!


Kermit sucks, ZMODEM is way faster in real life over 9600 PPP/SLIP links. I never managed to get Kermit faster.

https://en.wikipedia.org/wiki/ZMODEM


I had an 8086 "laptop" for a while in the 90s, mostly as a novelty. It took something like 10 C batteries (though I never took it anywhere as it was 5kg), had 512kB of RAM, no hard disk, two 720kb floppy drives, a full size keyboard (!), a flip up monochrome LCD screen similar to this one, and an external monochrome monitor port (but you could only use one screen at a time, controlled by DIP switches). I think it might have been this one: https://www.peterkernwein.de/Rechengeraete-Sammlung/amstrad_.... More pictures of a similar model here: https://www.vogons.org/viewtopic.php?t=32543

I mainly used it with the external screen for reading text files and amateur ebooks, at the end of my bed.


Funny... the last few days i was thinking about refurbishing an old Toshiba T1200 i have lying around to use as my Laptop at work.

Why? Now... most of the stuff that is not direct technical stuff i do is text based (writing reports, creating spreadsheets with calculations for projects etc.), and even not a small part of the technical side of the job is done in hooking up to the serial port of a production line. The transactions with our vendors at work is mostly via fax (yeah, it still exists and is used in germany... ESPACIALLY with our vendors and partners)...

The funny thing is, i am really confident, that i COULD do 99% of my work via a machine of the 80s without losing much comfort.


>Installing

Well, yes, something's getting installed in the physical sense (so not quite entirely clickbait).

Wouldn't it be great to have a relatively routine way of repurposing old laptops, which often have very good traits, by using them as terminals for a replaceable on-board compute module (through VNC or what have you)? For instance, an enclosure that fits in the space occupied by the optical drive or Ultrabay, and uses the existing interface for its connection. What would be needed to be created and disseminated is a design for the enclosure (and maybe someone to make them) and software for the client.


I remember, when chatting was popular, we did exactly that. But right now, it is not worth it. I want to make computers disappear in my life, to support it invisibly. But these old machines, big, loud, moving parts, hm, not for me.



I was quite poor so only had old computers growing up, so I used Minix on everything. These days there is still ELKS which runs on the real old hardware, rather than inserting a Pi into the case.


My first computer was a 286 (desktop) back in 1989, with 1MB of RAM and a 40MB hard drive. And an NEC VGA monitor, which cost quite a lot back then. It was originally the family computer, but eventually became a hand-me-down when my parents upgraded. I managed to get Windows 3.1 running on it, and it actually wasn't so slow. The first computer I ran Linux on was a 486.


I’d love to see a performance comparison between that 286 laptop and the Raspberry Pi that went into it.




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

Search: