[syslinux] ifcpu64.c32 not working properly when used in a menu include file

John N. Newman jnnewman at peer1.com
Tue Sep 4 14:02:27 PDT 2012


Thank you!  This seems to solve my problem entirely. There were several other options
inadvertently not getting parsed because I was doing a "MENU INCLUDE" rather than a 
plain old "INCLUDE", as you suggested - after taking care of these minor issues, I will
have a 100% working setup.

Again, my thanks,

--
John


On Sep 4, 2012, at 11:02 AM, Gert Hulselmans <hulselmansgert at gmail.com> wrote:

> 2012/9/4 John Newman <jnnewman at peer1.com>:
>> The following is a pxelinux problem, specifically to do with
>> including config files with the menu include directive and the
>> ifcpu64.c32 com module.
>> 
>> I have a working ifcpu64.c32 setup that jumps to the label rescue64
>> in the case of a 64-bit CPU. The label "rescue64" defines a 64-bit
>> kernel and a 64-bit initrd.img. The setup jumps to a label named
>> "rescue32" in the case of a 32-bit CPU, which is also a label, this
>> time defining a 32-bit vmlinuz and a 32-bit initrd.img/userland.
>> 
>> It looks more or less like the following:
>> 
>> # rescue_dev
>> LABEL rescue
>>  IPAPPEND 2
>>  MENU LABEL ^rescue (Auto-detect CPU type)
>>  KERNEL ifcpu64.c32
>>  APPEND rescue64 -- rescue32
>>  TEXT HELP
>>     Load appropriate image
>>  ENDTEXT
>> LABEL rescue64
>>  MENU HIDE
>>  IPAPPEND 2
>>  KERNEL images/vmlinuz64
>>  APPEND initrd=images/initrd64.img init=/linuxrc root=/dev/ram0 rw
>> devfs=nomount console=ttyS0,115200 console=tty0 ksipaddr=kickstart
>> LABEL rescue32
>>  MENU HIDE
>>  IPAPPEND 2
>>  KERNEL images/vmlinuz32
>>  APPEND initrd=images/initrd32.img init=/linuxrc root=/dev/ram0 rw
>> devfs=nomount console=ttyS0,115200 console=tty0 ksipaddr=kickstart
>> 
>> 
>> This all works perfectly when the code above is directly
>> in the pxe target file that is being used. However, when I use the
>> "MENU INCLUDE" directive in a file that defines some more
>> options to suck this bit in, the label parsing/jumping by ifcpu64.c32
>> stops working properly. When I select the "rescue (Auto-detect CPU
>> type)" option from the menu, instead of jumping to the label
>> rescue64, it tries to shove first the literal file rescue64 at me,
>> then when that isn't found it looks for rescue64.cbt, rescue64.0,
>> rescue64.com, rescue64.c32 and maybe a few others. Basically,
>> it is ignoring the rescue64 label and trying to directly spit
>> a rescue64 file out at me. I can see this from the tftpd logs.
>> 
>> Has anyone else seen similar behaviour? Any tips or ideas?
>> 
>> Greatly appreciated,
>> John
>> 
>> --
>> John Newman
>> Product Engineering - Peer1 Hosting
>> _______________________________________________
>> 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.
>> 
> 
> Hi John,
> 
> Can you try with:
>  INCLUDE filename
> instead?
> 
> In Syslinux versions lower than 5, there are 2 config parsers:
>  - one in the core, written in assembler
>  - one in (vesa)menu.c32, written in C
> 
> Only (vesa)menu.c32 processes MENU ... keywords.
> The config parser in C doesn't see your MENU INCLUDE.
> 
> When ifcpu64.c32 is called, it only sees the LABELs that are seen by the
> core config parser, and is thus unaware of everything specified in the file
> that you included with MENU INCLUDE.
> 
> - Gert
> _______________________________________________
> 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.
> 

--
John Newman
Product Engineering







More information about the Syslinux mailing list