I'm setting up Genera 8.3 on the XL1201 using a clean hard drive. Literally all this hard drive has on it is Genera 8.3 and these patches:
- Genera 8.3 y2k patches
- Copy world patch
- Fepfs patch
This hard drive was sold by David K. Schmidt and has had most things set up already, so we're not actually doing a full installation from CD-ROM.
Let me preface this by saying that I have read a lot of the documents on Bitsavers but have no actual experience with Genera and haven't had almost any guidance on what I'm attempting to try. My goal here is two-fold:
- Get a site properly configured so I can use networking and NFS between the XL1201, the MacIvory III and Linux (or my macOS 10 computers)
- Get things set up so I can write my first Symbolics Common Lisp program
- And be able to back this up via NFS to Linux
- Then use the Linux host to publish the code to GitHub
Before I started this session, I had set up an fspt.fspt
file, which as you can see from the directory, took two tries. I imagine Genera probably saw the lmfs.file
without one, but as the LMFS is really small (and almost full) I figured I'd better set the "partition table" up first.
First, set up the network addresses in the local.boot
file. (Page 539 of Installation Guide and Page 552 of Site Operations) In my case I used this line:
Set Boot Options :Network Address CHAOS|1200,INTERNET|192.168.1.92
After that it directs you to Halt Machine
LISP and then Reset FEP
at the FEP, to cold boot, so we can define our site from Distribution
site.
Here's how we'll set up our site:
- Site name:
Admiral
- Hosts:
- XL1201:
XENON
, Chaos 1200, Internet 192.168.1.92 - MacIvory III:
ARGON
, Chaos 1201, Internet 192.168.1.93 - Ubuntu NFS:
HELIUM
, Internet 192.168.1.98 - Internet gateway:
IGW
, Internet 192.168.1.1- (Sorry, doesn't follow element naming.)
- XL1201:
Now, Define Site (site name) Admiral
. It then asks for the Namespace Server Name
which is this XL1201 server we're calling XENON
. After entering that name, it gives a bunch more options. I'm using the defaults except for saying Standalone Site: No
. The first time I tried this I got an odd error about not have a structured directory whose last sub-component is "SITE".
. I checked (Show Directory LOCAL:>sys>site>
) and sure enough it was there. Turns out I left the >
off the System File Directory. Second try was a charm.
Command: Define Site (site name) Admiral
Defining site ADMIRAL with the local host as the Primary Namespace Server
Namespace Server Name: XENON
System File Directory: XENON:>sys>site>
Namespace Descriptor File: XENON:>sys>site>ADMIRAL-namespace.text
Default Login: Lisp-Machine
Host for Bug Reports: XENON
Local Timezone: EDT
Standalone Site: Yes {No}
{ABORT} aborts, {END} uses these values
The local host is now XENON.
[20:13:18 Namespace on DIS-LOCAL-HOST: Reloading namespace ADMIRAL.
Recent servers contacted are DIS-LOCAL-HOST]
[20:13:19 Namespace ADMIRAL has become unloaded:
No longer server for this namespace.]
[20:13:23 Translation file for IMAGES not found.
Recent servers contacted are XENON]
[20:13:23 Translation file for GRAPHICS not found.
Recent servers contacted are XENON]
[20:13:23 Translation file for JOSHUA not found.
Recent servers contacted are XENON]
Command:
The {No}
is just No
in bold. {ABORT}
and {END}
look like buttons. I'm not sure what the messages about Translation file
mean.
Now, we have a site. Yay! The manual now tells you to use the Namespace Editor
to set up the site. (See Page 441 in Site Operations) We start this using Select Activity (activity name) Namespace Editor
.
Once in there, you can do Edit Object Host XENON
and you get a huge amount of things you can edit. (See Attributes for Objects of Class "Host" in Site Operations.) Per my configuration above, I'm going to add an Address of INTERNET 192.168.1.92
(because this machine may have been built in 1992). However, we can't do it because the INTERNET
hasn't been defined yet.
We'll also mark XENON
as a Server Machine, but we must still do Enable Services
or use sys:enable-services
. After that, we click Save Object
in the bottom left. It asks us to confirm.
Now, we'll create ARGON
, the MacIvory III. We'll use Create Object Host ARGON :Copy From XENON
for this (so we don't have to enter all the services), and edit the screen appropriately.
- Machine Type: MACIVORY
- Address: CHAOS 1201
- Server Machine: No
- Default Secondary Name Server: Yes
Next, we need to create a user for myself. I'll use, naturally, dfields
, for this. However, let's first see what an existing user looks like. So, I type Edit Object User
and hit Control-/
to get the list, and the only one is LISP-MACHINE
, so I edit it.
Not much there, so let's create dfields
now. Create Object User dfields
does the trick. I set the required fields (marked by *
) and a few optional ones and save the record after confirming.
That is probably all we need to do in the Namespace Editor
until we set up TCP/IP and NFS, when we'll make an Ubuntu Linux run an NFS server for our Ivory machines.
Site Configured World
Now that we have a Namespace set up, we need to finish setting up the World. (See Page 542 of the Installation Guide)
First, we set up the SYS:SITE;SYS.TRANSLATIONS
file. This is stored in XENON:>sys>site>sys.translations
on the LMFS and already contains what looks like reasonable defaults as suggested in the manual:
(fs:set-logical-pathname-host "SYS" :translations
'(("**;" "XENON:>rel-8-3>sys>**>")))
So, let's make sure that this directory exists and looks reasonable.
It does look reasonable.
Saving the World
So, now we'll save our world. Let's actually save it twice, first as an incremental and then as a complete world.
Save World Incremental FEP7:>Inc-Xenon-Server.ilod.newest
then estimates a size and shows a herald and asks if it's okay. Then asks if the title is okay, which I change, and then does the save.
(Shoot, I should have taken a screen shot of the save, it wiped the screen after a short while.)
Then, it says it saved it, and if I wanted to update the boot file (which I do).
Ugh. After this I noticed that I had set the clock incorrectly when doing all these things. It was set 10 years earlier. Oh well!
TCP/IP
Let's get TCP/IP running, although Symbolics calls it IP-TCP
(which probably makes more sense anyway). There's a whole Symbolics IP/TCP Software Package document to read about this.
IP/TCP
This disk already has IP/TCP restored, so no need to do that. So, follow the manual from page 1232.
(si:login-to-sys-host)
Load System IP-TCP
Be careful with that last command, as it defaulted to IP-TCP Documentation
before I could abort it.
(It turns out that this may be unnecessary - see herald above.)
Now we need to enable the Internet namespace.
(tcp:initialize-internet-namespace)
It opens up a "dialog" and requires answers, but the manual doesn't really give much information, so I'll wing it, and then hit END
.
Now, it suggests another Save World
, so here goes.
Well, that clearly didn't work: Error: This world has already been disk saved. It doesn't work to disk save it again.
Presumably this means anytime you save a world you need to cold boot to save it again? I don't know, but let me try a Complete instead of an Incremental. Nope, that also didn't work.
So, I guess I have to Halt Machine
and cold boot Genera. When the FEP prompt comes up, best to hit REFRESH
to clear the screen of distractions.
Then, Clear Machine
and Hello
. Looks like I need to update the local.boot
file with the new Internet address. Then Boot
, which loads the Inc-Xenon-Server
we saved above.
This time, however, the startup gives us an error because we created it couldn't resolve the new INTERNET. Hm. It asks two questions for which I just hit RETURN
and then booted.
Now, back to (si:login-to-sys-host)
.
Oddly, it used the 2006 time, but oh well, I fixed it... again. Time to Save World
, which works, but for whatever reason it doesn't show IP-TCP loaded in the herald.
Anyway, the world saves, but I need to edit the local.boot
file.
Now, continue with the TCP/IP installation (tcp:install-nic-host-table)
. This, unsurprisingly, fails, trying to connect to 192.67.67.20
on port 101
(hostname
) per RFC811. This service has of course been replaced by DNS.
Oh well, ABORT
that. I'll think about reverse engineering what it wants to do here later or just ignore it for now.
It also says I need to set an Internet-Domain-Name
attribute of the local namespace. So, Select Activity Namespace Editor
then Edit Object Namespace Admiral
. I'll put lisp.engineer
in there, a TLD that was not foreseen over two decades ago, I'm sure.
Next, I'll add the Internet address to the two hosts. It seems that XENON
already has its address in there.
Now update ARGON
appropriately.
Now let me create HELIUM
, my Ubuntu Linux NFS server. (I laughed to myself knowing that linux.local
mDNS name wouldn't work on Genera.)
I then thought I'd check out what the INTERNET
Network was, but couldn't, despite being told it was a completion:
Oh well, moving on. Since the world was just saved, it's best to restart it, but before that, I wanted to check if the Internet on the XL1201 is actually running from my iMac:
Admiral-iMac:~$ ping 192.168.1.92
PING 192.168.1.92 (192.168.1.92): 56 data bytes
64 bytes from 192.168.1.92: icmp_seq=0 ttl=63 time=2.077 ms
64 bytes from 192.168.1.92: icmp_seq=1 ttl=63 time=2.175 ms
64 bytes from 192.168.1.92: icmp_seq=2 ttl=63 time=2.087 ms
^C
--- 192.168.1.92 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.077/2.113/2.175/0.044 ms
Admiral-iMac:~$
Bingo! Halt Machine
, Clear Machine
, Boot
to cold boot the world and continue.
Using IP/TCP?
Looking ahead in the manual (p. 1236), it looks like you have to run Enable Network INTERNET
. So, I logged in and did that.
Looks like we can send a ping to our Internet Gateway (that we previously created as named IGW
) with the form (tcp:send-icmp-echo "IGW")
(see page 1260). I confirmed that IGW
actually exists in the Namespace Editor
.
However, you can't just put in an IP address; that gives an error.
You can however give the IP address as INTERNET|192.168.1.1
and giving a non-existent host's IP address causes it to return NIL
as you'd expect.
Future:
Things to investigate in the future:
* DNS (page 1237)
* Symbolics services on TCP/IP (page 1234)
NFS
Like TCP/IP, there's a Symbolics Network File System (NFS) User's Guide to be read.
This says the XL1201 can act as an NFS client and server. For now, let's just focus on client. However, the manual indicates (page 1285, unnumbered):
To configure your system as an NFS Client, first load RPC and IP-TCP and then load the NFS Client.
RPC
Well, shoot. Now I have to figure out how to install this RPC. Obviously, Load System RPC
should work, and indeed it is an option.
There's a whole manual, Networks, which talks about RPC but I don't see anything about the "Load System RPC" in there.
Actually loading the system, however, fails looking for some file called SYS:EMBEDDING;RPC;REMOTE-CALL-RUNTIME.IBIN.36
.
Let's see if we can find it. It looks like this stuff probably belongs in XENON:>rel-8-3>sys>rpc>
but I don't see it there. Lots of other systems have directories in there, but all the ones between P and S are missing (if any).
Let's see if I can do a find
equivalent, using Show Directory XENON:>**>rpc.*.newest
.
Found it! Looks like the file remote-call-runtime.ibin
does not exist, but a .lisp
does. Presumably I just need to compile that file. Looks like Compile File
might do the trick:
This time, Load System RPC
gave the same error, but I told it to supply a different pathname, and just used the same thing with .NEWEST
and it accepted it. However, it wanted another file for which there is no .ibin
. I'm going to fire up another Lisp with SELECT control-L
and just compile these in the other window. This works.
However, after a few files, I couldn't stand it, so I thought there's a better way. I asked and ams answered to use Compile System
, so let's try that.
So, that compiled things. However, Load System RPC
is still asking for the wrong file versions. ams came through again and suggested using the version keyword. Load System RPC :Version Latest
worked.
RPC Unnecessary?
From Page 1289 of the NFS User's Guide:
Note that you only have to load Symbolics RPC separately on 3600-family machines.
Okay, so that might explain why the whole RPC thing didn't need to be loaded. I'll have to retry this on a clean world, I guess.
Going back to look at the detailed herald above shows that, yep, RPC was loaded and I missed it. <sigh> So, if we save this world, don't use it.
Linux NFS Server
On Ubuntu 12.04 LTS:
apt-get install nfs-kernel server
mkdir /srv/genera ; chmod a+w /srv/genera
- Edit
/etc/exports
and add/srv/genera
and/etc
(page 1286)
/srv/genera 192.168.1.0/24(rw,all_squash,sync,no_subtree_check)
/etc 192.168.1.0/24(ro,all_squash,sync,no_subtree_check)
service nfs-kernel-server reload
- Test with
showmount -e
linux:/srv/genera# showmount -e
Export list for linux:
/etc 192.168.1.0/24
/srv/genera 192.168.1.0/24
Admiral-iMac:~$ showmount -e linux.local
Exports list on linux.local:
/etc 192.168.1.0/24
/srv/genera 192.168.1.0/24
- Mount and test using NFSv2
Admiral-iMac:~# mount_nfs -o rw,vers=2,resvport linux.local:/srv/genera /private/nfs
Admiral-iMac:~# ls -l /private/nfs
Admiral-iMac:~# yes | head -10000 >/private/nfs/testfile1
Admiral-iMac:~# ls -l /private/nfs
total 40
-rw-r--r-- 1 65534 65534 20000 Jun 26 23:48 testfile1
Admiral-iMac:~# umount /private/nfs
Admiral-iMac:~# mount_nfs -o ro,vers=2,resvport linux.local:/etc /private/nfs
Admiral-iMac:~# ls -l /private/nfs/{passwd,group,mtab}
-rw-r--r-- 1 root wheel 688 Feb 28 2013 /private/nfs/group
-rw-r--r-- 1 root wheel 625 Jun 26 19:51 /private/nfs/mtab
-rw-r--r-- 1 root wheel 1123 Jun 26 19:51 /private/nfs/passwd
Admiral-iMac:~# head -2 /private/nfs/mtab
/dev/mapper/vg1-root / ext4 rw,errors=remount-ro 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
linux:/srv/genera# ls -l
total 20
-rw-r--r-- 1 nobody nogroup 20000 Jun 26 23:48 testfile1
So, NFS server is working in a minimal fashion.
NFS Client
Okay, so Load System NFS Client
. (I note for later that there is no NFS Server
system shown in the system list.)
Now, we need to tell our Namespace that we can use NFS on HELIUM
with Add Services To Hosts FILE UDP NFS HELIUM
command (first page of the NFS User's Guide).
Seems that there is a Show NFS
command, including Exports
and Mounts
.
Now, it seems that various UNIX properties must be set on HELIUM
(page 1288), using the Namespace Editor
. Viz:
Now, I can't list any files. There are a lot of services, so I did Enable Services All
but doesn't help. Still doesn't help.
Well, I guess I'll come back to this another day.