Yet another update! networking for 4.2 BSD

4.2BSD telnetI have released yet another interim update to my VAX BSD on Windows installer package.

I redid the 4.2BSD package, so anyone that has downloaded, will want to download again (there were 2 downloads… )

Anyways I found a source tree of 4.2 BSD with the if_de.c and the same fix for the 4.3 BSD’s worked fine for this one as well. Now you can telnet into 4.2 BSD!

You can download it from here:

It is worth noting that I didn’t even look at the TCP/IP stack so it’s possible that you could be hit with issues with negative numbers in the TCP sequencing, and other weird 4.2 to 4.3 bugs.

Also attempting to fix locore.s to allow more then 8mb of ram seems to have a kernel that hangs right after mounting the root partition.. If anyone remembers what to do to fix it, I’d appreciate it. I see in google’s usenet cache, they had the same issue at Nova University, but I didn’t see any follow up for a fix.

This update now brings all of the 4BSD packages on Windows up to a network operational level. Also please note that they all use the same user mode mapping ports (ie 42323 to 23 into the VM) so you currently cannot operate all of them at the same time. If that is an issue for anyone you can regen the exe’s from the SIMH project page:

Otherwise you can just contact me.


10 thoughts on “Yet another update! networking for 4.2 BSD

  1. Wow! Just what I’m looking for. I’m reading ‘The Cuckoo’s Egg’ and BSD 4 features prominently. I figured i’d check it out and I found it 🙂

    What did you use to build the code from the Unix archive??

    Thanks for your efforts on this!

  2. I wish I could figure out how I got this kernel with the if_de.c … I know all of the 4.x/4.3 BSD stuff I've downloaded from the unix archives (TUHS), but somehow I've managed to get 2 different versions… When I get back home I'll have to try to figure it out.

    As for the tools, they are in the tape image, it's just cc & make.. Configuring a kernel requires the 'config' command, just as it does in modern OpenBSD. I've manage to build a few packages for 4.3 Uwisc BSD, 4.2 is just too old for most modern software… I did manage to get an ancient irc client to build, but almost all new irc servers have changed since then, and the client doesnt work. Lynx has a massive switch statement that overloads the assembler in both.. I'm hoping that binutils can sort this out on RENO but I'm on the road at the moment. I'm going to put together a disk image for Reno that only consumes some 178mb of disk space vs. the 2+ GB of my current setup.. I tend to forget that most people are OS "tourists", but at the same point, editing the ini file, and adding virtual disks is a heck of a lot eaiser then a real 11/780!!

    Score a first edition copy of "Unix System Administrator Book", and check the chapter on adding disks!!

    I've also got to find a copy of that version of Emacs with the hole.. I figure someon *has* to have a copy out there somewhere!!

  3. Thanks for the info! So you build 2.2 from the tape images on a different OS under the VAX emulator, or did you cross compile from Windows/Linux?

    I’ve been running Linux since around 99′ but anything pre Linux is “before my time”. Playing with old OS’ is such fun though! Hercules (running MVS) is my other historical interest.

    Have you noticed the users in the passwd file? Strange that BSD was distributed with this..but it’s the names that get me,some computing royalty there!

    About Emacs..have you tried asking RMS if he’s got it? I know he’s into other things these days but he might have stuff from those days? Would be great to examine!

  4. I'm pretty sure the build I'm using is using the SIMH tape image that I've uploaded onto the sourceforge site. As for building the kernel, I did that under the emulator.. I suppose I *could* cross compile it, but that'd require some serious effort!

    Thanks to SIMH you can run the full enviroment under windows/linux/osx (even MS-DOS!).

    It's funny you mentioned the password file, the first time I booted up a 4.2 I was so surprised, that I had to email the TUHS list asking if it was 'ok' for that tape dump to be in the 'wild' as it seemed to include just a little too much information..

    I have *NOT* run any password cracking software on the file, as it'd be just wrong, but I guess if they have distributed their password on tapes they are well aware of this… 😉 Heck for all I know their password IS 'password' but I haven't tried to crack users the likes of DNR & friends.

    I thought about asking Stallman if he had any of those old broken releases, but I wanted to make sure this 'release' of it was usable before doing some kind of cuckoo's egg special.. I know Clifford is more into educating kids these days (he has a great lecture on measuring the speed of sound on youtube!) but I get the impression that he is trying to distance himself from this old stuff as he want's to be someone new…. Or that was my take.

    I've got to re-read the book and see if anyone that he worked with at UCB is active online, and see if by any crazed chance they have any tapes from back then… It'd be cool to run the same software as they did back then, kind of the trace the hacker experence….

    But then I don't know if they would hold onto relics like this, much like the fabled notebook for the hacker hunt.

  5. Ok I just ran a diff on a 4.2 VM between the kernel source I have with the if_de, and the others without and the only real difference is:

    msg_accrightslen in socket.h

    the following in GENERIC:
    device de0 at uba? csr 0174510 vector deintr

    in files.vax
    vaxif/if_de.c optional de device-driver

    Various tab corrections, and of course the if_de.c code with the header:

    static char *rcsident = “$Header: if_de.c,v 1.1 84/02/01 17:18:51 mike Exp $”;

    Writen by Lou Salkind @ NYU.

    I’m wondering now if I found a diff somewhere to patch in if_de support…

    It’d be interesting to check New York University, for history of all of this… I’ll be back in the city in 3 weeks time…


    It appears that it is a diff, I just remembered finding this in the old usenet archives..

    Who would have thought that postings from 1985 would “save the day” in 2009.

    This is the link to the message.

  6. Hi… I did this a little bit differently, by backporting it from the csrg sccs archive:

    It looks like the same code, but fixed up a little bit.

    If works, and I can telnet between systems, but there’s a lot that behaves oddly. It sends out an arp for every connection, regardless of whether it’s on the network or not:

    bsd42# netstat -i
    Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Collis
    de0 1500 home bsd42 800 0 517 0 0
    lo0 1536 loopback-n localhost 20 0 20 0 0
    bsd42# grep home /etc/networks
    home 192.168.102
    bsd42# grep bsd42 /etc/hosts bsd42

    bsd42# telnet

    root@agarvin-home:~# tcpdump -i tap14 arp or port 23
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on tap14, link-type EN10MB (Ethernet), capture size 262144 bytes
    00:30:35.924172 ARP, Request who-has tell, length 46
    00:30:36.716690 ARP, Request who-has tell, length 46
    00:30:37.716663 ARP, Request who-has tell, length 46
    00:30:38.717758 ARP, Request who-has tell, length 46
    00:30:39.714911 ARP, Request who-has tell, length 46

    If I ping it from outside its network, it doesn’t respond, but it sends continuous arp who-has’s:

    00:27:17.529456 IP > ICMP echo request, id 7941, seq 50944, length 64
    00:27:18.553857 IP > ICMP echo request, id 7941, seq 51200, length 64
    00:27:19.590349 IP > ICMP echo request, id 7941, seq 51456, length 64

    root@agarvin-home:~# tcpdump -i tap14 arp
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on tap14, link-type EN10MB (Ethernet), capture size 262144 bytes
    00:27:29.879902 ARP, Request who-has tell, length 46
    00:27:31.003811 ARP, Request who-has tell, length 46
    00:27:31.970587 ARP, Request who-has tell, length 46

    I’ve got RIP running and I can see it getting routing updates but it’s not updating its routing table.

    I’m not sure if I did something wrong or if the network stack was just this immature in the 4.2 days.

    Anyway, lot of fun.

      • I discovered what’s wrong with the route daemon: the UDP packets it sends out have incorrect checksums. I think the Linux network stack may be dropping them–certainly, it filled my dmesg log with with.

        Here’s my write-up on the procedure, mostly written during two very long webexes today. Coworker saw what I was doing and recommended asciidoc:

        • It wouldn’t surprise me. For a long while there was a 4.2BSD compatibility ‘fix’ in later 4.3BSD, which I’m sure Linux wouldn’t have, as it never existed beside 4.2BSD

Leave a Reply