• Please review our updated Terms and Rules here

Building the USL SVR4 Version 3.0 386 reference port

Starcat

Experienced Member
Joined
Jul 31, 2024
Messages
64
Location
Midwest (IA/IL Quad Cities)
I've been experimenting as of late with building the USL 3.0 reference port using AT&T SVR4 Version 2.1. Without any SVR4-specific build instructions, it feels a bit clumsy at times, but it works.

The bulk of the build takes about 3 hours on a 650MHz P6. Is anyone else working with this port? It would be great to compare notes.
 
Your host system is also i386, or are you cross-compiling from a 3B2 build? I've only tried extracting key pieces of the SVR4/386 ports out there, but have not tried a stock build with the full native SGS.

And when you say USL 3.0, are you referring also to SVR4 Version 3.0 or SVR3?
 
Yeah, my system is a HP Vectra VLi8 (Pentium III) running SVR4 Version 2.1. I'm doing a native i386 build of SVR4 Version 3.0.

The foundation set builds cleanly at this point, but I'm still working out kinks in the build process. In particular, with the development system. Sometimes ctrace fails to build.

Do you run SVR4?
 
No but I've setup this particular SVR4 2.1 release on a few machines in the past, I keep a few different SVR4 (386 and 3B2) revisions around for studying later UNIX features in the AT&T lineage.

If you've got stderr from the build process, posting that here may help with seeking diagnostic opinions.
 
I've been looking at this thread for a while, but here are my two cents:

A. someone already built SVR4v3.0 - see https://lisp-machine.org/self-hosting-unix-system-v-release-4-i386/
B. there is a somewhat accurate build guide in the SVR4v3.0 source code - see proto/i386/README relative to the root of the source tree
C. the SVR4v4.0 source code has the full documentation including the Source Code Provision Build Instructions which are also somewhat true for SVR4v3.0
D. the non-Foundation Set addon packages can be easily generated from subfolders in add-on/ using standard SVR4 packaging methods
 
I've been looking at this thread for a while, but here are my two cents:

A. someone already built SVR4v3.0 - see https://lisp-machine.org/self-hosting-unix-system-v-release-4-i386/
B. there is a somewhat accurate build guide in the SVR4v3.0 source code - see proto/i386/README relative to the root of the source tree
C. the SVR4v4.0 source code has the full documentation including the Source Code Provision Build Instructions which are also somewhat true for SVR4v3.0
D. the non-Foundation Set addon packages can be easily generated from subfolders in add-on/ using standard SVR4 packaging methods

I would really like the Source Code Provision Build Instructions. Where can I find SVR4v4.0?

No but I've setup this particular SVR4 2.1 release on a few machines in the past, I keep a few different SVR4 (386 and 3B2) revisions around for studying later UNIX features in the AT&T lineage.

If you've got stderr from the build process, posting that here may help with seeking diagnostic opinions.

That's a great suggestion. Unfortunately no sooner than I saw your post, I blew up my UnixWare root file system which is where I stored the build logs. Long story short, I triple boot UnixWare, SVR4, and Windows 98SE. I installed a WD 8003-E network card which I know will work with both UNIXen and managed to hose my system in the process.
 
I would really like the Source Code Provision Build Instructions. Where can I find SVR4v4.0?



That's a great suggestion. Unfortunately no sooner than I saw your post, I blew up my UnixWare root file system which is where I stored the build logs. Long story short, I triple boot UnixWare, SVR4, and Windows 98SE. I installed a WD 8003-E network card which I know will work with both UNIXen and managed to hose my system in the process.
I've posted some pointers on where to find SVR4v4.0 source in my post in this topic: https://forum.vcfed.org/index.php?t...-v-release-4-version-2-1-for-386.68796/page-2

I don't think I can say directly where to get it, although if you really can't find it feel free to drop me a PM.
 
For the record there is a 1997 snap of the "SVR5" UnixWare source floating around out in the wild as well.
 
In the end, it was a matter of refining my build process. Version 3.0 builds fine and I was able to generate media for multiple packages (44 diskettes in total).

The next challenge will be to build DWB 3.3 and get the man pages installed!
 
Word on the street is there is some interplay between the commercially distributed DWB and the versions of the software snapshotted with later Bell Labs releases of UNIX (V8-V10), several artifacts of which are available on TUHS, so depending on what branches lie in the pathway before you on getting a "recent" DWB working, there may be helpful nuggets in the V8-V10 artifacts.
 
