Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2003 19:34:05 -0800 (PST)
From:      Jon Passki <cykyc@yahoo.com>
To:        freebsd-stable@freebsd.org
Subject:   BTX halt error: pxe/etherboot voodoo?
Message-ID:  <20031126033405.82131.qmail@web40708.mail.yahoo.com>

next in thread | raw e-mail | index | archive | help
Hello,

I have a consistent error involving loader(8)...

My Compaq Armada M700 laptop is connected through a docking
station.  The station has a 3Com 3c905c TXM card w/ "Managed PC
Boot Agent (MBA) v4.00" and PXE 2.00.  The BIOS and NIC are set to
boot from the network first.

Once booted, I have dhcpd setup with some vendor options to load
Etherboot's (v5.0.8) pxezloader.  pxezloader then loads the
boot.menu file, and through the menus I have a choice to boot the
local harddrive.  Also, I have enabled a more generic option in
Etherboot to boot the local harddrive.  When either of these
choices are executed, the following happens:

-) The boot0 menu appears and selects (or I select) the FreeBSD
partition
-) boot2 loads /boot/loader, which then found an exception


FreeBSD/i386 bootstrap loader, Revision 0.8
(root@dominique, Mon Sep  8 11:23:25 CDT 2003)
-
int=0000000d  err=0000001a  efl=00030202  eip=0000088f
eax=00000200  ebx=0000000c  ecx=00000e54  edx=00000080
esi=00000000  edi=00000000  ebp=00000000  esp=00000406
cs=9d74  ds=0000  es=48ec    fs=0000  gs=0000  ss=9dc2
cs:eip=cc 40 00 ec 48 00 00 00-00 00 00 00 00 06 02 00
ss:esp=38 91 00 00 c6 02 00 00-00 00 06 00 00 00 f3 4a


-) This error does not occur if I interrupt boot2 and have it load
the kernel directly [i.e. 0:ad(0,a)/kernel].  The system boots fine

-) This error does not occur is I directly boot the harddrive by
either resetting the BIOS or NIC options to boot the local
harddrive first

-) This error does not occur if I network boot a diskless FreeBSD
kernel

-) The above register values have been the same on all observed
errors

The system is a 4.9-PRERELEASE (Oct 26 2003), built on another
system.  That system had the following in /etc/make.conf:
CPUTYPE=486
XFREE86_VERSION=4
NO_BIND=yes
NO_OPENSSH=yes
.undef PERL_VER
.undef PERL_VERSION
.undef PERL_ARCH
.undef NOPERL
.undef NO_PERL

Etherboot modifications:
grep ^CFLAGS Config
CFLAGS32+=      -DPCBIOS
CFLAGS32+=      -DASK_BOOT=6 -DANS_DEFAULT=ANS_NETWORK
CFLAGS32+=      -DALLOW_ONLY_ENCAPSULATED
CFLAGS32+=      -DBACKOFF_LIMIT=7 -DCONGESTED
CFLAGS32+=      -DCAN_BOOT_DISK
CFLAGS32+=      -DTAGGED_IMAGE -DELF_IMAGE
CFLAGS32+=    -DIMAGE_FREEBSD
CFLAGS32+=    -DAOUT_IMAGE
CFLAGS32+=    -DFREEBSD_KERNEL_ENV
CFLAGS32+=      -Os -ffreestanding -fstrength-reduce
-fomit-frame-pointer -mcpu=i386
CFLAGS32+=      -malign-jumps=1 -malign-loops=1 -malign-functions=1
CFLAGS32+=      -Wall -W -Wno-format -Wno-unused

Etherboot build:
gmake bin32/3c905c-tpo.lzpxe
cp bin32/3c905c-tpo.lzpxe /tftpboot/


The only thing that seems off is when pxezloader initially boots,
it displays its relocation address differently from the Makefile. 
The Makefile has RELOCADDR=0x94000 by default.  When pxezloader is
loaded, it displays (via main.c) reloc=0x9400, missing a zero at
the end.  I've changed RELOCADDR to 0x74000 and 0x84000, with the
same exception error and register values.  Both times, though,
reloc displayed 0x7400 and 0x8400 respectively.  Setting RELOCADDR
to 0x104000 upset Etherboot and it did not build successfully :-)

Thoughts?

Jon Passki

p.s. I'm going to setup another box to exclude hardware issues
(e.g. flaky memory), just not tonight.  When I do, I'll report back.

__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/



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