Annotated Excepts from M68KVSV68/L5  August 1984

(NOTE---i also have Customer Newletter for SYSTEM V/68 release 2, Version 1.0. But, i have no floppies to install... i do have two VME10s with r2v1.0 installed and have imaged them. The Partitioning scheme used by r1 is different than r2 ... DO NOT try to use r1 disks with r2 or r2 disks with r1. Also NEVER boot the r1 miniload disk with anything on the HD except R1 as installed. The SWAP is active and fixed to a specific location on the HD. Anything there will be destroyed.)

Customer Newletter 

SYSTEM V/68 release 1, Version 2.8

NOTE - these instructions are simplified for the VME10 Emulator, but should be usable for a REAL VME10, too.

WARNING - Do NOT boot the unix minload on a system with an existing OS on the HD. The kernel will use the HD as swap. It will destroy whatever is there. Boot only on a system with a Fresh HD that you plan to use for Unix. 

The supplied kernel, that is used by the minload and is installed on the hard disk by minload is configured to support hardware as follows

 The RWIN disk controller with a 40mb drive

 A VME410 card for 1 line printer

 Two VME400 cards for a total of 4 serial ports.

 Up to four MC68451 binary segmented MMUs

The 40mb drive and the 15mb drive only differ by the number of cylinder (15 = 306 AND 40 = 830)  The kernel can work with the 15mb drive as long as no disk accesses above cylinder 305 occur. The minload creates a partition that will fit on both the 15 and the 40 mb drive.

After installing on a 15 mb drive you are required to make a new kernel specifically for a 15mb drive. If installing on a 40 mb drive then you may use the existing kernel.

for the VME10 Emulator, you should install on a 40 mb drive, but instructions for both are presented here. (a 40mb drive is just as cheap as a 15mb drive)

A new, perfectly formatted disk can be created via the menu DISKS->CREATE NEW RAW.  Select the 40mb hard if you want to install ALL of the Unix distribution. It won't ALL fit on a 15.

Insert the new HD into HD00 by opening the new HD file that you created, via the menu DISKS->HD00 

You will first use a standalone floppy version of Versados to initialize the hard disk.  Then boot a minimum Unix on floppy to load a minimum Unix onto the HD. Then reboot from HD and finish loading UNIX.

From TENBUG 2.1 or higher

Insert Standalone Versados disk (82V1XBSVB1) in floppy (FD02)

For 15MB Winchester, type

 BO 2,,W15

( applying defaults... that is equivalent to  -  BO 2,0,0.&.W15.SY)
 BO <disk number>,<controller number>,<string that is passed to the IPL (or unix loader)> 

