Re: BTX loader hangs after version info



On Fri, May 23, 2008 at 06:11:01PM -0400, John Baldwin wrote:
On Friday 23 May 2008 09:26:45 am Kostik Belousov wrote:
On Fri, May 23, 2008 at 08:29:09AM -0400, John Baldwin wrote:
On Friday 23 May 2008 07:53:11 am Kostik Belousov wrote:
On Fri, May 23, 2008 at 01:22:55PM +1200, Mark Kirkwood wrote:
James Seward wrote:
Hello,

Two days ago I csup'd my desktop at home, which was running RELENG_7
from about 7.0-RELEASE time, to bring it up-to-date (still on
RELENG_7). I followed my usual buildkernel/world procedure (the usual
one) which has worked fine all the way since 5.x. After installing
kernel and restarting in single user, it was working fine. However,
following installworld it will not boot.

It stops immediately after "BTX loader 1.00 BTX version 1.02", but
with the cursor on the line *above* the first "B". Nothing futher
happens, but the system responds to Ctrl-Alt-Del.

I have managed to start it using the install CD and csup'd back to a
version just before the commit to BTX that moved it to 1.02 (March
18th, I think). However, that version too hangs after "BTX loader 1.00
BTX version 1.01".

My desktop is currently building RELENG_7_0 to see if that will work,
but I won't know that until later as I'm at work and it is at home :)

The install CD (BTX 1.00/1.01) boots fine. Nothing else changed on my
system between the last successful boot and the unsuccessful one.

Any suggestions/advice for what I can try next, or what I can do to
help the troubleshooting process?

My desktop is an Athlon64 but I am using i386, on an Asus A8V-E Deluxe
board.

FWIW - I am seeing this too, on a Supermicro P3TDDE. 7-STABLE src from
28-Feb is fine, but Mar, Apr, May code all hangs after printing "loading
/boot/defaults/loader.conf" - presumably reading my /boot/loader.conf?

Interestingly I can usually get it to boot by escaping to the loader
prompt and then just pressing return.

Oddly some other machines (Supermicro P3TDER and Asus PRO31J Laptop)
behave normally with src from Mar->May.

In all cases the canonical procedure from UPDATING was used (buildworld,
kernel, reboot single, mergemaster -p, installworld, delete-old,
mergemaster, reboot).

I happy to help collect some debug info (how do you switch this on for
the loader?), tho the machine exhibiting the problem is my workstation
(of course)!

Try to install new bootblock.

I would be wary of that as it might make things worse? These problems are all
from starting /boot/loader. boot2 is still working fine and thus there is
still the possiblity of using boot2 to load /boot/loader.old as a workaround.
If you update boot2 and it breaks you can't fix that w/o booting off of some
other media such as a CD.

Debugging these hangs is not easy to do remotely. If you know assembly then
there are some things you can play with. For example, in the case where it
hangs after printing out the BTX version (from btxldr.S) you could start
adding debugging to btx.S to print out '.' characters in various places and
see how many get printed out before it hangs. However, doing this requires
familiarity with assembly and is a lot easier with physical access to a box.

When I worked on my version of the realbtx, I sometimes experienced hangs when
vm86 btx run before real-mode btx. I did not investigated it then, only noted
the issue.


Try this patch. I'm not 100% certain this will fix it as I can't reproduce
the issue, but I think it might help. Specifically, when the boot code makes
a v86 call, the loader/boot2/whatever swaps in/out a new set of registers via
the v86 structure including the eflags register. However, none of the boot
programs actually initialized the v86 structure. Thus, the BIOS routines
would start off running with whatever garbage was in v86.efl when each boot
program started. This meant that we could end up invoking BIOS routines with
interrupts disabled, and I think this might explain a hard hang (if a BIOS
routine was waiting for an interrupt the interrupt would never fire). The
patch fixes all the boot programs to initialize v86 to a better known state.
At the least it sets v86.efl to a sane value (0x202) rather than random. (The
random might have always been 0x0 BTW, not sure on that one.)


I can confirm that this patch fixes the loader problem seen with
my old Tyan S2720 MB.

- Peter
_______________________________________________
freebsd-stable@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: BTX loader hangs after version info
    ... It stops immediately after "BTX loader 1.00 BTX version 1.02", ... that version too hangs after "BTX loader 1.00 ... The install CD boots fine. ... system between the last successful boot and the unsuccessful one. ...
    (freebsd-stable)
  • Re: BTX halts installing 5.x
    ... booting 5.x lately, I had the same symptoms -- cold boot works, ... warm boots, BTX halted. ... > Building the boot loader arguements ... > Relocating the loader and the BTX ...
    (freebsd-current)
  • BTX Halted from 5.2.1 CD, MS-9211 1U Rackmount Server
    ... Building the boot loader arguments ... Relocating the loader and the BTX ... BIOS CD is cd0 ...
    (freebsd-questions)
  • BTX halted with 7.0-CURRENT-2007-06
    ... I'm trying to install 7.0-CURRENT on an Epox EP-D3VA motherboard with ... When I boot from the FreeBSD 7.0-CURRENT disk I get this error: ... Building the boot loader arguments ... Relocating the loader and the BTX ...
    (freebsd-current)
  • Re: BTX halts installing 5.x
    ... > Building the boot loader arguements ... > Relocating the loader and the BTX ... > I can boot 4.9 and post a dmesg if that would help, but to briefly describe the hardware: ... to 'no emulation' bootable CDs that happened with between the 4.x and ...
    (freebsd-current)