|
This is a step by step instruction to install SunOS for the
sun2 architecture on a virtual disk. This can then be used
to run SunOS in an emulator, or to run it on real hardware,
either by copying the virtual disk to a real one, or by
emulating a real disk using a SCSI2SD adapter.
These instructions were made January 2019 by Walter Belgers.
Thanks to those who have helped me with all their experiments,
knowledge and insight.
A full one hour walkthrough video is available here:
https://youtu.be/Ga3547LZmBk
These instructions use the Sun emulator called tme. Since
its inception, there have been people making changes and
improvements. I got a mail from Sigurbjörn pointing out that at
https://github.com/sigurbjornl/emulator-sun-2
you will find a fork of sun-emulator2 that should work better
than the original tme, also including networking for instance.
Step 1: install a (virtual) server
- Go to the FreeBSD website
and download the latest "boot" ISO file for amd64.
- Make a virtual PC with default settings or take a real
PC and boot from the CD. Choose <Install>.
- Install FreeBSD. You can choose default values everywhere,
except these:
- Select to install "[*] ports".
- Set up networking to be able to transfer the virtual
drive at the end.
- Create a local user with a password. Invite the
user to group "wheel". Let's call the user
"walter". (You can use another name.)
- After reboot, log in as walter and become root with su.
- Install Xorg, a window manager (I use xfce4) and a browser (I
use chromium).
- pkg install xorg
- pkg install xfce4
- pkg install chromium
- echo 'dbus_enable="YES"' >> /etc/rc.conf
- service dbus start
- Suspend the root shell, or log out and log in as walter and type:
- echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
- startx
- You are now in a graphical environment. Next up is installing tme
and patching it. Install it as follows (as root):
- cd /usr/ports/emulators/tme
- make
- This will build all kinds of dependencies, for which many setup
questions are asked. Press enter to get the default, for all of
them.
- Once the make process has ended, install the patches and make tme again:
- cd /usr/ports/emulators/tme/work
- fetch http://www.heeltoe.com/download/sun2/diffs-20111125
- patch < diffs-20111125
- make clean
- make install
Setting up tme
- Log in as walter and create a working directory and set up
tme:
- cd
- mkdir tme
- cd tme
- fetch https://people.csail.mit.edu/fredette/tme/sun2-multi-rev-R.bin
- cp /usr/ports/emulators/tme/work/tme-0.8/machine/sun2/SUN2-MULTIBUS MY-SUN2
- cp /usr/ports/emulators/tme/work/tme-0.8/machine/sun/my-sun-macros.txt .
- tme-sun-idprom 2/120 8:0:20:12:34:56 > my-sun2-idprom.bin
- dd if=/dev/zero of=micropolis1355.img bs=1 count=1 seek=150994943
- You can use another name than MY-SUN2 for the main configuation
file, but we will use MY-SUN2 in the remainder. You can use another
MAC address than 8:0:20:12:34:45 if you like.
- The Micropolis has 1024 cylinders, 8 heads (=tracks per cylinder),
36 sectors per track, 512 bytes per sector, so a total of 150994944
bytes. Use one less for the seek parameter in the dd command. You
can choose another disk, but the Micropolis is a known disk for
SunOS 3.2 easing labelling. Do not use disks that have 256 byte
sectors, as tme will not work well with them.
- Edit MY-SUN2:
- You can increase RAM from 4MB to 7MB if you like
(7 is the maximum) by editing the line starting
"ram0".
- Change the disk image filename to micropolis1355.img
in the line starting "disk0"
- Uncomment the last line to automatically power up the
system.
- Fetch and unpack the tape files, e.g.:
- fetch http://www.heeltoe.com/download/sun2/sunos_3.2_sun2.tar.gz
- tar xvf sunos_3.2_sun2.tar.gz
- mv sunos_3.2_sun2 3.2
Installing SunOS 3.2
- Start tme with "tmesh MY-SUN2"
- In the tmesh window, attach tape 1 by entering "command
tape0 load 3.2/tape1/01 3.2/tape1/02 3.2/tape1/03 3.2/tape1/04
3.2/tape1/05 3.2/tape1/06 3.2/tape1/07 3.2/tape1/08 3.2/tape1/09
3.2/tape1/10
- In the Sun window, type the following:
- b st()
- b st(0,0,3)
- 4 [choose Emulex]
- 80000 [controller address]
- 0 [target]
- 0 [unit]
- 0 [Micropolis 1355]
- label
- q
- st(0,0,4)
- st(0,0,5) [From]
- sd(0,0,1) [To]
- sd(0,0,1)vmunix -as
- sd0* [boot device]
- newfs /dev/rsd0a
- newfs /dev/rsd0g
- Now is a good moment to copy the file micropolis1355.img in
case you want to install another SunOS version. This comes in
especially handy when that SunOS laoder does not know the geometry
of this disk, such as SunOS 2.0 (which will happily run from
a Micropolis 1355).
-
- cd /dev
- ./MAKEDEV st0
- mount /dev/sd0a /a
- cd /a
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 6
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 7
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 8
- tar xvpf /dev/nrst0
- cd /a/dev
- ./MAKEDEV std
- ./MAKEDEV ttys
- ./MAKEDEV sd0
- ./MAKEDEV st0
- cat > /a/etc/fstab
/dev/sd0a / 4.2 rw,noquota 1 1
/dev/sd0g /usr 4.2 rw,noquota 1 2
^D
- mv /a/etc/ypbind /a/etc/ypbind.orig
- In the tmesh, change tapes:
- command tape0 unload
- command tape0 load 3.2/tape2/03 3.2/tape2/04
3.2/tape2/05 3.2/tape2/06
- In the Sun window, type the following:
- mount /dev/sd0g /a/usr
- cd /a/usr
- mt -f /dev/nrst0 rew
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 1
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 2
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 3
- tar xvpf /dev/nrst0
- In the tmesh, change tapes:
- command tape0 unload
- command tape0 load 3.2/tape3/03 3.2/tape3/04 3.2/tape3/05
3.2/tape3/06 3.2/tape3/07 3.2/tape3/08 3.2/tape3/09
3.2/tape3/10 3.2/tape3/11 3.2/tape3/12 3.2/tape3/13
- In the Sun window, type the following (or script it):
- mt -f /dev/nrst0 rew
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 1
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 2
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 3
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 4
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 5
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 6
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 7
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 8
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 9
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 10
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 11
- tar xvpf /dev/nrst0
- In the tmesh, change tapes:
- command tape0 unload
- command tape0 load 3.2/tape4/03 3.2/tape3/04 3.2/tape3/05
3.2/tape3/06 3.2/tape3/07
- In the Sun window, type the following (or script it):
- mt -f /dev/nrst0 rew
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 1
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 2
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 3
- tar xvpf /dev/nrst0
- mt -f /dev/nrst0 rew
- mt -f /dev/nrst0 fsf 4
- tar xvpf /dev/nrst0
- cd /
- umount /a/usr
- umount /a
- Quit tmesh by pressing ^C. Start again with "tmesh MY-SUN2"
- In the Sun emulator, log in as root (no password needed).
- Create the missing devices:
- cd /dev
- cat > fixdev
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
mknod ttyp$i c 20 $i
mknod ptyp$i c 21 $i
mknod win$i c 15 $i
done
for i in 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
do
mknod win$i c 15 $i
done
^D
- sh fixdev
- chmod 666 ptyp* ttyp* win*
- rm fixdev
- Your system is now fully operational. You can start a graphical
interface with the command "suntools".
Installing other OSes
Now you can use the existing working SunOS 3.2 installation
to boot, and then extract tape archives from other releases to
a second disk. I have had problems loading MUNIX from tape for some
versions, but just booting a full 3.2 systems gives you all the
tools you need to tranfer the tape contents to an empty disk (image).
The file system format (4.2) works for SunOS 1.1, 2.0, 3.2 and 4.0.3
I found out.
For this, change MY-SUN2 as follows:
sd0 at scsibus0: tme/scsi/disk id 0 type tme-scsi-1
disk0 at sd0: tme/host/postix/disk file micropolis1355.img
sd1 at scsibus0: tme/scsi/disk id 0 type tme-scsi-1
disk1 at sd1: tme/host/postix/disk file micropolis1355-empty.img
Here, micropolis1355.img is the disk with the 3.2 install. The file
micropolis1355-empty.img is a copy of the disk that was labelled
and newfs'd. It will be available under SunOS 3.2 as sd2. You might
have to do a "cd /dev; ./MAKEDEV sd2" to make the
appropriate devices.
The rest of the procedure is the same: untar the tarballes from
the tapes to / or /usr (look at the contents to determine where it
goes). Make the devices in /dev. Create an /etc/fstab and rename
/etc/ypbind if it exists.
For SunOS 1.1, the fstab file has a different syntax and should
read:
sd0a:/:rw:1:1
sd0g:/:rw:1:2
Using the disk image on real hardware
If you have a real disk that is at least as big as the Micropolis
1355, you can use the dd tool to copy the virtual disk on it. Then,
you have a physical bootable SunOS disk for the sun2 architecture.
If your disk is bigger than 150MB, the extra space will not be
used.
If you buy a SCSI2SD device, you can dd the virtual disk to
an SD card. Set the SCSI Host Speed to "Slow" and turn on
"Enable Unit Attention".
A full set of disk images with SunOS 1.1, 2.0, 3.2 and 4.0.3
that I made on virtual Micropolis 1355 drives
is available for download.
You can also watch this YouTube movie about the Sun 2/120 with a real Micropolis
drive, created according to the instructions here, and
this movie about putting
a DES chip in a Sun 2/120.
References:
|