[syslinux] EFI: HP + syslinux = crash

Oscar Roozen oscar.roozen at brightcomputing.com
Wed Aug 5 04:57:23 PDT 2015



On 05-08-15 10:01, Patrick Masotta wrote:
>>>>
>   Okay, the code in efi/ uses Print() from gnu_efi, but generic code from
>   core/ like core/elflink/load_env32.c prints their messages and debugging
>   stuff using printf(). These messages end up nowhere. This may explain
>   why I never saw anything beyond a certain point, even with debugging
>   turned on.
>   <<<
>
> isn't it redirected at all??

No. If, for example, I change:

         dprintf("Starting %s elf module subsystem...\n", ELF_MOD_SYS);

into regular printf(), I don't see the result in my ipmi-logs nor on my 
screen. If I change it to Aprint() (and %s into %a) then I do see the 
message.

To make sure it isn't overwritten before I see it, I put a while(1) in 
front, so it will end in an endless loop printing this message.

Maybe we need to explicitly redirect stdout and stderr to the console 
under EFI on some firmware?



>>>>
>   I was busy adding some code to dprintf.h to add a wrapper that converts
>   the dprintf calls to a APrint("%a", buf) calls when I got an idea... The
>   ILO4 environment provides a virtual COM2 port. I was reluctant to
>   hook  something to COM1 as I have to order some hardware for that, but this
>   also works very well. A pity I didn't think of using it earlier.
>   <<<
>
> You can set the com address for debugging (com1/com2/ whatever) if you like

I was originally looking for a way to debug to the console instead. 
Defining DEBUG_STDIO did not help. Now I know why.

> Are you still loading PNGs?
> Have you tried vesamenu w/o a background image?

No and yes. I removed all fancy stuff, leaving just:


	LABEL linux
	  KERNEL path/to/vmlinuz
	  IPAPPEND 3
	  APPEND initrd=path/to/initrd  rdblacklist=nouveau
	  MENU LABEL ^AUTO       - Normal node boot
	  MENU DEFAULT
	
	[.. some more entries ..]
	
	DEFAULT vesamenu.c32
	PROMPT 0
	TIMEOUT 50
	MENU TITLE Cluster Manager PXE Environment (EFI64)

With the default being either vesamenu.c32 or menu.c32.

Using menu.c32 i can sucessfully boot this kernel into a running system.


> when you do not see the transfer of ldlinux.e64 the chances are you are suffering the multi-nic bug.
> If you see "anything" after syslinux.efi transferred correctly that tells us the multi-nic bug is gone and
> there might be something else going on now.

See my message to Gene a few minutes ago. My guess is that the problems 
itself are not the reason to crash, but the exit-code or error-reporting 
code is the one doing the crashing.


More information about the Syslinux mailing list