[syslinux] Problems booting from local hd
Stefan Titze
stefan.titze at baramundi.de
Thu Apr 26 06:58:17 PDT 2012
Hi,
I've got a question regarding pxelinux:
It seems that there is a buck in syslinux 3.86 (or still is in the current build) in the reset_pxe function. If I call "syslinux_local_boot(0)" (in a COM32 binary) the KeepPXE variable is always 1 which resets the PXE stack instead of unloading it:
local_boot:
push cs
pop ds
mov [LocalBootType],ax
call vgaclearmode
mov si,localboot_msg
call writestr_early
; Restore the environment we were called with
call reset_pxe
.
reset_pxe:
or byte [KeepPXE],1
; Fall through
unload_pxe:
push ds
push es
mov ax,cs
mov ds,ax
mov es,ax
cmp byte [KeepPXE],0 ; Should we keep PXE around?
jne do_reset_pxe
on Dell Precision M4600 Laptops (BIOS Rev. A08) reseting the PXE stack causes a reboot and Dell Latitude E5520 laptops (BIOS Rev. A05) start over with another PXE boot (-> PXE boot cycle until not enough free memory is left over to startup syslinux).
With syslinux 4.05 both laptops try to exit PXE but they will freeze before they can boot the local disk.
The question is why is it necessary to reset PXE when local_boot (0) is called? I looked in the syslinux 3.61 source code (which works great by the way) and there the PXE stack will not be resetted.
If I change the code to (quick fix):
reset_pxe:
;or byte [KeepPXE],1
; Fall through
unload_pxe:
push ds
push es
everything works fine again.
Thanks in advance
Stefan Titze
(Developement, baramundi software AG)
More information about the Syslinux
mailing list