BIOS modification for headless unit

L

LIKAI

From Sir, Slobodan's previous post:
------------------------------------------------------------------------------------------------------------------------------------------
For headless boot to work, BIOS must be able to pass control to MBR code
instead of reporting error with video adapter. If not then
boot will not happen.
Check in BIOS there might be some error reporting option regarding the video
adapter.
------------------------------------------------------------------------------------------------------------------------------------------

We've verify that this is probabily the problem with our headless unit
because the system hangs after BIOS initial, and before ntldr. However, is
there more detail information on which part in the BIOS we should change?
INT 10 return? INT 15 return?

We have control of BIOS code to do the modification.

Thanks,

Victor
 
K

KM

LIKAI,

BIOS usually stops booting machine with error messages like "keyboard not present" or - in case of no VGA card - it stops with some
audio signals (ususally just a beep to a system speaker).
Do you have the system speaker in your device?

Btw, many BIOS implementations often offer a setting like "Halt on no errors".

Anyway, if previous thread you mentioned you could boot DOS without problem. This means you unlikely have problems with BIOS.

Since you mentioned you have control over BIOS code you may want to check POST procedure (INT 19). At first stage the POST test
usually checks all of the basic components including video card.

KM
 
R

Richard

I love the one "No Keyboard Detected - Press F1 to continue". You figure
after after 15 years of seeing this in the system bios, someone would have
been sharp enough to catch it..... <grin>



KM said:
LIKAI,

BIOS usually stops booting machine with error messages like "keyboard not
present" or - in case of no VGA card - it stops with some
 
L

LIKAI

The system can boot to DOS. It's not hanging during the BIOS POST. It hangs
after BIOS pass the control(far jump) to MBR of the HD; before the XPE ntldr
(I used the windbg on the debug mode of ntldr. I got message when I use an
external adapter and no debug message when I take the vga adapter out).

Adding an external VGA adapter will work with XPE with no problem.

Anything else we can do to make it work?

Thanks,
 
S

Slobodan Brcin \(eMVP\)

Hi Likai,

This has no sense but let me play along.

You have three check points that you can make.

1. You can place your MBR code that will toggle state of some RS-232 pin so you can see whether MBR was executed by BIOS. (Since you
can boot to DOS I assume that it was loaded)
2. You can place your code in PBR. This way you can verify that MBR found and correctly loaded PBR.
3. You can inject your code on the beginning of ntldr this way you will see if ntldr was loaded by PBR.
4. You can make boot.ini that will load dos boot sector from file and boot to dos. (Or load your code). This will verify that ntldr
is working or not.

If you can pass step 4 then problem is XPe related.

HTH,
Slobodan
 
K

KM

LIKAI,

Interesting..

I agree with Slobodan. Since you see the hang on jumping to MBR code you may want to play with the MBR to make sure it gets
executed. Beside toggling state of some RS-232 pin, you can also chaneg some bits/bytes on teh same HDD (pretty simple with BIOS
interrupts if worked). Changed bytes will indicate the MBR was executed. You can even write some useful info data (error codes, a
few different outputs in different places of the code, etc.).
Or you can send a few beeps on system speaker. Just "out" to ports 61h, 43h, 42h. (grab some code from here:
http://courses.ece.uiuc.edu/ece390/books/labmanual/io-devices-speaker.html,
or here http://www.husseinsspace.com/teaching/udw/1996/asmnotes/chapsix.htm)

The same can be done with PBR and ntldr.

Another test could be done if your BIOS happens to be PXe enabled. If it supports network boot (don't know if your target has a
network card), you can create a headless SDI image and try to boot it on the client. You don't have to capture postFBA image (since
you are going to be doing the image for testing purposes anyway) but jsut make sure to have an early FBA phase command to either
send debug output to a serial port or do a few beeps on system speaker.

KM
 
L

LIKAI

Dear Slobodan and KM,
Thanks for these great suggestion. I didn't realize that I can do so many
things in the MBR and ntldr. I'll try all these and see if I can get though
these trouble.

I was wondering if all headless system will go through these issues, or it's
just us. The information from books and documents seems to be so easy. I am
afraid I just miss on one simple mistake to make it not working. I want to
thank you again for supporting me in such detail way. I'll check our system
right away.