This loads and executes the Versados OS with a 15MB Winchester (older Versados required the size of drive to be sysgen'ed in) 

For 40MB winchester, type

 BO 2,,W40

The IPL.SY program (Initial Program Loader) for older Vesados only accepted upper case.

Once OS is runniing and has displayed the Welcome screen, type

 INIT #HD00

Note that the ;V option is not needed, since UNIX installs it's own UNIX LOADER, but is OK if used

The configuration that INIT reports is OK so, at any time in the configuration process, you may type C to go to next step. The Configuration loops until you type C.

DO NOT format...DO NOT enter entries into the Lockout Table (since the emulator creates perfect disks)

(NOTE - for real VME10, you should not format unless the existing  format is NO GOOD.  IF you DO format then, you must enter the bad sector (lockout) info that was provided with the drive. Too many years has passed... but Microsystems used to keep the bad sector info, and it could be gotten via Phone. But no longer. So, hopefully, the little paper with the bad sector info is in your VME10, somewhere. If not, then, hopefully, the INIT program will find all bad sectors and add them to the lockout table. But note that, INIT does not do as thorough a job as the factory tests did.)

On a real VME10, you should specify to INIT that it should use alternate sector relocation. However, on the emulator, alternate sector relocation is NOT needed. Reguardless, Unix will reserve 12 cylinders (72 tracks) for relocating bad sectors... this is OK since the partioning scheme never uses the relocation area. so the disk appears to be 72 tracks smaller than it is.

For UNIX,  Volume Name and Description is "anything you want".. 

But the Volume NAME should start with an ALPHA, else Versados and TENBUG will not like the name, and treat the disk as foriegn.

Volume could be UNIX

Description could be sysV68k r1v2.8

The user number should be 0

You should put a diagnostic test area

The Cylinders for 40mb is 830

The Cylinders for 15MB is 306

SPT is 32

Interleave is 1

Sector size is 256

Do NOT put the bootstrap or the dump area. (bootstrap will be replaced by UNIX install) Unix places the Bootstrap (called Unix loader) in 2 blocks between the superblock and the iNode table. So, contrary to the manuals, the inode table starts in block 4 , not block 2. 

All the INITializing did, was to put the VOLUME ID sector and CONFIGURATION area on the disk. These are required for TENBUG to boot the disk. When UNIX is installed, it will put its own UNIX LOADER on the disk. 

The Diagnostic area is needed to run Tenbug tests and tests in the Disk Resident Diagnostics for the VME10. (WDC.SY)

After the HD is initialized, you are now ready to install UNIX..


RESET to Tenbug

You MUST use a NON-Write Protected disk to boot UNIX. During the boot process, the kernel will write to the disk.

The unix boot floppy disk is labled DISK 1 of 27.

Use the menu DISKS->CREATE NEW to open the Create Disk dialog, then select from the menu DISK TOOLS -> EXPAND COMPRESSED SECTORS to creat a new expanded version of the compressed IMD image. The READ-ONLY IMD image will be read, and then written to a new IMD file with all sectors un-compressed. 

USE the NEW un-compressed disk to boot and install UNIX.

During the install, the boot floppy will be written to. ( good to know for REAL VME10, might be wise to use a copy - a Versados system can do a track by track backup)


type 

 BO 2

(defaults to  BO 2,0,stand.unix)

NOTE- there's no ;H option for unix


after UNIX prints Signon message

M68010/sysV/68: unix2.8

real memory = <some value >
availible memory = <some value>

INIT:SINGLE USER MODE

#

For either 15 or 40 mb system type

 /etc/loadtools/minload

This runs the MKFS to create partiton 0 as ROOT this partition fits on both a 15mb and a 40mb drive.

SEE BELOW for Contents of etc/loadtools/minload

All of Partition 0 is used on a 15mb drive (section 0 - section 6)(uses the space for partition 0 through partition 5, only partiton 6 availible)

On a 40mb drive, only Section 0, 1 and 2 are used in Partition 0 (uses space for partitions 0 through 1, partitions 2-6 are availible) SEE BELOW for how the disk is sectioned.

It adds the UNIX LOADER to the HD.

It then copies a minimal system to the HD.

1086 blocks should be copied. (a discrepency disk 1 CPIO count is 1084)

At this point enough UNIX exists to back up the floppies. 

After the script ends and the disk light goes out, RESET to TENBUG and boot from the HD

Type 

 BO

(defaults to BO 0,0,stand.unix)

(IPL.SY defaults to 0.&.VERSADOS.SY - Unix Loader defaults to stand.unix)

This boots the HD unix

You may now install the rest of the system onto the HD

(see below for 40 mb instructions )

(15 and 40 is different install procedure. The minload, made a filesystem in partition 0 that works for either a 15 or 40 mb drive, but the rest is different)

For a 15mb system, run the script 

/etc/loadtools/readflops 2>> /message

This copies all files on each FLOPPY (2-27)  to the HD and makes a file with error messages in it.

It prompts you when to change disks. The order is not significant, so you can skip disks that you don't want...For a 15mb system , you must skip something, since the root partition is 1300 blocks smaller than the system.

Check message file and then delete it

rm -f /message

For 15mb system you must build a new kernal for 15MB system

You may use partition 6 as a swap device (only 15mb system)

 rm /dev/swap
 mknod /dev/swap b 0 6
 chmod 0644 /dev/swap
 chgrp sys /dev/swap
 chown sys /dev/swap
 sync
 sync

Reboot using 15mb kernal

NOTE - the minload kernel is for a 40mb drive, but the mkfs only uses the same size as the 15mb drive. Both drives have 6 head, 32 SPT with 256 byte sectors... only cylinders is different. 306 vs. 830



HERE  for a 40mb HD

Since the complete unix system is larger than the filesystem in partition 0, made during miniload, you must put something in another partiton. The 40mb drive has room..

Partitons 2 through 6 are availible. Partition 2 is used by the readflops.40 script. The readflops.40 script does a Block Copy, using dd, of the floppy into the partiton, then uses cpio to extract the files and placed them onto the Hd disk's Partiton 0. On a real VME 10 this is much faster than reading each file one at a time, from the floppy. But on the emulator, the Floppy I/O and the HD I/O are the same speed, so doing the file by file copy (using the readflops script) is faster.

 mkfs /dev/dk03 9816
 labelit /dev/dk03 usrlib r1v2.8
 mkdir /usr/lib
 mount /dev/dk03 /usr/lib

At this point there's two filesystems - the one for root, made by the minload, which is populated with the minimum load, and one for /usr/lib. usr/lib is empty and now mounted.   Later, you must add an entry to the etc/rc file to mount the /usr/lib each time the system is booted; and add to the disk Check list.

Here, you may use either the same readflops as the 15mb version used, or use a special one for a 40 mb system. The difference is that the 15 mb readflops does it file by file, whereas the 40 mb readflops.40 block copies the floppy into raw partiton 2 and then extracts the files from there.. On a real VME10, readflops40 is faster. The emulator - your call. (note - that, if later, you decide to move /usr/bin to partion two, that readflops.40 can no longer be used to copy files from the distribution disks to the HD)


type 

/etc/loadtools/readflops.40 2>> /message

You can stop at any time by typing a "q" then use the above to re-invoke

Check the message file for errors then delete it

 rm /message

add this line to etc/rc

 mount /dev/dk03 /usr/lib  # mount r1v2.8 usrlib filesystem

add a line to the checklist, so it will check the raw partition

 echo /dev/rdk03 >> /etc/checklist

At this point you are done installing and can do normal stuff.



You can move /usr/bin to partion 2 (while in SINGLE USER MODE ONLY)

 mkfs /dev/dk02 9816
 labelit /dev/dk02 usrbin r1v2.8

 mount /dev/dk02 /mnt
 cd /usr/bin
 
 find . -print | cpio -pmdlv /mnt

 umount /dev/dk02

 fsck /dev/rdk02

 rm -rf /usr/bin/*

 cd /

 mount /dev/dk02 /usr/bin

Add this line to etc/rc

 mount /dev/dk02 /usr/bin # mount r1v2.8 usrbin filesystem

Add entry to check list

 echo /dev/rdk02 >> /etc/checklist

Note - If Smart, you can mkfs partion 2 and mount at /usr/bin prior to readflops, so you don't have to move it, later. do NOT use readflops.40

Note - The 40 mb drive is configured to allow for the installation of the Source code distribution. Sections 5, 6 and 7 are reserved for the source. If you do not plan to install source (i dont have it) then you can use Partions 4, 5 and 6 for something else.


What are those partitions. They are not DOS. Using a little ASCII art.


Each disk is divided into 8 Sections. Each Section is 1/8 of the disk.

Sections for a 15mb disk are 3528 blocks. (1764k)

Sections for a 40mb disk are 9816 blocks. (4908k)

Blocks are 512 bytes, even though the system uses 1k block size. (holdover from previous version)

Partitions overlap.

Partition 0 starts at 112 blocks into Section 0 and runs to the begining of Partiton 6.

The fist 112 blocks are reserved for the system to use. Contains the VOLUME ID, Configuration area, diagnostic test area. 

The unix loader is found in block 2 and 3 (1k) immediately after the superblock and  prior to the inode table, in Partition 1.

Partition 1 starts at Section 2 and runs to the end of the disk.

Partition 2 starts at Section 3 and runs to the end of the disk.

Partition 3 starts at Section 4 and runs to the end of the disk.

Partition 4 starts at Section 5 and runs to the end of the disk.

Partition 5 starts at Section 6 and runs to the end of the disk.

Partition 6 starts at Section 7 and runs to the end of the disk.

Partition 7 starts at Section 0 and runs to the end of the disk.


                           dkx0   where x is disk number             dkx7
Section 0  -----------     ___ 112                                   --- 0
          |           |     |                                         |
Section 1  -----------      |                                         |
          |           |     |    dkx1                                 |
Section 2  -----------      |    ---                                  |
          |           |     |     |    dkx2                           |
Section 3  -----------      |     |    ---                            |
          |           |     |     |     |    dkx3                     |
Section 4  -----------      |     |     |    ---                      |
          |           |     |     |     |     |    dkx4               |
Section 5  -----------      |     |     |     |    ---                |
          |           |     |     |     |     |     |    dkx5         |
Section 6  -----------      |     |     |     |     |    ---          |
          |           |     |     |     |     |     |     |    dkx6   |
Section 7  -----------     ---    |     |     |     |     |    ---    |
          |           |           |     |     |     |     |     |     |
           -----------           ---   ---   ---   ---   ---   ---   ---

Note that you do not have to use the entire partition. In fact, if you do, then since the partitons overlap, you will be unable to use a partition that is overlapped by another partition.

The minload makes a partiton that overlaps (15mb) Partitons 1-5 (sections 0-6)(only Partiton 6 in Section 7 is availible) 

The minload makes a partiton that overlaps (40mb) Partition 1 (Sections 0-2) (partitons 2-6 in sections 3-7 are avilible).


Building a new kernel. (see man pages for more details)

change to the working directory for building new kernels

cd /usr/src/uts/m68k/cf

The program sysdef can be used to extract info from an existing kernel and place that info into a file, that can be used to create a copy of that kernel. 

The command genunix is used to create a new kernel. The input file used by genunix, which contains the definition of the new kernel is called dfile.

the genunix command defaults to dfile as an input.

So, typically, if you want to add or change something in an existing kernel, you would use 

 sysdef [existing kernel]  > dfile

to extract and create a dfile 

and then edit the dfile to reflect your additions or changes 

and then use 

 genunix

to create a new kernel, based on the old kernel.

the new kernel will be called unix2.8 by default

There are default dfiles for the 15mb (wd15) and the 40mb(wd40) kernels. You can copy one of these to a dfile

 cp wd15 dfile

To test a new kernel, move it to the root directory (just to ease typing for the Tenbug command to BOOT, also some older unix loaders only could find a kernel in root)

 mv ../unix2.8 /unix.test
 chmod 0664 /unix.test

then shutdown and reset to Tenbug and 

 bo ,,unix.test

after satisfactory testing rename the unix.test to whatever working name you prefer then

 ln [newkernelname] /unix
 ln {newkernelname] /stand/unix

it is wise to leave the old kerenl so that if the new one is discovered to be defective, you can boot the old one

 bo ,,unix2.8

unix2.8 (in root) used to be linked to unix and stand/unix


contents of (etc/loadtools/minload)

# script to create bootable winchester file system from floppy.
# winchester must already have been initialized.
# file system contains a minimum utility set.
# steps to create bootable winchester with minimal
# utility set are:
#     1) boot from this floppy
#     2) run this file (/etc/loadtools/minload)
# you may then reset and reboot from winchester.
# readflops may be used to copy in more utilities from floppies
# once you have booted up on the winchester.

#massage pointers in boot blocks 

/etc/loadtools/wdinit
echo running mkfs
/etc/mkfs /dev/dk00    24584                   
sync
echo running labelit
/etc/labelit /dev/rdk00 mnt sys > /dev/null
echo mounting file system
mount /dev/dk00 /mnt
sync
echo copying boot loader
dd if=/etc/loadtools/boot2   of=/dev/dk00 seek=2 count=2
cd /
echo copying files to winchester file system
find . -depth -print > /mnt/temp
cpio -pdv /mnt < /mnt/temp

#new mnttab should be set properly

sync
mv /mnt/etc/wd.mnttab /mnt/etc/mnttab
sync;sync;sync
umount /dev/dk00
sync;sync;sync
echo winchester now contains a bootable file system.
echo wait for lights on drives to go out.
echo then reset system and type bo to boot from winchester

contents of (etc/loadtools/readflops)

# script to copy in files from floppies
# floppies are assumed to contain a file system
# created, for example, by  cpio with the "-p" option.

echo insert floppy in drive and type g to go.
echo if no more floppies to be loaded, type q to quit:
read ans
while [ $ans = g ]
do
     mount /dev/dk20  /mnt
     cd /mnt
     echo copying files
     find . -depth -print | cpio -pdvul /
     sync;sync;sync
     cd /
     umount /dev/dk20
     sync;sync;sync
     echo copy done
     echo remove diskette when drive lights go out.
     echo type q to quit or insert next diskette and type g to continue:
     read ans
done

contents of (etc/loadtools/readflops.40)

# script to copy in files from floppies
# floppies are assumed to contain a file system
# created, for example, by  cpio with the "-p" option.

echo insert floppy in drive and type g to go.
echo if no more floppies to be loaded, type q to quit:
read ans
while [ $ans = g ]
do
     dd if=/dev/rdk20 of=/dev/rdk02 bs=32k count=20
     sync
     mount /dev/dk02 /mnt
     sync
     cd /mnt
     find . -depth -print | cpio -pdlmv /
     sync
     sync
     cd /
     umount /dev/dk02
     sync
     echo copy done
     echo remove diskette when drive lights go out.
     echo type q to quit or insert next diskette and type g to continue:
     read ans
done



KNOWN PROBLEMS for VME10 Emulator

You should open emulated Devices on all the 400 ports that you want to use, before booting. After the boot, unix does not see ports that are opened after boot. (i need to find out why and fix. Versados uses a transition on DSR to tell when a device is plugged-in or turned-on... unix ????)

You will find that due to the initial definition of the rubout character, that you will not be able to add the # character in the line to the etc/rc file that mounts /usr/lib..it works if you leave off the entire comment (stuff after the #) (probably some way to add it...an escape sequence or something, but i am not a unix guru)

The default install, does NOT define any getty's for the 400 cards. The example in the etc/rc file seems to be for an Exorterm 155. Use 9600 intead of 9600155.

(etc/inittab)

is:s:initdefault:
bl::bootwait:/etc/bcheckrc </dev/console >/dev/console 2>&1 #bootlog
bc::bootwait:/etc/brc 1>/dev/console 2>&1 #bootrun command
sl::wait:(rm -f /dev/syscon;ln /dev/systty /dev/syscon;) 1>/dev/console 2>&1
rc::wait:/etc/rc 1>/dev/console 2>&1 #run com
pf::powerfail:/etc/powerfail 1>/dev/console 2>&1 #power fail routines
00:2:respawn:/etc/getty tty00 console
01:2:off:/etc/getty tty401 9600155

(etc/passwd)

root::0:1:0000-Admin(0000):/:
daemon::1:1:0000-Admin(0000):/:
bin::2:2:0000-Admin(0000):/bin:
sys::3:3:0000-Admin(0000):/usr/src:
adm::4:4:0000-Admin(0000):/usr/adm:
uucp::5:1:0000-uucp(0000):/usr/lib/uucp:
nuucp::6:1:0000-uucp(0000):/usr/spool/uucppublic:/usr/lib/uucp/uucico
sync::20:1:0000-Admin(0000):/:/bin/sync
lp::71:2:0000-lp(0000):/usr/spool/lp:

The 400 cards seem to be jerky. i assume that interrupts are not tuned for them. 

Since the system uses the memory from 30000 to 60000 as regular ram (default is NOT a graphics kernel) setting the IG bit, sometime after boot, is recommended. If you make a graphic kernel or just modify the memory to look like the graphics kernel, the graphics ram gets reserved. If you reserve the graphics RAM then add another memory board. 

The normal system requires at least one additional 256 k board at 180000, but i used two at 180000 and 1c0000 . Then after install, i added one more 2mb board at 200000. Memory is defined up to E00000, but the more memory the longer it takes to initialize. The kernel is gen'ed to assume that memory boards need their parity initialized.

the screen/keyboard is extremely Sloooooowwwwwwww. so, be patient while typing (and during install of 27 disks). You must use it until you get a 400 card getty'ed (or change the syscon to a 400 card) ( but the jerky-ness is almost as bad)

NOTE - logging on to a non-root account on a 400 card and then su to root, you can telinit s and the system console in SINGLE USER will remain the 400 card, even after shutdown and re-boot. 

i installed on a 40 mb, but used readflops, not readflops.40 to install, since floppy I/O on the emulator is as fast as Hard Drive. Readflops does NOT use partions 2. Readflops.40 destroys whatever is in partion 2. 

This version r1v2.8 of unix seems a bit braindead, but its all i have on installable floppies. r2v1 is installed on a real VME10. I have imaged the 40mb drives on two real VME10s that contain r2.v1.0.

Anybody out there have something else???


Uploading and Downloading files

I have written a simple DLOAD program to download files to the emulator.

Unix does not have a ULOAD or DROPZONE. To dowenload, you can also use  ed  and then append using the paste as input feature of the TTY or CRT emulators.To upload, you can send files to the LP and set the printer to write to a file instead of the screen. Direct to /dev/lp0, not through the LP spooler.


NET WORKING

It may be possible to connect Unix r1v2.8 to another Unix r1v2.8 via UUCP features. If two emulators are run (either on the same machine or another (...running two emulators on the same machine should only be done, if the commandline Qualifier is used)) then you can connect them via the NET port emulator. Normally the NET port is used to allow a TELNET client to connect to the emulator and be used as a terminal, but you can configure one emulator's NET port as a Standalone Server and the other as a Client, then connect the client to the server. This should appear to the two systems as though two serial ports are connected via a null modem. (there will be NO handshaking, just full duplex transmission) Once the two emulators are connected, you may be able to set up UUCP to work... It may even be possible to connect to a linux machine by piping the linux UUCP features to NC (Net Cat or Net Connect) , however the manual implies that both MUST be running the same version of the networking features, else forwarding will fail.

You should set up the NET port as 8-bit (parity don't matter if 8-bit), Turn off Issue, and dont check CRLF=CR. This allows all bytes to pass as-is. Note, that each byte will be in a separate TCP/IP packet. The emulator always transmits one byte at a time. But can recieve multiple character packets, just fine. This allows TELNET to work in Character or Line mode. Typically , if you use TELNET, you should place the TELNET client in Character mode, so that characters are recieved without having to enter a RETURN. 


How to Change Node Name

The following is an excert from the Customer letter... It seems wrong to me. 
(comma where not needed; and, duplicate line ??, but i am not a unix guru)

Create a file in dir /usr/src/uts/m68k/cf called (whatever) say zrp.c containing:

Where xyzzy is your new name and is 8 char max

#include <sys/utsname.h>
#define NODENAME "xyzzy"  
struct utsname utsname=
{
NODENAME,
NODENAME,
"sysV/68",
"r1v2.8",
"M68010",
};

then 

cc -c zrp.c
mv zrp.o name.o

then build a new kernel

----

Unix SYSV/68 release 2 version 1.0

i do NOT have the instructions to load r2, or the floppy disk set .. i do have the customer letter... i also have two real VME10s with r2 installed... i imaged both... one has what appears to be all the files needed to do an install, in a directory. (maybe the boot floppy was copied there) 

the partitioning scheme used by r1 is different than the scheme used by r2... Hard drives can NOT be mixed... floppies are OK.. info needed to use r2 is in the man pages... as is the info for r1, but r1 man pages can not be read till the system is installed.. the r2 hd images, man pages are already installed

r2 also runs fine on the emulator.