Mailing List Archive

vesamenu.c32 + include + CLI woes
Hi all,

In June 2007 Jerry Nelson started a thread on this mailing list about a problem he was seeing. The thread was http://syslinux.zytor.com/archives/2007-June/008673.html

After several hours of searching through the list, I am still convinced that his problem was never solved and is very valid. I recently moved from the old syslinux config options model (all labels in 1 default config file) to having a main menu and submenus using vesamenu.c32. The main menu points to all of the submenus and also has a label for localboot. Each submenu has tons of labels that fit the category of the submenu.

The problem is that not every user wants to navigate the menu structure to find the label they want to boot, but they would rather hit escape to get the boot: prompt and type in the memorized label like they used to in the old syslinux model. However, hitting escape and getting the boot: prompt only recognizes the label in the default config file and not in any of the submenu config files. I too have tried MANY attempts at using CONFIG and INCLUDE directives, but have been unsuccessful. Using just the INCLUDE option still dumps all of the labels from the included file into my main menu and really makes a mess of things.

I would even be fine adding all the labels from all of the submenu config files into the main menu config if there was any way for them not to show up in the menu.

Please help, my forehead hurts from pounding it on the keyboard.....


Here is what my main menu config file that gets loaded by default looks like:

*****************************************************************
# Graphical Menu Config...

default vesamenu.c32
PROMPT 0
TIMEOUT 300
SAY Please enter boot label:
F1 gfx/menu-help.conf
#INCLUDE gfx/menu-all.conf
MENU BACKGROUND back.jpg

menu color title 1;37;40 #ffffffff #00000000 std
menu color border 1;37;40 #ffffffff #00000000 std
menu color tabmsg 1;31;40 #ff8fff89 #00000000 std
menu color sel 7;37;40 #ffef0bd2 #ffa3d3f8 all
menu color hotsel 7;37;40 #ffef0bd2 #ffa3d3f8 all
menu color unsel 1;31;40 #b0ffcf00 #00000000 std
menu color hotkey 1;31;40 #ffffff00 #00000000 std
menu color timeout_msg 37;40 #80ffffff #00000000 std
menu color timeout 1;31;40 #ffff0000 #00000000 std
menu color help 1;37;40 #ffffffff #00000000 std
menu color msg01 37;40 #80ffffff #00000000 std

MENU WIDTH 55
MENU MARGIN 1
MENU PASSWORDMARGIN 3
MENU ROWS 21
MENU TABMSGROW 27
MENU HELPMSGROW 28
MENU HELPMSGENDROW 28
MENU CMDLINEROW 27
MENU ENDROW 28
#MENU PASSWORDROW 27
MENU TIMEOUTROW 28
MENU TITLE Welcome to the SLED PXE / Install System

# Help menu
label help
MENU DISABLE
MENU LABEL ^F1 - Help Screen
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-help.conf

LABEL harddisk
MENU DEFAULT
MENU LABEL ^Boot from local disk
localboot 1
MENU SEPARATOR

# openSuSUE menu
label opensuse
#TEXT HELP
#These are the installable openSuSE distributions
#ENDTEXT
MENU LABEL ^openSuSE Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-opensuse.conf

# NLD menu
label nld
MENU LABEL ^Novell Linux Desktop Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-nld.conf

# SLED menu
label sled
MENU LABEL ^SLED Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-sled.conf

# SLES menu
label sles
MENU LABEL S^LES Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-sles.conf

# Novell menu
label novell
MENU LABEL O^ther Novell Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-novell.conf

# Redhat menu
label redhat
MENU LABEL ^Redhat & Fedora Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-redhat.conf

# Other menu
label other
MENU LABEL Ot^her Distributions
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-other.conf

# Misc menu
label misc
MENU LABEL ^Misc Options & Utilities
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-misc.conf
MENU SEPARATOR

# Main menu
label main
MENU LABEL M^ain Menu
KERNEL vesamenu.c32
APPEND pxelinux.cfg/gfx-default

*****************************************************************


An example of one of the submenu config files would be:
*****************************************************************
# Default boot option to use
DEFAULT vesamenu.c32

# Prompt user for selection
PROMPT 0

# Help menu
label help
MENU DISABLE
MENU LABEL F1 - Help Screen
KERNEL vesamenu.c32
APPEND gfx/menu-default gfx/menu-help.conf

