Sure I can cross compile Linux, but what about 386BSD? This had long been a thorn in my side, as the GCC/Binutil toolchain that is used in this early era is not GNU pure, they had been modified in all kinds of ways. One of which was a builtin memcpy that doesn’t work the same as a normal memcpy, and the other being that the C compiler & pre-processor rely in YACC to build the tokens. I had been using bison before, however even though bison didn’t generate any errors it build the compiler wrong enough that the majority of the kernel wouldn’t compile.
As it stands right now, the only things that do not compile is locore
to post process the kernel, symorder is used along with dbsym, although neither do any processing to the kernel file itself, so they aren’t needed to get a working system.
386BSD Release 0.1 by William and Lynne Jolitz.
Copyright (c) 1989,1990,1991,1992 William F. Jolitz. All rights reserved.
Based in part on work by the 386BSD User Community and the
BSD Networking Software, Release 2 by UCB EECS Department.
386BSD 0.1.2018 (GENERICISA) 02/02/18 15:01
Other than that, yeah it’s great, compile a kernel in under 15 seconds.
Anyone that cares, the initial release is here: 386bsd01.7z
I just got an email that the ‘officially sanctioned’ patches to Net/2 are still located here. Just about every 386BSD 0.0 mirror that survives is missing these files. So I made a copy of them on mine, here.
This dates the patches to February 26th 1992, and all the 3 1/2″ binaries being the 4th of March 1992. And for more confusion the 5 1/4″ floppies date to the 17th of March. The 40kb worth of user patches ended around June of 1992.
I thought I’d go ahead and see if I could get Net/2 to build on my own.
Well it compiles, and tries to boot…. Sadly there is no adb or gdb support. How on earth did people debug this stuff then? I’m not sure where the crash location is, or what to do about it. But I thought this was really cool.
I’ve also tried to track down 4.4BSD encumbered, which was released around the same time as the 4.4BSD-Lite1 which was after the AT&T vs BSDi/CSRG thing.. Or even the release that parallels the Net/2 release…
I was thinking after rebuilding the Mach disk, that back in the say it was insinuated that the changes from Net/2 to 386BSD 0.0 were quite minimal. So I figured I should take a look. The first thing to do would be to clean up Net/2’s kernel to look more like 386 BSD’s. This was trivial as there wasn’t much of anything structure wise done. Running the patch was pretty easy:
Looking around, I found this blog, which kind of reads under google translate where someone went ahead and booted up 386BSD 0.1 on his 386sx laptop. Sadly he doesn’t have a 80387sx so things like PS explode as it has a %f in the code…
Oh well it’s kind of fun to see things go round and round.
I should mention I was thinking of 0.0 that didn’t include the floating point support.. Also “the fuck it crashes” is as good as any other google xlate disaster… 🙂
This has been a fun thing to go through, but at one point it was a popular trend to convert big expensive 386 computers from the late 1980’s into multi-user, multi-tasking beasts much like a mainframe. But instead of CICS, and PROFS people ran Dbase III, WordPerfect, and all kinds of email solutions from ccmail, to MS mail, and even some dbase programs, compiled by clipper into being email clients.
In a way things were more ‘simple’ back then, and the 80386 CPU had a card up it’s sleeve v86 mode. v86 mode provides hardware emulation of a 8086, allowing the base OS to spawn dozens of these virtual machines. All that was up to the ‘supervisor’ was to create virtual peripherals, much like how Windows/386 of the day ran multiple MS-DOS VM’s on a single machine that you could see at once, these solutions provide the output to multiple terminals.
While Windows/386 sat on top of MS-DOS, these multitasking DOS’s had the v86 mode multitasking as part of it’s core, and some of the later ones were themselves protected mode operating systems.
But juggling multiple MS-DOS applications at one could be quite a challenge. And of course there was the whole dos extender thing, leading up to VCPI, and DPMI.
While MP/M-86 is a grand daddy to a bunch of Digital Research derived OS’s, it’s not 386 specific so I’m going to omit it for now. I’m sure it’ll be worth doing it’s own write up.
I’m sure I’m going to miss a bunch of these, but let’s have a quick rundown.
If anyone knows of any others feel free to give me a shout. It does seem that multiuser DOS was a good market at one point.
Well, ok it’s not 100% the NetBSD 0.8 kernel, as a good chunk of the files have been intentionally removed from CVS. However from the announcement, it does make it clear that NetBSD 0.8 is 386 BSD pl22 with some pre pl23 changes thrown in. Since patch level 22 is lost, however patch level 23 is still around, then it wasn’t to hard to install a 386 BSD system, patch it to level 23, then unpack the NetBSD 0.8 sources, and fill in the missing parts.
I guess this is the Jurassic Park of kernels?
As you can see there is some differences in the boot strings, but at the same time, because so many files were just pulled in from 386 BSD, and I’m still using a 386 BSD userland, it reports itself as 386BSD.
dmesg’s were so small back then, here is the whole thing from the kernel:
386BSD 0.1 (GENERICISA) #2: Sun Dec 5 13:30:14 PST 2010
real mem = 67104768
avail mem = 64663552
pc0 at 0x60-0x6f irq 1 on isa
wdc0 at 0x1f0-0x1f7 irq 14 on isa
wd0 at wdc0 slave 0
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
ne0 at 0x320 irq 10 on isa
ethernet address 52:54:00:12:34:56
npx0 at 0xf0 irq 13 on isa
Oh well it was moderately interesting.
For the insane, the merged source is here. I’ll provide a snapshot of my build environment, under Qemu here.
This is going to be.. involved to do… But there is some hope. The source to X11 R5 is still online, even though the xfree86-1.2 stuff is long gone. I was able to find a binary 2 bit Xserver for 386BSD, so that’s promising.
So my hope would now lay in making up a configuration file that’ll satisfy the Xfree86 1.2 server, and build enough of X11R5 to where it’s able to do something….
I have no idea if it’s even that easy to do, but if anyone has any leads on a source copy of xfree86-1.2 or 1.3 that’d probably be easier to build for 386BSD as it was used in the time frame… 2.0 was for the forks of NetBSD & FreeBSD so no doubt it’d hinge on things like DLL’s…
In the meantime, you can check out Neils Horn’s blog, with an example of what Xfree86 1.x was capable of on 0.96 linux.. Back in the day.