A Port of “The Last True Unix” to x86
nordier.com
nordier.com
v7x86-0.8a.iso - ~14.6 MB
Keep in mind, that also includes kernel, kernel source, C compiler, C compiler source, and utilities and utility source.
For comparison, the source of most recent version of gcc, 10.2 -- gcc-releases-gcc-10.2.0.tar.gz -- weighs in at ~118.7 MB, and that's compressed...
Or for comparison, one of the "standard" 600 MB+ (and sometimes much more!) Linux distributions...
Also, v7 Unix occupies a unique place amoung Unices, that is, it's
the simplest possible version of Unix that is actually still functional with the code being readable
(earlier versions have much more assembler code and less C) -- so anyone interested in learning Unix or one of its derivatives from the ground up is well advised to study this source code!
To the Author: You undertook a great job in getting this ancient code base to work on x86, and the community of Unix researchers, students and scholars, both now and in the future -- thank you for this laudable effort!
Not included in this distribution. Also not included: the source of boot and the source of compiler used to compile that.
See my other post here for the references.
I would argue that Unix v6 (when you consider excellent book Lion's Commentary on UNIX 6th edition) takes that trophy.
https://www.nordier.com/v7x86/files/RELNOTES
"The following limitations apply to the distribution:
- The source to the C compiler is not part of the distribution. This is currently built separately as a component of a modified version of the Amsterdam Compiler Kit (ACK).
- The source for boot (the second stage bootstrap) is not part of the distribution. This is currently built separately using a 16-bit version of pcc."
The compilers mentioned:
https://www.zdnet.com/article/sco-is-dead-sco-unix-lives-on/
Its predecessor, Xenix, may have had more brand awareness?
I remember a summer job I had, 1998. Contracting doing basic sysadmin stuff for a subsidiary of IBM. I wanted to install Linux on a PC to do some stuff, mostly account password stress testing, etc. Got sign off from most of the team, but one guy dug his foot in... "we should use a real Unix. This Linux thing could get us in trouble. We should be using SCO" He got some funny looks. The next year all of IBM was all-in on Linux, big corporate strategy.
I think that's why I've seen very few workstations using it, but it's pretty common as a shared industrial system. If you need a single user system you'd just use DOS, if you need a powerful workhorse you'd get a fancier system, possibly some newfangled RISC machine, but if you need a multitasking system and don't need much power for any individual task it's ideal.
I remember my high school gf's father had a SCO Unix machine in his office. This was about 1991 I guess. At the time I was an Atari ST user, and just salivated at Unix machines (my luckier/older/wealthier Atari user friends had TT030s and got to play with Unix on them). Once she let me sneak into his office and play with it when he wasn't around, illicit unixing... was very exciting for me :-)
A few months later I got a 486 for graduation present and installed Linux 0.97 on it.
He is on a linux box now of course, but that last osr5 install was actually migrated to new hardware twice before finally getting the app onto linux.
There was much to like and dislike about SCO.
Even back before the later lawsuit people took over, it was a bit ridiculous to ship a system where you had to pay extra (after already paying $1200 or so, in '92 dollars) just to get a compiler, and extra again for tcp. They tried to justify it that most installs didn't need that stuff so by splitting them off you could pay less for just that parts you need. But that kind of doesn't wash when the most basic subset was already ridiculous.
But I liked it in most other ways. It was limited and annoying by todays standards, and definitely osr5 failed to advance and became terrible to use in comparison with everything else after a while, while still somehow demanding a big price tag.
But earlier, it was as good or better than anything else at that same time. People did a lot with it. I did a lot with it.
One thing that was wonderful from a small custom back end software seller point of view, practically zero support overhead. You install the box and your software, and forget about it. The customer calls when they want something new or when some hardware breaks. Proper administration was what they would call neglect today. One guy could have 150 customers out there and spend 1% of his time supporting past installs.
And 10 years after doing your first install, your latest install used practically identical steps and knowledge. All those 150 systems that were installed spread over a 10 or 15 year period, they all worked the same way. They were all practically identical to each other even though version numbers and hardware drivers changed.
That is a level of efficiency and low overhead that we'll never see again.
Today you might be able to magic up 150 servers in a few seconds and a few lines of cloud orchestration config code, but tomorrow everything you learned to do that today will be different, and you better stay actively on top of monitoring them, none of this fire & forget like ye olden dayes.
(Yeah, Snow Crash hit a little too close to home for me.)
We had an SCO box (among other unices) at the job I worked in the early 90s making software to port RPG code off of IBM minis.
IIUC, each of the many field locations could run the software locally on either (if the location needed only one simultaneous user) an 8088-based Sperry PC running MS-DOS, or (if multiple simultaneous users) an 80286-based Sperry PC, running Xenix, with terminals hanging off it.
Yes, there was `hack` on these Xenix '286 systems. :)
I think the official terminals might've been the popular Wyse WY-50, but there were also some unusual Tatung terminals kicking around the same organization.
IIUC, the field location PCs had modems for infrequently sending data back to HQ (maybe sharing the main voice POTS line for some locations, after business hours).
I imagine that the ability to use cheap PC hardware and dumb terminals made economic sense. Compared to a centralized minicomputer, and a bunch of dial-up dumb terminals and dedicated phone lines.
You could build gcc by means of the "hidden" C compiler in SCO Open Desktop, which was used to rebuild spaces.c and then relink the kernel when changing the configuration \o/
SCO was one player in this space. I can't remember the other one I was considering.. In the end they were all too expensive for poor-student-me so didn't use any of them and kept using the lab SunOS boxes via 2400bps dialup from home until Linux appeared on the scene.
They have (hopefully) all moved to Windows by now.
Not sure why that's something to hope for, SCO (now Xinuos) is a big supporter of FreeBSD and OpenServer5+6 and Unixware7 are still supported and maintained.
The original SCO made SCO Xenix, later branded SCO Unix. Meanwhile, another company called Caldera Systems had been spun out of Novell to keep working on the Linux version that Novell had originally done, back when they had a grand plan to challenge Microsoft on all fronts from applications down to the OS level.
As Linux really took off, though, SCO kind of saw the writing on the wall. They sold their Unix business to Caldera and renamed themselves Tarantella, after a... frankly, I don't remember what it was, anymore, but it was a program they made that had become the bulk of their business.
I'm not sure when Caldera renamed themselves to SCO, but by the time the litigation started flying, Caldera Linux had failed in the market and most of its original staff had left the company. The people now in charge decided that their best asset was IP relating to "real Unix," and the rest is history. Strange, strange history.
The sort of ironic footnote lost to history at this point is that the original Caldera Linux you could get back before they went all troll was, in my recollection, actually a pretty promising distribution. I played with it for a while and was pretty impressed.
Then SCO got greedy and tried to charge for royalties from IBM and Novell. They both said no, we'll see you in court.
I'm not sure if groklaw is still around, but that was a really good resource.
No mentioning that Microsoft was behind all that?
https://www.zdnet.com/article/fact-and-fiction-in-the-micros...
Selling points were that it ran on x86 and was Unix, basically. As a result you could have Unix on fairly cheap hardware. There was a Linux "kernel personality" you could install on SCO Unixware (IIRC), that would run linux binaries, if you cared for that.
By that time it was on the way out though. You have to remember it was a transitional time - Linux was on the rise but in many people's view it hadn't yet proven itself. IBM, HP and Sun were still ruling the roost for servers, but their stuff was expensive. SCO gave people a way to make commodity x86 hardware into something server-like.
Honestly it wasn't a terrible system, it just got superseded quickly and then went down in flames.
There were lots of these, including the AT&T SVR4 port, Solaris/x86, NCR MPRAS, Xenix, SCO OpenServer, UnixWare, DELL UNIX, NEC PC-UX/V, ISC PC/IX etc etc.
Linux had (has?) the iBCS module since enabling some binaries from some of these platforms to run "natively" since around 1994:
https://en.wikipedia.org/wiki/Intel_Binary_Compatibility_Sta...
386/ix was ISC's port of System VR3 to the 80836. Actually, it was the official port of System VR3 to that processor, done under a contract from AT&T (and maybe Intel...I don't remember for sure).
There was also a port of System VR3 to the 80286 as part of that same contract.
The source for both ports was System VR3 on the AT&T 3B2. The memory management on the 3B2 was close enough to that of the 386 that the people working on that part of the port had no problems.
Not so for the 286 port, which I was working on. We tried treating segments as 64 KB pages, and it worked if you didn't push it hard.
But if you ran a load test with 20 processes that where each large enough so that only a few could be resident simultaneously, and those processes were all compute bound it got into this pattern that was fair in the very long run, but very unfair in the short run.
You'd have one process get something like 90% of the CPU, and a couple others getting about 4% each, and the remaining 2% would be split evenly among the other 17 processes.
It would stay this way for something like a half hour, then you'd get a minute of heavy thrashing, and then that would clear up and you'd be back to the way it had been, except which process was getting the 90%, which two were getting 4% each, and which 17 were evenly sharing 2% would have changed.
So if you took a long enough view, it was fair.
Something in the 3B2 paging system algorithms apparently did not like very large page sizes, and the other programmer and I working on the 286 port were having no luck figuring it out.
Fortunately, AT&T came to their senses and realized there wasn't much demand for a 286 port, dropped it, and I got moved to the 386/ix project, where I added a simple in-kernel debugger and a dynamic device driver loading system.
AT&T hadn't asked for dynamic device driver loading, but the total size of the kernel including all the device drivers that needed to be included was getting bigger than the boot code we had could handle, and the people dealing with the boot code claimed it was obtuse and ugly assembly code that would be very hard to rewrite to handle large kernels, and so I somehow ended up being assigned making drivers dynamically loadable so we could ship smaller kernels.
I got it working well, but then the boot bastards went ahead and rewrote the boot code, getting rid of size limits, and my dynamic device loading was no longer needed.
I also didn't quite escape the 286. I was half the team that did the 286 Unix binary compatibility for 386/ix. That was essentially a Wine-like thing, /bin/i286emul, a 386 process that knew how to load a 286 process into its own address space, set up its memory space, and start it running, with i286emul handling the traps when the 286 code tries a system call and figuring out how to translate between the 286 system calls and the corresponding 386 Unix calls.
ISC was a fun place to work.
I knew of that, Xenix and the two SCO flavours, but the others are news to me!
NCR MPRAS was the oddest duck I ever had to support - fairly vanilla SVR4, but there was bits of NetBSD code cut and pasted in (eg. some of arp cache code, or at least the header files). It was used for running a Teradata data warehousing solution for a poker machine/lottery corporation I worked for. I actually managed to get gcc 2.95.2+binutils running on it and managed to compile and package up a lot of GNU utilities etc for it.
Also, this! (snip added):
> The license, called the SCO Intellectual Property License for Linux, lets Linux users run SCO's intellectual property in binary form only. "It gives you a license to run the software only. You can't view the source, and you can't contribute it to an open-source product for everyone's use, [...] This is a license that is designed to run in addition to the GPL," he said.
What?! How on earth can you say this with a straight face!
That's not much, it's in fact really cheap for a Unix.
"Later, in January 2002, Caldera International (now SCO Group) relicensed (but has not made available) several versions under the four-clause BSD license."
https://en.wikipedia.org/wiki/Ancient_UNIX
Nobody is going after a v7 Unix port, the sources for ancient Unix are widely distributed on TUHS (The Unix Heritage Society, tuhs.org) and such.
On the other end of the scale, Plan9 could be seen as the successor to v10 research unix, at least in spirit.
Since this port includes vi, the whole 'no BSD' thing is a bit silly. If it has sockets, it has BSD.
that sounds like a fun (nightmare, for giggles) to do
Probably for nostalgia or a challenge or who knows what.
That's without having any TCP/IP support and extremely limited storage space for source code and compiled binaries by today's standards.
I considered attempting this once starting from AT&T SVR4 - even though it had TCP/IP with the right addon package and a C compiler - gcc had dropped SVR4 support a long time ago.
There's probably another couple of hundred obstacles along the way as well...
¹ https://www.betaarchive.com/forum/viewtopic.php?t=25745#p310...
https://www.nordier.com/v7x86/files/COPYRIGHT
Tl;dr: all bsd-ish.