# Boot Local Disk
label harddisk
MENU DEFAULT
MENU LABEL Boot from local disk
localboot 1
MENU SEPARATOR

#Options Here
# SuSE Linux 9.2 Professional - 32 Bit
label suse9.2
MENU LABEL ^A. suse9.2 - SuSE Linux 9.2 - 32 Bit
kernel kernels/suse9.2
append initrd=initrds/suse9.2.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse92 splash=silent showopts

uSE Linux 9.2 Professional - 64 Bit
label suse9.2-64
MENU LABEL ^B. suse9.2-64 - SuSE Linux 9.2 - 64 Bit
kernel kernels/suse9.2-64
append initrd=initrds/suse9.2-64.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse92 splash=silent showopts

# SuSE Linux 9.3 Professional - 32 Bit
label suse9.3
MENU LABEL ^C. suse9.3 - SuSE Linux 9.3 - 32 Bit
kernel kernels/suse9.3
append initrd=initrds/suse9.3.img ramdisk_size=65536 install=nfs://XXX.XXX.249.243/install/suse93 splash=silent showopts

# SuSE Linux 9.3 Professional - 64 Bit
label suse9.3-64
MENU LABEL ^D. suse9.3-64 - SuSE Linux 9.3 - 64 Bit
kernel kernels/suse9.3-64
append initrd=initrds/suse9.3-64.img ramdisk_size=65536 install=nfs://XXX.XXX.249.243/install/suse93 splash=silent showopts

# openSuSE 10.0 - 32 Bit
label suse10
MENU LABEL ^E. suse10 - openSuSE 10.0 - 32 Bit
kernel kernels/suse10
append initrd=initrds/suse10.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse10 splash=silent showopts

# openSuSE 10.0 - 64 Bit
label suse10-64
MENU LABEL ^F. suse10-64 - openSuSE 10.0 - 64 Bit
kernel kernels/suse10-64
append initrd=initrds/suse10-64.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse10_64 splash=silent showopts

# openSuSE 10.1 - 32 Bit
label suse10.1
MENU LABEL ^G. suse10.1 - openSuSE 10.1 - 32 Bit
kernel kernels/suse10.1
append initrd=initrds/suse10.1.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse101 splash=silent showopts

# openSuSE 10.2 - 32 Bit
label suse10.2
MENU LABEL ^H. suse10.2 - openSuSE 10.2 - 32 Bit
kernel kernels/suse10.2
append initrd=initrds/suse10.2.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse102 splash=silent showopts

# openSuSE 10.2 - 64 Bit
label suse10.2-64
MENU LABEL ^I. suse10.2-64 - openSuSE 10.2 - 64 Bit
kernel kernels/suse10.2-64
append initrd=initrds/suse10.2-64.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse102_64 splash=silent showopts

# openSuSE 10.3 - 32 Bit
label suse10.3
MENU LABEL ^J. suse10.3 - openSuSE 10.3 - 32 Bit
kernel kernels/suse10.3
append initrd=initrds/suse10.3.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse103 splash=silent showopts

# openSuSE 10.3 - 64 Bit
label suse10.3-64
MENU LABEL ^K. suse10.3-64 - openSuSE 10.3 - 64 Bit
kernel kernels/suse10.3-64
append initrd=initrds/suse10.3-64.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse103_64 splash=silent showopts

# openSuSE 11.0 - 32 Bit
label suse11
MENU LABEL ^L. suse11 - openSuSE 11.0 - 32 Bit
kernel kernels/suse11
append initrd=initrds/suse11.img ramdisk_size=65536 insmod=e100 install=nfs://XXX.XXX.249.243/install/suse11 splash=silent showopts
MENU SEPARATOR

# Return to Main Menu
LABEL MainMenu
MENU LABEL Main Menu
KERNEL vesamenu.c32
APPEND pxelinux.cfg/gfx-default

******************************************************************

Thanks in advance for any help in solving this little configuration dilema.

-Bryan