Word on the street is there is some interplay between the commercially distributed DWB and the versions of the software snapshotted with later Bell Labs releases of UNIX (V8-V10), several artifacts of which are available on TUHS, so depending on what branches lie in the pathway before you on getting a "recent" DWB working, there may be helpful nuggets in the V8-V10 artifacts.

That's cool, I'll definitely checkout the V8-V10 stuff. Thank you for the heads up!
 
I've posted some pointers on where to find SVR4v4.0 source in my post in this topic: https://forum.vcfed.org/index.php?t...-v-release-4-version-2-1-for-386.68796/page-2

I don't think I can say directly where to get it, although if you really can't find it feel free to drop me a PM.

I really like SVR4 Version 4.0. Thank you for the lead!

I managed to build GCC 3.4.6 for Version 4.0. It was a herculean feat, but now the development system is 15 years newer than the OS!

I hope to get to GCC 4.3 as I'm pretty sure all SVR4.x support was removed in 4.4.
 
I really like SVR4 Version 4.0. Thank you for the lead!

I managed to build GCC 3.4.6 for Version 4.0. It was a herculean feat, but now the development system is 15 years newer than the OS!

I hope to get to GCC 4.3 as I'm pretty sure all SVR4.x support was removed in 4.4.
No problem! GCC on some of these older UNIXen can really be a pain, IIRC in order to bootstrap GCC on a 3B1 you had to download some binary of the GNU C preprocessor because the stock AT&T preprocessor blew up on GCC's bazillion portability defines.

And if you like herculean fits... take a look at SVR2 source as present in the Microport source leak or SVR4.2. Both have their own share of issues, and both can be considered Herculean, although SVR2 is *much* more Herculean :). I've recompiled both so I know they at least compile properly after some fixes, but don't overdo yourself too much, SVR2 can be a real pain, and SVR4.2 has its own issues which I won't talk about as to not spoil the surprise :)

P. S. originally I didn't even know SVR4v4.0 was out there, binary or source, then someone in a retrocomputing Discord nerdbaited me into recompiling that and provided a link to the source tree during a discussion on SVR4v3.0, and now I kind of act as the distribution guy since apparently not many people even know that's out there :)
 
No problem! GCC on some of these older UNIXen can really be a pain, IIRC in order to bootstrap GCC on a 3B1 you had to download some binary of the GNU C preprocessor because the stock AT&T preprocessor blew up on GCC's bazillion portability defines.

And if you like herculean fits... take a look at SVR2 source as present in the Microport source leak or SVR4.2. Both have their own share of issues, and both can be considered Herculean, although SVR2 is *much* more Herculean :). I've recompiled both so I know they at least compile properly after some fixes, but don't overdo yourself too much, SVR2 can be a real pain, and SVR4.2 has its own issues which I won't talk about as to not spoil the surprise :)

P. S. originally I didn't even know SVR4v4.0 was out there, binary or source, then someone in a retrocomputing Discord nerdbaited me into recompiling that and provided a link to the source tree during a discussion on SVR4v3.0, and now I kind of act as the distribution guy since apparently not many people even know that's out there :)

Those are quite the accomplishments! The trail of tears that I have left getting from Version 2.1 to 4.0 is more than sufficient for me!

4.0 suits me well as my build system is a P3 Coppermine core. I've also discovered that for large builds, I can use a SVR5 chroot build environment to overcome the SVR4 memory and UFS limitations while using a native SVR4 toolchain.

Is there any particular release that you tinker with the most?
 
Those are quite the accomplishments! The trail of tears that I have left getting from Version 2.1 to 4.0 is more than sufficient for me!

4.0 suits me well as my build system is a P3 Coppermine core. I've also discovered that for large builds, I can use a SVR5 chroot build environment to overcome the SVR4 memory and UFS limitations while using a native SVR4 toolchain.

Is there any particular release that you tinker with the most?
Not really, the last time I tinkered a lot with an old UNIX was SCO XENIX 2.3.4, and I didn't recompile that from source (mostly because there's no XENIX source out there except that partial Intel XENIX thing, and I would've definitely rolled a XENIX from source if it was out there :))

Although, if you provide a slightly different definition of tinkering which also includes modifying the release's source itself so that it at least compiles, that's definitely SVR2. That was a massive pain. SVR4.2 was less of a pain, more of "anxiously waiting for this to compile without running out of inodes or stumbling into a yet another broken file because someone stored the tree on NTFS or something (the corruption patterns sure seemed like someone stored the tree in unpacked form on a Windows system using either FAT or NTFS)"
 