Victor
 
L

LIKAI

I also find the following information from internet:

http://www.dewassoc.com/kbase/multiboot/boot_ini.htm

Fixing display problems
Microsoft learned early on that video drivers, especially in NT, were prone
to problems either as the result of corruption or merely due to
incompatibilities. When Windows NT (all versions) is installed, you will
note that the boot loader always provides for a boot into the operating
system with a plain vanilla VGA driver, thus a VGA compatible display
device is one of the basic requirements of all Windows NT installations.

A typical situation might involve updating your current display driver, or
possibly installing a new video card with new drivers only to start the
machine and find out the new driver version doesn't work correctly with your
hardware. Obviously it's very difficult to fix problems when nothing appears
on the video screen. Therefore, by default, Windows NT setup (all versions)
creates an entry in BOOT.INI with the optional switch /basevideo. In the
sample BOOT.INI above, this option will display in the menu as "Windows NT
Workstation 4.00 [VGA mode]." Choosing this option will cause the system to
use a generic VGA video driver, which should work with any VGA compliant
display. In most cases, this will enable you to reboot and then fix an
incorrect or improperly working display driver.
 
K

KM

LIKAI,

This is correct information but it does not help you much. It is basically to fix problems with existing (not properly installed or
set up) video adapters.

In your case, you don't have video card in the machine at all. You need "VGA Boot Driver" driver component instead of "VGA Save"
driver component in your image.
Since you mentioned you followed the "headless" instaructions from XPe documentation I believe you already have the "VGA Boot
Driver" in your configuration. (btw, disable the "VGA Save")

KM
I also find the following information from internet:

http://www.dewassoc.com/kbase/multiboot/boot_ini.htm

Fixing display problems
Microsoft learned early on that video drivers, especially in NT, were prone to problems either as the result of corruption or
merely due to incompatibilities. When Windows NT (all versions) is installed, you will note that the boot loader always provides
for a boot into the operating system with a plain vanilla VGA driver, thus a VGA compatible display device is one of the basic
requirements of all Windows NT installations.

A typical situation might involve updating your current display driver, or possibly installing a new video card with new drivers
only to start the machine and find out the new driver version doesn't work correctly with your hardware. Obviously it's very
difficult to fix problems when nothing appears on the video screen. Therefore, by default, Windows NT setup (all versions) creates
an entry in BOOT.INI with the optional switch /basevideo. In the sample BOOT.INI above, this option will display in the menu as
"Windows NT Workstation 4.00 [VGA mode]." Choosing this option will cause the system to use a generic VGA video driver, which
should work with any VGA compliant display. In most cases, this will enable you to reboot and then fix an incorrect or improperly
working display driver.

KM said:
LIKAI,

Interesting..

I agree with Slobodan. Since you see the hang on jumping to MBR code you may want to play with the MBR to make sure it gets
executed. Beside toggling state of some RS-232 pin, you can also chaneg some bits/bytes on teh same HDD (pretty simple with BIOS
interrupts if worked). Changed bytes will indicate the MBR was executed. You can even write some useful info data (error codes, a
few different outputs in different places of the code, etc.).
Or you can send a few beeps on system speaker. Just "out" to ports 61h, 43h, 42h. (grab some code from here:
http://courses.ece.uiuc.edu/ece390/books/labmanual/io-devices-speaker.html,
or here http://www.husseinsspace.com/teaching/udw/1996/asmnotes/chapsix.htm)

The same can be done with PBR and ntldr.

Another test could be done if your BIOS happens to be PXe enabled. If it supports network boot (don't know if your target has a
network card), you can create a headless SDI image and try to boot it on the client. You don't have to capture postFBA image
(since you are going to be doing the image for testing purposes anyway) but jsut make sure to have an early FBA phase command to
either send debug output to a serial port or do a few beeps on system speaker.

KM
 
L

LIKAI

Dear Slobodan and KM,
We finally solved the problem with a special fix on the BIOS source. BIOS
must be modified to report a normal non VGA system.

I want to give special thanks to you.

Li-Kai
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top