NeXT Computer

From ShawnReevesWiki
Revision as of 21:33, 3 January 2012 by Shawn (talk | contribs)
Jump to navigationJump to search

Provenance

We acquired a NeXT Computer system from Cornell University, 2011, to be part of our Museum of 20th Century IT. It was used by Computer Graphics staff and researchers to explore interactive media in the early 90s.

Description

It is the original, cube-shaped CPU, with a matching monitor and laser printer. The CPU also has an extra card called NeXT Dimension, allowing color graphics.

In its original configuration, the mouse plugs into the keyboard, which plugs into the MegaPixel display, which plugs into the main case. If we want to skip the MegaPixel display because we want to use solely the color monitor, we have a peripheral, SoundBox, which can go between the keyboard and the main case. The SoundBox also has a microphone input, headphone output, stereo RCA output, and a speaker.

Refurbishing

Disassembly

Note, I usually keep track of where screws go by keeping the screws in threads which they threaded to attach whatever they attached.

Rear cover
There are four screws permanently attached to the rear plate that connect it to the body. A T15, or possibly the next size larger, or 3mm allen key can turn them. The fan is attached to the rear cover, so remove the cable between the power supply and the fan to set the rear cover aside.
Main boards
Both the motherboard and the NeXT Dimension board slide out from the backplane that connects all the boards. There are easy-to-remove cables between the drives and the motherboard that one should remove after sliding the motherboard out partway.
Center tower
The center tower holds the power supply and the drives. It is held to the body by two screws on the lower inside. Once those screws are removed, the whole tower slides out.
Drives
There are screws on either side of the center tower attaching the drives.

Cleaning

  • Disassemble the computer.
  • Vacuum the fan, the rear cover, and the inside of the case. Turn the case upside down and vacuum the vents.
  • Vacuum the boards, but beware of static electricity that can build up on the nozzle, don't let it touch circuits.
  • Vacuum the center tower, the vents on the power supply
  • Vacuum the hard drive and optical drive.
  • Wipe the inside of the case with a damp cloth.

Backup

Backup entire HD

While both systems are off, remove the NeXT HD and connect it via SCSI cables to another computer that has SCSI and also a UNIX type OS. I use a Beige G3. Use the dd command in the terminal or Apple's Disk Utility to make an image of the entire drive. Save it to CD or DVD, maybe twice. These computers are so rare it's not wise to depend on easy access to system files on the internet.

My specific experience
I removed the drive, and attached it to a power supply in a home made SCSI enclosure, and attached it to my Beige G3 via SCSI. I turned on the power supply in the enclosure, then my G3, starting in OS X 10.2. Apple System Profiler showed the hard drive (controller) and its SCSI ID, but not the size, and the drive did not spin at all. After turning everything off, I tried a jumper on the pin that makes the HD spin on power-up instead of waiting for the computer to send an instruction, and started again, but the drive LED then flashed 1Hz, which means error. I thought maybe the power supply was inadequate, so I used the power supply from a tower computer, with the jumper to make the HD spin on power up. Voilà!
I opened Terminal and entered the list command (ls /dev) to see what the system called the attached HD—disk1. I confirmed that disk0 was my internal hd and disk1 was the external by counting the partitions. Then I tested to see if I could copy a couple blocks from the attached HD:
dd count=2 if=/dev/disk1 of=testtwoblocks.img
It was a success, so I imaged the entire drive, which took 50 minutes, 230328 bytes per second:
dd if=/dev/disk1 of=NeXT-661.img
I later realized that I wanted separate images of the two partitions on this drive, but had changed data on the original drive, so I couldn't just image each partition. Instead, I needed to chop this image into pieces corresponding to each partition. To tell exactly where the each partition started, I went to the original computer, asked it to show me the data at the beginning of each partition, and searched for matching data on the image. To see the data that starts a partition, use dd command on the original machine to get the first block of data, and od to format the data for readability:
dd if=/dev/sd0b count=1 | od -h
In my case, I then used a program, HexEdit to determine where in the image file the first several bytes match the first several bytes of that output. For example, say the second partition started 358560 kB into the whole-disk image. Use dd to split the image:
dd if=/path/to/whole-disk.img bs=1024 count=358560 of=Partition-A.img
dd if=/path/to/whole-disk.img bs=1024 skip=358560 of=Partition-B.img
Backup partitions of HD

A NeXT HD may well be split into multiple partitions. Mine has a system partition, mounted as root "/", and a Users partition, which, during system startup, is mounted to the /Users directory. Look in the file private/etc/mtab to see what's mounted at startup:

more /private/etc/mtab

If there's more than one partition, you might want to make separate images from each:

