Tuesday, 22 March 2011

PXE-MOF: Exiting Broadcom PXE ROM and hangs

PXE-MOF: Exiting Broadcom PXE ROM


We got this error while using pxe boot , usually we install server operating systems by changing the options in pxelinux.cfg files in pxe boot server.

Today we had an issue with PXE boot server, we have a old fedora 8 server for pxe/tftp boot and kickstart installations. But one of the admin team member had upgraded the pxelinux.0 file with the latest version of 4.03 where as the older version is 3.x but he leftout some of the files such as  chain.c32 and also we are not aware of the change/upgrade therefore we continued to use the old pxelinux.cfg files which had entries as follows:



timeout 10
prompt 1
default localdisk

LABEL netinstall
KERNEL centos5.5/vmlinuz
APPEND initrd=centos5.5/initrd.img ksdevice=eth0 ks=http://bldsrv/exports/kickstarts/centos55.ks


LABEL localdisk
localboot 0
timeout 80
TOTALTIMEOUT 9000

Observe the configuration options for label localdisk which was using localboot option which is obsolete in syslinux version 4.03 therefore the server used to stop at that point without booting locally therefore I had to download syslinux from :


Unpack the tar-ball and copied the following syslinux files to the /tftpboot directory on the dhcp/tftp server:

tar xvzf syslinux-*.tar.gz
cd syslinux-xx.xx
cp core/pxelinux.0 memdisk/memdisk com32/modules/chain.c32 com32/menu/menu.c32 /tftpboot/

In particular the chain.c32 tool is used to boot from localdisk in the latest versions of pxelinux. therefore I need to change my pxelinux.cfg file (or the default file) as follows:

timeout 10
prompt 1
default localdisk

LABEL netinstall
KERNEL centos5.5/vmlinuz
APPEND initrd=centos5.5/initrd.img ksdevice=eth0 ks=http://bldsrv/exports/kickstarts/centos55.ks


LABEL localdisk
kernel chain.c32
append hd0

For comparison, in many places you will find the following recipe for the default file:
default harddisk
label harddisk
localboot 0

This recipe can be error-prone and actually means boot from the next device in the BIOS boot order, rather than booting from the hard disk as you would be led to believe. 

An excerpt from the syslinux mailing list is as follows:

> This labels forks for me on isolinux.cfg :
>
> label harddisk
>   localboot 0x80
>   append SLX=0x80
>
> label floppy
>   localboot 0x00
>   append SLX=0x00
>
> except on some weird Compaq BIOSes, Works.
> And the append line I can't remember where it cames from, should work without
> it, I guess some patch for gfxboot that I still using for impress.
>
> --
> Gustavo Guillermo Pérez
> Compunauta uLinux
> www.compunauta.com
>
> _______________________________________________
> SYSLINUX mailing list
> Submissions to SYSLINUX at zytor.com
> Unsubscribe or set options at:
> http://www.zytor.com/mailman/listinfo/syslinux
> Please do not send private replies to mailing list traffic.
>
>

Yes, that should work most of the time.  On some BIOSes, localboot
won't work though.  It uses a code in the standard, but, well, you
know how it is with BIOSes if you've hung around here very long.  The
general impression I have is that if it turns on and boots, they stamp
an ok on it and ship it out.

The alternative, should you need it is to use the chainloader, which
is the chain.c32 moudule (in the com32/modules folder of the syslinux
archive.)  You load this and append either "hd# #" or "fd#" and it
will boot the drive and partition that you gave it (I think you can
get away with not specifying a partition for the harddrive as well.)
It starts numbering drives from 0 (eg hd0 corresponds roughly to
/dev/hda) and it starts numbering partitions from 1.  The reason it
numbers partitions from 1 is because if you specify 0 it tells it to
boot the MBR.

Localboot hasn't been a high priority in syslinux due to the fact that
the chainloader exists and that so many BIOSes are completely
unreliable with localboot.  It should more or less guarantee as close
to 100% compatibility as you get.  So, here's a sample line from a
bootable DVD I made:

LABEL cont
 MENU LABEL Continue Bootup
 KERNEL chain.c32
 APPEND hd0 0

I set this as the default timeout on my boot disc and if no one
presses a key within a certain period of time it continues the bootup
process -- kind of like how the Windows installation discs use.


References:



1 comment:

  1. Solución:
    Eliminar la partición de 100MB e insertar el DVD de instalación de Windows y ejecutar la reparación de sistema.

    Esto funciona con Windows 7

    ReplyDelete