[comp.sys.nsc.32k] Minix on the PC532

bdale@col.hp.com (Bdale Garbee) (06/04/90)

Saturday afternoon, Minix ran on my PC532.  Bruce asked me to play beta-tester 
for his bits, and I was able to pull some files from his machine at work and 
give it a shot.  Sunday morning, Fred came down with his box, and we were 
successful in building a non-trivial root filesystem with all of Bruce's 
32016 binaries loaded.  Everything seems to be working pretty well, except 
that kermit hangs once in a while when in connected mode on /dev/tty1, and 
xemacs won't grok my terminal type...

Here's the blow-by-blow:

I invented a partitioning for the Miniscribe, which basically includes a 
2100k /dev/hd1 for the kernel image, 10 31500k partitions for filesystems, 
and another 2100k /dev/hdc at the end of the drive for a backup kernel image.  
The numbers don't quite work out to be the entire disk, I realize, but it's 
close enough for now. 

Once I had a partitioning invented, I used my HP 9000/350 with SCSI interface
to dd the kernel on to the front of the disk, and then to dd a 360k root
filesystem image Bruce provided into the first 360k of the /dev/hd2 31500k
partition. 

For the curious, the commands were:
	dd if=min532 of=/dev/rdsk/1s0 bs=1024 seek=2100
	dd if=minix of=/dev/rdsk/1s0 bs=1024 skip=1
The min532 file was the root filesystem, the seek command put it after the
kernel image partition.  The minix file was the kernel, the skip command drops
the a.out.h header from the file as it's copied to the front of the disk.  The
drive was obviously attached as /dev/rdsk/1s0, familiar notation to HP folk.

Then, I moved the disk to my PC532, loaded the kernel using
	read 0 2000 150
and used the output of nm on the kernel to locate and patch the drive table
and partition table for the Miniscribe.  I then saved the kernel image back
out with
	write 0 2000 150
and then loaded and ran the copy from disk with
	read 0 2000 150
	run 2000

and VOILA!  Up came Minix with a banner and login prompt.  

Well, actually, it took about 6 iterations through the process to get all the
numbers right (I finally found my HP 16C calculator in the heap of stuff
in my basement after the 5th try, and quickly fixed my hex conversion errors
[sigh] /o\).

Feeling really up on things, I then went back to the 350, and used Bruce's
toolset compiled for the workstation to rebuild the kernel from scratch with
my modified scsi_hi.c, where Bruce has (temporarily?) kernel-embedded the 
drive and partition tables.  The rebuild looked good, so I went through the
dd process and tried again.  No luck.  After several iterations, I realized
that Bruce was defining 'OMTI' at the top of the scsi_hi.c file instead of
in the Makefile as a -DOMTI, meaning I hadn't realized it was defined, and of
course that was giving me a bogus drive table with strange initializers as far
as the Miniscribe was concerned.  Removing that line, leaving only the
-DM9380S in the Makefile, caused me to get a working kernel, and the next boot
attempt worked great.

Suffering heavily from pine-pollen-induced sinus congestion, I called it quits
for Saturday.

Sunday morning, Fred arrived bright and early, and we dove in again.  This time,
we brought over the 32016 binaries to my workstation, and editted up the mkfs
proto file to include all the binaries.  Running the Minix mkfs compiled for
the workstation, I successfully built and dd'ed a 31500k root filesystem that
included a full set of binaries from Bruce, along with pi.c and the pi 
Makefile.  We moved the disk over, booted the pc532, and were successful in
compiling and running pi on the pc532!  Then, I hooked up a serial line to my
workstation, and we successfully used the second serial port to kermit a file
from the workstation to the PC532.  However, as earlier mentioned, we had
some problems with hangs, and the kermit seemed to lose out at 9600 baud.  More
on that when I have time to investigate.

There is also a seemingly weird problem where kermit using the connect command
to log in to the workstation, will apparently not flush the received character
buffer to the display for the last partial buffer size without a keypress.  It
doesn't keep you from doing anything, but it's weird to not get the last few
chars of the login prompt, or the shell prompt, until you type the first
character of the next hunk of text you are going to input... this may be a
problem in the serial port driver, in kermit, or in the interaction between
the two.  Regardless, it's annoying enought to deserve some time.  It *IS*
really neat being able to log in to the workstation and kermit files on day
one though!  Thanks Bruce for having your 32016 binaries executable on your
32532 port, and thanks National for making it even possible...  :-)

Since then, I've been pulling the source tree over on to the pc532, in
preparation for trying to recompile the kernel and binaries in place.  Bruce
warns me that he's seeing an occasional SCSI write failure, but I haven't
seen one yet, as far as I can tell.  Bruce, what's the symptom, so I can watch
for it?

Folks, this is pretty exciting stuff!  There are a few things that ought to
be ironed out before everyone jumps in and tries to duplicate our efforts,
like we should provide a kernel pre-configured for the PC532 with Miniscribe
drive.  But, it's pretty close to being a functional machine for us at this
point!

Bruce, job well done on the OS port to date.  I'll shar my changes and send 
them to you tonight, if I have time...  Dave and George, thanks again
for providing such a neat platform to play with! 

Bdale