dd if=/dev/disk1s0 of=NeXT-part0.img
dd if=/dev/disk1s1 of=NeXT-part1.img
etc.
Backup folders and files

I use the tar and gzip command-line programs, or gnutar, to create files that maintain their integrity across systems and disks. I compress them to quicken transfers across ftp over ethernet. For example, to compress a folder, I open Terminal and use gnutar, note the period after the folder to indicate copy all the contents:

gnutar -c -z -C /path/to/folder . -f folder.tar.gz

-c means create a new archive, -z compress using gzip, -C switch input folder to the following argument, . copy this folder, -f save the file as the following argument.

Battery

There is a 3V BR-2/3A lithium battery. Hopefully it hasn't leaked onto the motherboard. If so, remove salts with water and a toothbrush, and allow to dry completely. Removing the battery for a day or so erases the parameter memory (PRAM), useful if the computer has a hardware password that is forgotten.

Startup

Hold command and ~ at startup, after the test, when the system just starts putting out text messages, to enter a boot menu. bsd -s will start the computer in single-user mode, which allows you to reset the passwords if you've forgotten them or don't know them:

passwd root

If you are asked for a hardware password, and you don't remember it, use the battery procedure. While you're in single-user mode, if you want to access some files that aren't mounted because they are part of a second partition, run the startup script, and then the computer is in a state similar to the regular state:

sh /etc/rc &

NetInfo problems

Often a NeXT computer was part of a network of computers that shared information about users, printers, internet hosts, etc. You might have problems creating users, logging in, or other problems with users and networks. You can reset the NetInfo database to factory blankness. There might be problems wider than these two netinfo files/folders, and changing these might mess with the rest of your setup. Proceed with caution and make backups as described:

  1. Start in Single User Mode. See #Startup.
  2. Backup the files we're going to change:
cp -r /etc/hostconfig /etc/hostconfig.backup
cp -r /etc/netinfo /etc/netinfo.backup
cp -r /etc/hosts /etc/hosts.backup
  1. Copy the template hostconfig to /etc. This restores the hostconfig file to its default configuration.
cp -r /usr/template/client/etc/hostconfig /etc/hostconfig
  1. Copy the template hosts file to /etc
cp -r /usr/template/client/etc/hosts /etc/hosts
  1. Remove the directory in /etc/netinfo to delete all NetInfo domains on that computer.
rm -r /etc/netinfo
  1. Copy the files in /usr/template/client/etc/netinfo to /etc/netinfo to restore the netinfo domain to its original state.
cp -r /usr/template/client/etc/netinfo /etc/netinfo
  1. Reboot. Actually, power off and power on to make sure.
  2. Login.
  3. Start Simple Network Starter (in the NextAdmin directory); choose local standalone settings.

Peripherals

SCSI Zip drive

The main board has a small 50 pin connector. With the right adaptor, it can be connected to an Iomega Zip drive, SCSI flavor. NeXT can format, read, and write it with NeXT flavor or Macintosh HFS flavor.

Monitors

I have a NeXT Dimension board. When I first started my computer with only the MegaPixel Display attached, I was upset that nothing was showing on the screen. Then I realized I could hook a RGB monitor, via a special cable, to the color monitor jack on the Dimension board, and the system was using that as its main screen, even if none was hooked up. While there, I opened Preferences.app, where I could turn on output to the MegaPixel display, switch to it as the main screen, or change their arrangement.

SCSI Hard Drives

You can easily prepare a new disk by attaching a SCSI drive in an external enclosure, with proper termination, a unique SCSI ID, making sure to make any connections while the power is off.

The BuildDisk application, in addition to partitioning and formatting, allows you to make a bootable SCSI disk, using files from the startup disk. Unix File System (UFS, or BSD) partitions, the kind used on NeXT hardware, is limited to 2GB max partitions. Also, the system is installed on the first partition of any disk.

Useful command-line commands

df shows the capacities, usage, and mount point for each filesystem of each drive.

Accessing NeXT filesystems outside NeXT OS.

Mounting a NeXT CD in Linux

It's pretty simple to mount a NeXT CD in Linux. We use the UFS file system, type nextstep-cd, which is read-only. With only one CD drive, there's usually a /dev/cdrom that lets us access it, and we need to provide a folder in our hierarchy to access it.

mkdir ~/testnextcdmount
mount -t ufs -o ufstype=nextstep-cd /dev/cdrom ~/testnextcdmount
ls ~/testnextcdmount

Mounting a NeXT drive image in Linux

mkdir ~/testnextmount
mount -t ufs -o ufstype=nextstep,ro /path/to/imagefile ~/testnextmount
ls ~/testnextmount