_______________________________________________
SYSLINUX mailing list
Submissions to SYSLINUX@zytor.com
Unsubscribe or set options at:
http://www.zytor.com/mailman/listinfo/syslinux
Please do not send private replies to mailing list traffic.
Re: vesamenu.c32 + include + CLI woes [ In reply to ]
Bryan Perry wrote:
> Hi all,
>
> In June 2007 Jerry Nelson started a thread on this mailing list about a problem he was seeing. The thread was http://syslinux.zytor.com/archives/2007-June/008673.html
>
> After several hours of searching through the list, I am still convinced that his problem was never solved and is very valid. I recently moved from the old syslinux config options model (all labels in 1 default config file) to having a main menu and submenus using vesamenu.c32. The main menu points to all of the submenus and also has a label for localboot. Each submenu has tons of labels that fit the category of the submenu.
>
> The problem is that not every user wants to navigate the menu structure to find the label they want to boot, but they would rather hit escape to get the boot: prompt and type in the memorized label like they used to in the old syslinux model. However, hitting escape and getting the boot: prompt only recognizes the label in the default config file and not in any of the submenu config files. I too have tried MANY attempts at using CONFIG and INCLUDE directives, but have been unsuccessful. Using just the INCLUDE option still dumps all of the labels from the included file into my main menu and really makes a mess of things.
>
> I would even be fine adding all the labels from all of the submenu config files into the main menu config if there was any way for them not to show up in the menu.
>
> Please help, my forehead hurts from pounding it on the keyboard.....
>

It is ugly, but there is a way to do it (I have plans for a much cleaner
implementation, but I'm being way too busy unfortunately.)

This is how: have your main configuration file contain:

-------------
# This is where we start the menu tree...
default vesamenu.c32 main.cfg

include main.cfg
include submenu1.cfg
include submenu2.cfg
include submenu3.cfg
--------------

The trick is that the root of the menu tree doesn't actually have to be
your main configuration file (the one that's read by the CLI.) Thus,
you can have the main configuration file include ALL your submenus, and
therefore seeing all the labels (at least up to the 64K limit in the CLI.)

-hpa

_______________________________________________
SYSLINUX mailing list
Submissions to SYSLINUX@zytor.com
Unsubscribe or set options at:
http://www.zytor.com/mailman/listinfo/syslinux
Please do not send private replies to mailing list traffic.
Re: vesamenu.c32 + include + CLI woes [ In reply to ]
It is ugly, but there is a way to do it (I have plans for a much cleaner
implementation, but I'm being way too busy unfortunately.)

This is how: have your main configuration file contain:

-------------
# This is where we start the menu tree...
default vesamenu.c32 main.cfg

include main.cfg
include submenu1.cfg
include submenu2.cfg
include submenu3.cfg
--------------

The trick is that the root of the menu tree doesn't actually have to be
your main configuration file (the one that's read by the CLI.) Thus,
you can have the main configuration file include ALL your submenus, and
therefore seeing all the labels (at least up to the 64K limit in the CLI.)

-hpa


Right, I have played with that option too. The problem I have is that all of the label statements from the included submenu config files still show up in the main menu where I only want menu options to go to the submenus. In looking through the documentation I am lead to believe that the INCLUDE directive should not put the labels in the menu, only the MENU INCLUDE directive should do that but it doesn't appear to be working that way.

If the INCLUDE directive only included the configuration and did not alter the main menu this would be the perfect way to solve my problem.

By the way, thanks for the response. It's surprising how many open source projects don't get any response from developers.

-Bryan


_______________________________________________
SYSLINUX mailing list
Submissions to SYSLINUX@zytor.com
Unsubscribe or set options at:
http://www.zytor.com/mailman/listinfo/syslinux
Please do not send private replies to mailing list traffic.
Re: vesamenu.c32 + include + CLI woes [ In reply to ]
Bryan Perry wrote:
> Right, I have played with that option too. The problem I have is that all of the label statements from the included submenu config files still show up in the main menu where I only want menu options to go to the submenus. In looking through the documentation I am lead to believe that the INCLUDE directive should not put the labels in the menu, only the MENU INCLUDE directive should do that but it doesn't appear to be working that way.

I don't know what lead you to that idea.

> If the INCLUDE directive only included the configuration and did not alter the main menu this would be the perfect way to solve my problem.

You're missing the point. Your main menu is NOT the main configuration
file (with the INCLUDE directives): your main menu is a separate file,
and by putting it into the DEFAULT directive, you get the menu system to
go straight there.

> By the way, thanks for the response. It's surprising how many open source projects don't get any response from developers.

Well, you get what you pay for, I guess.

-hpa

_______________________________________________
SYSLINUX mailing list
Submissions to SYSLINUX@zytor.com
Unsubscribe or set options at:
http://www.zytor.com/mailman/listinfo/syslinux
Please do not send private replies to mailing list traffic.