Something I wish I could get my hands on, if it actually materially exists, is PDP-11 UNIX after 1983's initial System V release. The only reason I have to suspect such a thing might exist (however extremely unlikely) is the machid(1) manpage as late as SVR4 lists the PDP-11 as a possible machine type the tool might return. I don't know if this was actually to suggest that there is some fabled SVR4 for PDP-11 floating around in the ether somewhere, but considering AT&T did put in the heavy lifting to move CB-UNIX's MAUS shared memory into the USG line so SysV could support IPC mechanisms shows they were willing to try and keep things going on UNIX's old stomping ground. That said, with the institution of demand paging and such in the 80s, if such a kernel existed, it would certainly be a very, very hobbled experience compared to SVR4 on the other contemporaries.
 
The last version of PRO/VENIX is SVR2 ca. 1985, though I suspect that's not quite what you mean. I don't think Venix-11 got past V7, but PRO/VENIX is legitimately a PDP-11 Unix, just on the Professional.

Haven't seen one later than that myself though.
 
Not really, the last time I tinkered a lot with an old UNIX was SCO XENIX 2.3.4, and I didn't recompile that from source (mostly because there's no XENIX source out there except that partial Intel XENIX thing, and I would've definitely rolled a XENIX from source if it was out there :))

Although, if you provide a slightly different definition of tinkering which also includes modifying the release's source itself so that it at least compiles, that's definitely SVR2. That was a massive pain. SVR4.2 was less of a pain, more of "anxiously waiting for this to compile without running out of inodes or stumbling into a yet another broken file because someone stored the tree on NTFS or something (the corruption patterns sure seemed like someone stored the tree in unpacked form on a Windows system using either FAT or NTFS)"

I ran SCO XENIX on my first "supermicrocomputer" in the late 80s; an Everex PC. XENIX was a lot like SVR4 in the sense that you got the best of two worlds. It was a strange brew of System V and BSD. At the same time, I repaired Intel Multibus systems running SCO XENIX for a living. I was a XENIX fan!

I noticed the file name mangling in the SVR4.2 source tree and assumed it was the handywork of a Mac, but WIndows is always a likely culprit.

Can SVR4.2 address more memory? So far I can't seem to surpass 192MB with SVR4.

Something I wish I could get my hands on, if it actually materially exists, is PDP-11 UNIX after 1983's initial System V release. The only reason I have to suspect such a thing might exist (however extremely unlikely) is the machid(1) manpage as late as SVR4 lists the PDP-11 as a possible machine type the tool might return. I don't know if this was actually to suggest that there is some fabled SVR4 for PDP-11 floating around in the ether somewhere, but considering AT&T did put in the heavy lifting to move CB-UNIX's MAUS shared memory into the USG line so SysV could support IPC mechanisms shows they were willing to try and keep things going on UNIX's old stomping ground. That said, with the institution of demand paging and such in the 80s, if such a kernel existed, it would certainly be a very, very hobbled experience compared to SVR4 on the other contemporaries.

It still gets honorable mention in the SVR4 man page:
Code:
machid(1)                USER COMMANDS                  machid(1)

NAME
     machid - get processor type truth value

SYNOPSIS
     machid [option]

DESCRIPTION
     The machid command returns a value to indicate the  computer
     processor,  model,  hard disk, and/or bus architecture.  The
     following are machid usages and the meaning of their  return
     codes.
     machid
     Exit Code      Machine Type
         0          Generic AT386 machine
         1          Compaq 386
         2          AT&T 6386 or 6386E
         4          AT&T 6386/SX
         5          AT&T 6386/25
         6          AT&T 6386E/33
        10          AT&T 6386E/33 Model S

     machid -s
     Exit Code      Meaning
         0          Bootable Non-SCSI Hard Disk
         1          Bootable SCSI Hard Disk

     machid -e
     Exit Code      Meaning
         0          AT&T 6386E/33 Model S configured correctly
         3          Not configured correctly

     machid -p
     Exit Code      Meaning
         3          Machine has a 80386
         4          Machine has a 80486

     machid -a
     Exit Code      Meaning
         0          Machine uses an AT Bus Architecture
         1          Machine uses an EISA Bus Architecture

SEE ALSO
     sh(1), test(1), true(1), uname.

NOTES
     This command supersedes the old machid family (pdp11,  u3b2,
     u3b5,  u3b15,  vax, 386, u370) manual page which is obsoles-
     cent.

        Last change: Essential/User Environment Utilities       1
 
Back
Top