Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jan 1999 13:22:15 +0200 (SAT)
From:      Robert Nordier <rnordier@nordier.com>
To:        peter@netplex.com.au (Peter Wemm)
Cc:        julian@whistle.com, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sys/i386/conf Makefile.i386
Message-ID:  <199901081122.NAA00415@ceia.nordier.com>
In-Reply-To: <199901080729.PAA40072@spinner.netplex.com.au> from Peter Wemm at "Jan 8, 99 03:29:03 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
Peter Wemm wrote:
 
> At the risk of inflaming this again, you mentioned 1996 bootblocks..  As I 
> understand it, bootblocks that old cannot start up /boot/loader, no matter 
> what it's called.  I don't have any bootblocks this old, so I'm going on 
> hearsay.  I would really like to know why this happens, I hear that it's 
> something to do with the way btxld constructs the empty symbol table or 
> something.

The November 1994 bootblocks, just installed off a FreeBSD 2.0R CDROM,
have no trouble starting /boot/loader on a test box here:

|   >> FreeBSD BOOT @ 0x10000: 640/7552 k of memory
|   Use hd(1,a)/kernel to boot sd0 when wd0 is also installed.
|   Usage: [[[wd(0,a)]/kernel][-s][-r][-a][-c][-d][-b]]
|   Use ? for file list or simply press Return for defaults
|   Boot: /boot/loader
|   Booting wd(0,a)/boot/loader @ 0x100000
|   text=0x1000 data=0x1c000 bss=0x0 total=0x11d000 entry point=0x100000
|   
|   BTX loader 0.01  BTX version is 0.87
|   Console: internal video/keyboard
|   BIOS drive A: is disk0
|   BIOS drive C: is disk1
|   
|   FreeBSD/i386 bootstrap loader, Revision 0.2  640/7552kB
|   (rnordier@siri.nordier.com, Sun Jan  3 15:48:01 SAST 1999)
|   Can't work out which disk we are booting from.
|   Guessed BIOS device 0x1 not found by probes, defaulting to disk0:
|   can open '/boot/boot.conf': input/output error
|   
|   Hit [Enter] to boot immediately, or any other key for command prompt.
|   Booting [kernel]...
|   can't load 'kernel'
|   
|   Type '?' for list of commands, 'help' for more detailed help.
|   disk0a:> boot disk1a:/kernel
|   [and away we go]

I've tried this before, with various other old (but more recent)
bootblocks and have never had a problem.

As a matter of common sense, I'd doubt that btxld(8) is to blame,
even if there are problems on certain machines.  This is a.out, not
ELF, and "constructing an empty symbol table" is not something that
can really be done more than one way.  (You note in the header that
there are zero bytes and you write zero bytes.)

Another suggestion, made some time ago, was that the old bootblocks
are not expecting zero-length structures and instruct the BIOS to
read zero sectors from disk.  This certainly would cause problems,
as zero is an illegal argument, though many BIOSes would probably
DTRT.  However, I've never been able to actually get any of the
old boot code to make such an illegal BIOS call.

I don't mind taking a further look at this, if Julian or anyone can
readily reproduce the problem, but the bottom line is that old
bootblocks load /boot/loader just fine much (most?) of the time.

-- 
Robert Nordier

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901081122.NAA00415>