[3340] in testers

home help back first fref pref prev next nref lref last post

Nominal success building CNBOOT

daemon@ATHENA.MIT.EDU (John Hawkinson)
Thu Sep 25 11:59:38 1997

Date: Thu, 25 Sep 1997 11:59:21 -0400
To: miki@MIT.EDU
Cc: sol24@MIT.EDU, athena-install@MIT.EDU
From: John Hawkinson <jhawk@MIT.EDU>

Hi,

	Dan mentioned that you had tried to build CNBOOT from sources
and had problems, and that when it finally built, it did not work.

Executive summary:
	It builds, it works on non-ultras, it still fails on ultras.

Lengthy version:
	While trying to get the Ultra working, I tried the
distribution CNBOOT binary in the bootkit (and solarisdev) locker(s)
and it failed on the Ultra, so I decided to spend some time trying to
make CNBOOT build.

I did so using a Solaris 2.5 source tree rather than a 2.5.1 source tree,
since that's all that I conveniently had available.

Roughly speaking I followed the steps from cnboot/CNB_5.5.notes
(editted slightly):

	mkdir /cnbsrc/5.5
	
	# Copy the common sources
	(cd /cdroms/solaris_2_5_cmn_src/os_net/src_ws/usr/src/;
	  tar cf - stand uts psm Makefile Makefile.maser Makefile.psm \
	    Makefile.psm Makefile.psm.targ Targetdirs) |
	(cd /cnbsrc/5.5 | tar xf - )

	# Copy the arch-dependant sources (SPARC only)
	( cd /cdroms/solaris_2_5_sparc_src/os_net/src_ws/usr/src/;
	  tar cf - stand uts psm Makefile Makefile.maser Makefile.psm \
	    Makefile.psm Makefile.psm.targ Targetdirs) |
	(cd /cnbsrc/5.5 | tar xf - )

	# Untar the CNBOOT stuff (overwrites some files)
	( cd /cnbsrc/5.5; 
	  zcat /mit/solarisdev/installation/CNBoot.2.5/cnboot.tar.Z  |
	  tar xf - )


	# Edit /cnbsrc/5.5/cnboot/domake.inetboot, as:

export PATH=$PATH:/opt/SUNWddk/tokenizer
 
export MACH=`uname -p`
 
export SRC=/cnbsrc/5.5/
 
export ROOT=/os
 
export CC=suncc
export sparc_NATIVECC=$CC
export i386_NATIVECC=$CC
 
export CFLAGS="-O -DOPCOM -I$ROOT/usr/include"
 
export LINT="/mit/sunsoft/arch/sun4x_55/bin/lint -I$ROOT/usr/include"
...

	Note that since my 2.5 tree did not have an include "proto" tree
	I set ROOT to /os (it needs to get include files and soforth).
	Perhaps you have a proto tree around... Note that also this meant
	that I build CNBOOT 2.5 against Solaris 2.5 sources, but with some
	smattering of 2.5.1 include files, which is potentially a no-no.
	Nevertheless, this didn't seem to cause a problem. Principally the
	include files brought in this way were from /usr/include/{v7,v9},
	so probably weren't likely to change.
	(Also, the tokenizer doesn't seem to be necessary, which is a good
	thing since we don't have SUNWddk around as far as I know).

	Then run /cnbsrc/5.5/cnboot/domake.inetboot, and wait a while. :-)

Binaries appear in /cnbsrc/5.5/psm/stand/boot/sparc/sun4[cdmu]/cnboot.

I tried one of the non-Ultra cnboot binaries and it worked just fine.

UNFORTUNATELY, I tried to boot the Ultra cnboot and it died
with "Illegal Instruction" just like the sun4m version. This isn't
awful surprising, I guess, since the startup code is basically the same:

[portnoy!jhawk] /cnbsrc/5.5/psm/stand/boot/sparc/sun4u> adb cnboot
_start?20i
_start:
_start:         sethi   %hi(0x100000), %o1
                or      %o1, 0x0, %o1    ! _start
                save    %o1, -0x90, %sp
                sethi   %hi(0x127c00), %o0
                or      %o0, 0x6f, %o0   ! _edata
                sethi   %hi(0x13e800), %i2

[portnoy!jhawk] /afs/sipb/user/jhawk/src/athinst> adb cnboot.25
_start?20i
_start:
_start:         sethi   %hi(0x100000), %o1
                or      %o1, 0x0, %o1    ! _start
                save    %o1, -0x60, %sp
                sethi   %hi(0x126c00), %o0
                or      %o0, 0xd1, %o0   ! _edata
                sethi   %hi(0x13cc00), %i2

And the Illegal Instruction trap happens on the second sethi (for
reasons I do not understand!).

When I next get a chance I'll try seeing if the build ufsboot or
inetboot modules work (hopefully inetboot will work).

If you'd like a copy of my build tree, please let me know. I don't
have enough free AFS space to stick it somewhere and ACL it to you,
but if you want me to stick it somewhere (that's jhawk:rli, for instance),
I'll be happy to do so.

It might be interesting to experiment with this against a 2.5.1 source
tree rather than a 2.5 source tree since I understand that there were
significant Ultra-specific enhancements in 2.5.1. On the other hand, I
doubt this is going to do much good against the Illegal Instruction
trap.


--jhawk

home help back first fref pref prev next nref lref last post