[3340] in testers
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