It’s been a long while since I’ve posted anything VAX BSD related.  So I found this ISO image a while back that had all these old versions of BSD on them, but sadly many of them are incomplete, missing parts, and give really no clue on how to use them.  There is even some duplication thrown in there just to complicate things further.  So I figured I’d try one of them, an interim release of 4 BSD and see if I could just overlay a newer release version and see what I get…
VAX780 simulator V3.8-1 Listening on port 23 (socket 156) loading ra(0,0)boot Boot : ra(0,0)vmunix 215688+63964+69764 start 0xf98 4.1c BSD UNIX #2: Tue Aug 28 09:39:12 PDT 1984 real mem = 8384512 avail mem = 7036928 using 148 buffers containing 838656 bytes of memory mcr0 at tr1 mcr1 at tr2 uba0 at tr3 hk0 at uba0 csr 177440 vec 210, ipl 15 rk0 at hk0 slave 0 rk1 at hk0 slave 1 uda0 at uba0 csr 172150 vec 774, ipl 15 ra0 at uda0 slave 0 ra1 at uda0 slave 1 zs0 at uba0 csr 172520 vec 224, ipl 15 ts0 at zs0 slave 0 dz0 at uba0 csr 160100 vec 300, ipl 15 mba0 at tr8 root on ra0 WARNING: should run interleaved swap with >= 2Mb Automatic reboot in progress... Tue Aug 28 09:54:53 PDT 1984 /dev/rra0a: 836 files, 6010 used, 1419 free (35 frags, 173 blocks) /dev/rra0h: 6598 files, 41780 used, 320080 free (160 frags, 79980 blocks) Tue Aug 28 09:54:58 PDT 1984 local daemons: telnetd ftpd tftpd syslog sendmail. preserving editor files clearing /tmp standard daemons: update cron accounting berknet mail printer. starting network: rshd rexecd rlogind rwhod routed. Tue Aug 28 09:55:00 PDT 1984 ucbmonet login: root Last login: Tue Aug 28 09:44:44 on tty00 4.1c BSD UNIX #2: Tue Aug 28 09:39:12 PDT 1984 Master source now lives here; freeze your 4.1c stuff now. As far as the laws of mathematics refer to reality, they are not certain; and as far as they are certain, they do not refer to reality. -- Albert Einstein monet#
Pretty cool. Â And oddly enough googling around doesn’t seem to find much about people running 4.1c BSD, but it is significant with the first version of sendmail being bundled, and rogue.
The release also includes TCP/IP support but I haven’t the slightest idea how to use it. Â I suppose reading the instructions is key. Â But I thought I’d share this little fossil first.
For those who want to try it, you can download it here. Â It’s using SIMH, so if you aren’t running Windows, bring your own VAX 11/780 and you’ll be good to go.
Is 4.1a on there?
Its the first UNIX with TCP/IP stack.
From what I can gather, 4.1a included the BBN stack which is why it isn’t on there…
This pretty much sums it up:
# ls
.MAP TAPE doc games ingres lib src
# ls src
.MAP cmd games
# ls src/cmd
.MAP berknet fed learn oldcsh vpr
# ls src/games
.MAP banner.c compat hangman.c rain wump.c
aard bcd.c cribbage mille rain.c zork.c
adventure boggle ddl monop snake
arithmetic.c canfield.c doctor mpu worm.c
backgammon chess.c fish.c number.c worms
backgammon.c ching fortune quiz.c worms.c
I’d assume the BBN stuff isn’t BSD licensed.. I suppose this was another reason behind BSD Sockets … It’d be cool to get tapes from the era, or even SYSVr2 or something but that seems … so unlikely.
The SCCS version control has the BBN TCP/IP.
I put a repo up with the SCCS from 4.1c.1
https://github.com/ambiamber/4.1c.1-sccs2git
A/UX 0.7 kernel src contains sys v R2 code
Interesting.. and I see here it is refered to as Oreo..
http://macintoshgarden.org/apps/aux-apple-unix-68k-version-07
The “screenshot” here is from the included file:
./sys/psn/io/screen-data.c
From one of the original A/UX developers:
The file is actually a bitmap (640×480). When you decipher it, you find an image with a fake menu bar, and a fake window having the name ‘OREO Initial Console Emulator’. This was fluff to make the low-level boot look more Mac-like. “Oreo” was another code name – we had tons of codenames – the code name was changed every few months.
I need to update this but Shoebill can run A/UX 0.7
http://gunkies.org/w/images/8/8d/AUX_0.7_desktop.png
First I was trying to see if it is possible to back-port SunOS 3.4 to VAX since there is a lot of abandoned-in-place VAX code. I’m still working on it from time to time. So I started in a world with “wow, look at all the VAX code in SunOS” and then discovered the other side of the mirror, 4.1cBSD is full of Sun code that was removed in 4.2BSD. Analysis of BSD SCCS shows that Bill Joy had two different account names, “bill” and wnj. If you add up the count of the BSD SCCS commits from both accounts, you get 1536 (wnj) + 911 (bill) = 2447 compared to bostic’s 18203 and mckusick’s 11687 commits. This can be explained if Joy’s SCCS commits with Sun code were expunged. I’m guessing the code was expunged because it was deemed proprietary to SMI. That leads me to wonder if 4.1c can run on a Sun-2.
Wow now that is interesting!
There is also that 4.3BSD UWisc that I think incorporated some SUN stuff but I think it was all public by then?
It would be interesting to see how far you could go with 4.1c as well!
Now I found out that 4.1c source code is full of #ifdef sun and there is mc68010 code inside those ifdefs. The SCCS files show “merge sun” and “purge sun #ifdef’s” in the delta commentary (“log messages”). There is also DECNET source code in a directory named “sys/netdecnet”. There are two USENET posts that you can see on Google Groups where the writer is asking “where’s my decnet in 4.2 BSD like it was in 4.1c?” The VAX was used to bootstrap early SunOS by cross compiling 4.1c BSD into mc68010 code.
Unlike most version numbers that increment as time passes, 4.1c.2 has newer contents than 4.1c.1.
Since the rootfs is so small it is very likely that /a is a mountpoint for a second disk, see /etc/passwd for /a/guest/* “home” directories.
I transfered the 4.1c.1 source code into the disk image in ‘4.1c BSD.7z’. While compiling (cd /usr/src; make) there were a lot of strange crashes. As it might be kernel bugs, I decided to try the newer kernel from 4.1c.1 but the partition sizes in uda.c had changed, apparently for two reasons. First the swap space and /usr were enlarged. Second the partitions are no longer aligned on block boundaries, instead they are aligned on cylinder boundaries. I think that causes a gap between A and B (possibly other gaps too). There is no sample fstab in 4.1c.1 but 4.2/etc/fstab.ra81 and 4.2/usr/src/sys/dist/fstab.ra81 both still have /usr on H.
I think the most sensible thing to do is to migrate by creating a RP06 disk and copy everything to that then boot from the new kernel as the partition sizes did not change, even in 4.2 they are the same.
Oops, I should have wrote:
I transfered the 4.1c.2 source code into the disk image in ‘4.1c BSD.7z’. While compiling (cd /usr/src; make) there were a lot of strange crashes. As it might be kernel bugs, I decided to try the newer kernel from 4.1c.2
Darn those backward version numbers. 🙂
Every time I think I got it all figured out, another idea…
I think they deliberately left the A partition (root file system) the same size (even though that causes a gap between the A and B partitions) so you can backup /usr to tape with tar, move the new kernel into place and boot from it, mkfs the H partition (/usr) wiping it while setting the correct file system size, and then restore the tar of /usr.
Three things:
1. I goofed about which came first. 4.1c.1 is older than 4.1c.2
2. The only “tape” on the CSRG ISO with DECNET is 4.1c.1 but it might not be the best version as newer DECNET could be in SCCS, I haven’t checked yet.
3. The “#if sun” (proto-SunOS) code is really in SCCS except for the stray “files.sun” and one header file.
crazy I never dug enough. amazing
I’m using this for updates:
https://retrocomputing.stackexchange.com/questions/27090/a-sunos-kernel-configuration-file-in-the-csrg-isos
Seems that only the DECnet parts are of interest to me now and I don’t know beans about DECnet.
The “SunOS in BSD” “smoking gun” commit message:
subr_prf.c
D 4.23 82/10/31 00:26:35 root 29 28 00016/00001/00239
MRs:
COMMENTS:
first version with 68k stuff
Although I never found a working copy of SunOS in BSD, here are my findings:
1. Sun Microsystems supposedly had a VAX-11/750. Monet was a VAX-11/750. Was Monet really Sun’s VAX? A VAX-11/750 is sizeable chunk of change, especially one that you would only use for a short while to bootstrap SunOS on.
2. It’s clear from the residue that BSD had Sun code. Some breadcrumbs are that SCCS like RCS operates on individual files, unlike Concurrent Version System (CVS), Subversion (SVN), git and so on which can operate on groups of files. This makes it possible to expunge files and directories. If there was a hypothetical /sys/sundev directory on a VAX at UCB it would be possible to “rm -r” it along with the SCCS version control for all the files in that directory. Code like “#if sun” and “#include ” in files that contain code that cannot be expunged will still be visible in the SCCS and backup tapes, etc. The `files.sun` file is probably due to an oversight causing it to not be removed along with other files until it was discovered later. The sun code was removed by the time of 4.2BSD release. Some traces of it still exist in SCCS and old backup tapes, but that code is effectively stubbed out due to parts that it refers to not being recovered as of yet.
3. The missing 4.1b BSD could be missing because it was full of SunOS code.
Have you seen the CSRG DVD‘s?
Unlike the CD-ROM set, they are full of interesting discovery from the infamous lawsuit. There is all kinds of interesting stuff on there!
No, I bought the CD-ROM set some time ago. Thanks for the tip.
I uploaded my 4.1c.1 BSD disk image to the IA
https://archive.org/details/4.1c.-1.tar
the DVD was far more interesting than the CD-ROM set! It helped me along with a bunch of Mach stuff as well! The 386BSD discovery was interesting as well
In the past I started to collect information about JHU/UNIX at BRL
https://gist.github.com/ambiamber/386f7caa72c5e3cf4e2ce2f5ccd281ce
The CSRG-DVD has the first source code artifacts from it that I’ve seen. Of note, they had very original ideas about how to build a UNIX distro.
there was also something else going on with Lucas Film in early Unix. Not sure what that was all about.
My list of artifacts and my opinion about them have changed a lot since my June 11, 2023 post here. If you want to see them, you can go to the Wikipedia SunOS article and view the Talk page for that.
4.1c.1 has kernel source under sys/ while 4.1c.2 under a/ for instance
with CSRG ISO #1 mounted on /a/1 you get:
$ cd /a/1
$ ls -dl 4.1c.1/a
ls: cannot access ‘4.1c.1/a’: No such file or directory
$ ls -ld 4.1c.1/sys
drwxrwxr-x 21 root root 4096 Aug 11 1992 4.1c.1/sys
$ ls -dl 4.1c.2/a
drwxrwxrwx 3 root root 2048 Feb 27 1993 4.1c.2/a
4.1c.1 has kernel source is more recent than 4.1c.2, for instance
$ head -n 1 4.1c.1/sys/sys/init_main.c
/* init_main.c 4.49 83/04/04 */
$ head -n 1 4.1c.2/a/sys/sys/init_main.c
/* init_main.c 4.47 83/03/01 */
User programs (“userland”) version are the other way around, for instance
4.1c.2 usr/bin/date.c is newer than 4.1c.1 bin/date.c
$ head -n 2 4.1c.1/bin/date.c | tail -n +2
static char *sccsid = “@(#)date.c 4.2 (Berkeley) 2/26/83”;
$ head -n 2 4.1c.2/usr/src/bin/date.c | tail -n +2
static char *sccsid = “@(#)date.c 4.3 (Berkeley) 2/28/83”;