How do I get my NeXT Cube to run Plan 9

Configuration

Terminal
NeXT Cube '040 25 MHz
Server
DEC XL Server 590 running NeXTSTEP 3.3 and u9fs


Set up u9fs

1. Download and patch u9fs for NeXTSTEP

The u9fs downloaded from AT&T plan 9site does not compile on NeXTSTEP due to the lacking of some library functions like strdup. However, it is trivial to patch it. I have put together the diff. I assume that the source code for the u9fs is installed at /usr/local/plan9/unix/src/u9fs and the plan 9 distribution is installed in /usr/local/plan9.

  # cd /usr/local/plan9/unix/src/u9fs
  # patch < u9fs-patch-for-NeXTSTEP.diff.txt

Before compile the file, take a look at the Makefile. There is a flag for whether the underlying arch is big or small endian. Make sure to set it properly according to the NeXTSTEP machine you have.

  # make

2. Install u9fs

I install u9fs in /usr/local/plan9/unix/bin.
  # make install
/etc/inetd.conf
Add the following entry to the /etc/inetd.conf.
  # Plan 9 file server
  u9fs stream tcp nowait root /usr/local/plan9/unix/bin/u9fs u9fs /usr/local/plan9
Services in NetInfo database

Run the following command as root to add the u9fs services to the service databse.

  # echo u9fs 564/tcp u9fs | niload services .
Restart inetd
  # ps -aux | grep inetd 
  # kill -HUP [inetd pid]

3. Copy Unix authentication files

The u9fs uses UNIX style authentication and runs with chroot(). You need to copy several files into the /usr/local/plan9/etc directory.
/usr/local/plan9/etc/hosts
Download the files from NetInfo:
  # cd /usr/local/plan9/etc
  # nidump hosts . > hosts
Make sure the IP for the NeXT machine and the IP for the file server is in there.
/usr/local/plan9/etc/passwd
You need to add at least two users none and boote to the NeXTSTEP system. The shell and home directory of these two users are not important. Fire up UserManager.app to add the users. Then, add the passwd information to the passwd for u9fs.
  # cd /usr/local/plan9/etc
  # nidump passwd . > passwd
/usr/local/plan9/etc/hosts.equiv
  # cd /usr/local/plan9/etc
  # echo next > hosts.equiv
         ^^^^ file name for you black machine
/usr/local/plan9/.rhosts
If you are running u9fs as root, you also need this files.
  # cd /usr/local/plan9
  # echo none next > .rhosts
         ^^^^^^^^^^^^^^^^^^^^^^^ put all account for Plan 9 user

4. Edit the /lib/ndb/local in Plan 9

Check the man page on ndb file format. The terminal needs this file to make the network function properly.


Set up netboot for NeXT

1. Configure bootp

Edit /etc/bootptab
Here is the content of my /etc/bootptab.
  # directory contain boot
  /usr/local/plan9

  68020/9nextstation

  %%

  next 1 00:00:0f:00:9b:ba 192.42.172.2 68020/9nextstation
Restart bootpd
Run these commands as root.
  # ps -aux | grep bootpd
  # kill -9 bootpd
  # /usr/etc/bootpd

2. Get boot program for NeXT machine

The boot is located in /private/tftpboot/boot. Copy it to /usr/local/plan9.However, the newer version does not do the initialization properly and this causes the plan 9 to hang during boot time. I used the boot from NeXTStep 2.1. If you don't have access to NeXTStep 2.1 boot, peter@plan9.com sent me a suggestion about how to get boot in 3.x to work. See the following.

Boot the black machine

Here is the moment you have been waiting for.

1. Get into ROM monitor
Press Cmd-Cmd-~ and type halt.
2. Netboot the NeXT
Use the following command to net boot the NeXT in ROM monitor.
  > ben 68020/9nextstation
If you are using boot from NS 2.1, you should see the Plan 9 coming up on the screen. If you use later version of the boot program, the system will hang with Exception #4. Don't panic yet. The following may fix it. Thanks to peter@plan9.com.

A quick fix if you don't have an early version boot program is to start the kernel manually with the following commands to the ROM monitor, after the exception occurs:

  > r pc
  ? 4000000
  > c
This changes the program counter to the correct entry point 4000000 and then execution is begun at that point.

I haven't tried that but let me know if you do. If everything goes well, you need to tell the black box what is its IP and where the file server is.

3. Login to Plan 9

It does not matter what value you set the authentication server since it will not be used by the client.

[boot message ...]
root at (tcp il)[il]: tcp
my ip address[no default]: [IP of the next machine]
my net mask[no default]: [netmask]
my gateway[no default]: [IP of the gateway]
file server[no default]: [IP of the file server]
authentication server [0.0.0.0]: [RET to take default][
user[none]: [RET]

4. Plan 9 on black box

At this point, you should be running Plan 9 on the NeXT box. The NeXT mouse should be working and use Alt-RightMouseButton to get the middle mouse button.


How about security

The u9fs uses Unix security model and it will allow the connection with no password. If your file server is on the net, you may want to protect it with tcp wrapper or TISfirewall toolkit.