[syslinux] Chaining from PXELinux to some other boot loader

Steve Marfisi smarfisi at emboot.com
Mon Nov 27 12:29:52 PST 2006


Behrad said:

>>I am using PXELinux to boot BartPE and some other application and it
works fine. There are some other Boot application which I am using 3COM
MBAUTIL PXE.mnu and floppy images. I have problem chaining from
pxelinux.0 to 3com pxe.0 (pxe.mnu).

One suggestion - Download the network boot tools eval from emBoot. The
boot image editor utility can be used to chain PXELINUX.0 from its *.PXE
images, which might work for you. In other words, you could boot pxe.0,
and then chain to pxelinux.0

Steve Marfisi
emBoot Inc.


-----Original Message-----
From: syslinux-request at zytor.com [mailto:syslinux-request at zytor.com] 
Sent: Monday, November 27, 2006 3:00 PM
To: syslinux at zytor.com
Subject: SYSLINUX Digest, Vol 44, Issue 24

Send SYSLINUX mailing list submissions to
	syslinux at zytor.com

To subscribe or unsubscribe via the World Wide Web, visit
	http://www.zytor.com/mailman/listinfo/syslinux
or, via email, send a message with subject or body 'help' to
	syslinux-request at zytor.com

You can reach the person managing the list at
	syslinux-owner at zytor.com

When replying, please edit your Subject line so it is more specific than
"Re: Contents of SYSLINUX digest..."


Today's Topics:

   1. Re: Problem with "additional" submenus (Murali Krishnan Ganapathy)
   2. Chaining from PXELinux to some other boot loader
      (behrad at rayavaran.com)
   3. Re: Chaining from PXELinux to some other boot loader
      (H. Peter Anvin)


----------------------------------------------------------------------

Message: 1
Date: Sun, 26 Nov 2006 14:52:02 -0800
From: "Murali Krishnan Ganapathy" <gmkrishn.uofc at gmail.com>
Subject: Re: [syslinux] Problem with "additional" submenus
To: "Grant Gossett" <ggossett at symantec.com>
Cc: syslinux at zytor.com
Message-ID:
	<e0926190611261452w7bfb996ckd9813ad73116488f at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Thanks for including the code. My first guess would have been the named
menu stuff (which you have kind off ruled out). Could you try to see
which is the first version of the menu system where the current code
breaks?

I will try to hunt down the issue.

- Murali

On 11/22/06, Grant Gossett <ggossett at symantec.com> wrote:
> Hello all,
>
> First off, thanks for the great work.
>
> I have recently added "more submenus" to a functioning advanced menu 
> that only had one "submenu off of the main menu before" The addition 
> of the new submenus has caused the main menu to not function correctly

> and I have been pouring over the code for several weeks and I just 
> cannot see the error that I have introduced. This happens with both 
> syslinux
> 3.20-pre8 and newer versions (sorry, I want to say 3.31 something, but

> don't have exact version number this was tried with other than
> 3.20-pre8)
>
> What was a single first-level menu off of the main menu now instead of

> having all "OPT_RUN" items now has additional "OPT_SUBMENU" items to 
> aid in organization. I'll refer to this menu as the first-level 
> submenu, because all of the subsequent submenus work perfectly off of 
> this first-level submenu.
>
> The best description of what is happening is this:
>
> Instead of the main menu options only being displayed, the first-level

> submenu is displayed at the top of my now mangled main menu. The title

> of the now mangled main menu is the displayed as the title of the 
> first-level submenu. The good main menu options are displayed below 
> the options for the first-level submenu in my now mangled main menu. 
> For a visual description here is the best I can do, and I apologize if

> it word wraps and just makes it more confusing:
>
> What I want to see:
>
> (main menu title)
> Boot Normally
> Win 98 Startup Disk
> Linux Kickstart Options -->     (Linux Kickstart Options level-1
submenu
> title)
>                                         Redhat EL (submenu) -->
> (L2 submenu title..)
>                                         Fedora Core (submenu) -->
>                                         RedHat 9 (submenu) -->
>                                         Return to main menu (exitmenu)

> What I see:
>
> (Linux Kickstart Options level-1 submenu title) Redhat EL (submenu) 
> --> Fedora Core (submenu) --> RedHat 9 (submenu) --> Return to main 
> menu (exitmenu) --> (goes to boot: prompt) Boot Normally Win 98 
> Startup Disk Linux Kickstart Options --> (goes to boot: prompt instead

> of first-level
> submenu)
>
>
> In addition to the code you'll find below, I have also tried to use
the
> add_menu funtion rather than add_named_menu to add the menus and have
> used those return values in the calls to "add_item(..,
OPT_SUBMENU,..)"
> for the 5th parameters and I get the exact same results.
>
> Here is my code, hopefully someone can spot what I am doing wrong:
>
> #ifndef NULL
> #define NULL ((void *) 0)
> #endif
>
> #include "menu.h"
> #include "com32io.h"
> #include <string.h>
>
>
> TIMEOUTCODE ontimeout()
> {
>   return CODE_ENTER;
> }
>
>
> int main(void)
> {
>   t_menuitem * curr;
>
>   // Choose the default title and setup default values for all
> attributes....
>   init_menusystem(NULL);
>   set_window_size(1,1,23,78); // Leave one row/col border all around
>
>   reg_ontimeout(ontimeout, 3000, 0);
>
>
>   // Advanced Server 4 Submenu
>   add_named_menu("Advanced Server 4", "Select Update revision", -1);
>   add_item("Release", "Release", OPT_RUN, "RHELAS4_x86", 0);
>   add_item("Update 1", "Update 1", OPT_RUN, "RHELAS4_x86_U1", 0);
>   add_item("Update 2", "Update 2", OPT_RUN, "RHELAS4_x86_U2", 0);
>   add_item("Update 3", "Update 3", OPT_RUN, "RHELAS4_x86_U3", 0);
>   add_item("Update 4", "Update 4", OPT_RUN, "RHELAS4_x86_U4", 0);
>   add_item("Back to RHEL Options Menu", "Back to Redhat Enterprise
Linux
> Options Menu", OPT_EXITMENU, "exit", 0);
>
>   // Enterprise Server 4 Submenu
>   add_named_menu("Enterprise Server 4", "Select Update revision", -1);
>   add_item("Release", "Release", OPT_RUN, "RHELES4_x86", 0);
>   add_item("Update 1", "Update 1", OPT_RUN, "RHELES4_x86_U1", 0);
>   add_item("Update 2", "Update 2", OPT_RUN, "RHELES4_x86_U2", 0);
>   add_item("Update 3", "Update 3", OPT_RUN, "RHELES4_x86_U3", 0);
>   add_item("Update 4", "Update 4", OPT_RUN, "RHELES4_x86_U4", 0);
>   add_item("Back to RHEL Options Menu", "Back to Redhat Enterprise
Linux
> Options Menu", OPT_EXITMENU, "exit", 0);
>
>   // Workstation 4 Submenu
>   add_named_menu("Workstation 4", "Select Update revision", -1);
>   add_item("Release", "Release", OPT_RUN, "RHELWS4_x86", 0);
>   add_item("Update 1", "Update 1", OPT_RUN, "RHELWS4_x86_U1", 0);
>   add_item("Update 2", "Update 2", OPT_RUN, "RHELWS4_x86_U2", 0);
>   add_item("Update 3", "Update 3", OPT_RUN, "RHELWS4_x86_U3", 0);
>   add_item("Update 4", "Update 4", OPT_RUN, "RHELWS4_x86_U4", 0);
>   add_item("Back to RHEL Options Menu", "Back to Redhat Enterprise
Linux
> Options Menu", OPT_EXITMENU, "exit", 0);
>
>   // Advanced Server 3 Submenu
>   add_named_menu("Advanced Server 3", "Select Update revision", -1);
>   add_item("Release", "Release", OPT_RUN, "RHELAS3_x86", 0);
>   add_item("Update 1", "Update 1", OPT_RUN, "RHELAS3_x86_U1", 0);
>   add_item("Update 2", "Update 2", OPT_RUN, "RHELAS3_x86_U2", 0);
>   add_item("Update 3", "Update 3", OPT_RUN, "RHELAS3_x86_U3", 0);
>   add_item("Update 4", "Update 4", OPT_RUN, "RHELAS3_x86_U4", 0);
>   add_item("Update 5", "Update 5", OPT_RUN, "RHELAS3_x86_U5", 0);
>   add_item("Update 6", "Update 6", OPT_RUN, "RHELAS3_x86_U6", 0);
>   add_item("Update 7", "Update 7", OPT_RUN, "RHELAS3_x86_U7", 0);
>   add_item("Update 8", "Update 8", OPT_RUN, "RHELAS3_x86_U8", 0);
>   add_item("Back to RHEL Options Menu", "Back to Redhat Enterprise
Linux
> Options Menu", OPT_EXITMENU, "exit", 0);
>
>   // Enterprise Server 3 Submenu
>   add_named_menu("Enterprise Server 3", "Select Update revision", -1);
>   add_item("Release", "Release", OPT_RUN, "RHELES3_x86", 0);
>   add_item("Update 1", "Update 1", OPT_RUN, "RHELES3_x86_U1", 0);
>   add_item("Update 2", "Update 2", OPT_RUN, "RHELES3_x86_U2", 0);
>   add_item("Update 3", "Update 3", OPT_RUN, "RHELES3_x86_U3", 0);
>   add_item("Update 4", "Update 4", OPT_RUN, "RHELES3_x86_U4", 0);
>   add_item("Update 5", "Update 5", OPT_RUN, "RHELES3_x86_U5", 0);
>   add_item("Update 6", "Update 6", OPT_RUN, "RHELES3_x86_U6", 0);
>   add_item("Update 7", "Update 7", OPT_RUN, "RHELES3_x86_U7", 0);
>   add_item("Update 8", "Update 8", OPT_RUN, "RHELES3_x86_U8", 0);
>   add_item("Back to RHEL Options Menu", "Back to Redhat Enterprise
Linux
> Options Menu", OPT_EXITMENU, "exit", 0);
>
>   // Workstation 3 Submenu
>   add_named_menu("Workstation 3", "Select Update revision", -1);
>   add_item("Release", "Release", OPT_RUN, "RHELWS3_x86", 0);
>   add_item("Update 1", "Update 1", OPT_RUN, "RHELWS3_x86_U1", 0);
>   add_item("Update 2", "Update 2", OPT_RUN, "RHELWS3_x86_U2", 0);
>   add_item("Update 3", "Update 3", OPT_RUN, "RHELWS3_x86_U3", 0);
>   add_item("Update 4", "Update 4", OPT_RUN, "RHELWS4_x86_U4", 0);
>   add_item("Update 5", "Update 5", OPT_RUN, "RHELWS3_x86_U5", 0);
>   add_item("Update 6", "Update 6", OPT_RUN, "RHELWS3_x86_U6", 0);
>   add_item("Update 7", "Update 7", OPT_RUN, "RHELWS3_x86_U7", 0);
>   add_item("Update 8", "Update 8", OPT_RUN, "RHELWS3_x86_U8", 0);
>   add_item("Back to RHEL Options Menu", "Back to Redhat Enterprise
Linux
> Options Menu", OPT_EXITMENU, "exit", 0);
>
>   // Redhat Enterprise Linux Kickstart Submenu Items
>   add_named_menu("Redhat Enterprise Linux Options", "Redhat Enterprise
> Linux Options", -1);
>   add_item("Advanced Server version 4", "Kickstart Redhat Enterprise
> Linux Advanced Server 4", OPT_SUBMENU, "Advanced Server 4", 0);
>   add_item("Enterprise Server version 4", "Kickstart Redhat Enterprise
> Linux Enterprise Server 4", OPT_SUBMENU, "Enterprise Server 4", 0);
>   add_item("Workstation version 4", "Kickstart Redhat Enterprise Linux
> Workstation 4", OPT_SUBMENU, "Workstation 4", 0);
>   add_item("Advanced Server version 3", "Kickstart Redhat Enterprise
> Linux Advanced Server 3", OPT_SUBMENU, "Advanced Server 3", 0);
>   add_item("Enterprise Server version 3", "Kickstart Redhat Enterprise
> Linux Enterprise Server 3", OPT_SUBMENU, "Enterprise Server 3", 0);
>   add_item("Workstation version 3", "Kickstart Redhat Enterprise Linux
> Workstation 3", OPT_SUBMENU, "Workstation 3", 0);
>   add_item("Back to Kickstart Options Menu", "Back to Kickstart
Options
> Menu", OPT_EXITMENU, "exit", 0);
>
>   // Fedora Core Kickstart Submenu Items
>   add_named_menu("Fedora Core Options", "Fedora Core Options", -1);
>   add_item("Fedora Core version 4", "Kickstart Fedora Core 4",
OPT_RUN,
> "FC4_x86", 0);
>   add_item("Fedora Core version 5", "Kickstart Fedora Core 5",
OPT_RUN,
> "FC5_x86", 0);
>   add_item("Fedora Core version 6", "Kickstart Fedora Core 6",
OPT_RUN,
> "FC6_x86", 0);
>   add_item("Back to Kickstart Options Menu", "Back to Kickstart
Options
> Menu", OPT_EXITMENU, "exit", 0);
>
>   // Redhat Linux Kickstart Submenu Items
>   add_named_menu("Redhat Linux Options", "Redhat Linux Options", -1);
>   add_item("Redhat version 9", "Kickstart Redhat 9", OPT_RUN,
"RH9_x86",
> 0);
>   add_item("Back to Kickstart Options Menu", "Back to Kickstart
Options
> Menu", OPT_EXITMENU, "exit", 0);
>
>   // Linux Kickstart Submenu
>   add_named_menu("Linux Kickstart Options", "Linux Kickstart Options",
> -1);
>   add_item("Redhat Enterprise Linux", "Kickstart Redhat Enterprise
Linux
> versions", OPT_SUBMENU, "Redhat Enterprise Linux Options", 0);
>   add_item("Fedora Core", "Kickstart Fedora Core versions",
OPT_SUBMENU,
> "Fedora Core Options", 0);
>   add_item("Redhat Linux", "Kickstart Redhat Linux versions",
> OPT_SUBMENU, "Redhat Linux Options", 0);
>   add_item("Back to QALABS PXE Menu", "Back to QALABS PXE Menu",
> OPT_EXITMENU, "exit", 0);
>
>   // Main Menu Items
>   add_named_menu("PXE Menu", "PXE Menu", -1);
>   add_item("Boot Normally", "Boot Normally", OPT_RUN,
> "normal_boot_order", 0);
>   add_item("Windows 98 SE Startup Disk", "Windows 98 SE Startup Disk",
> OPT_RUN, "win98_bootdisk", 0);
>   add_item("Linux Kickstart Options", "Kickstart install various Linux
> distributions", OPT_SUBMENU, "Linux Kickstart Options", 0);
>
>
>
>   curr = showmenus(find_menu_num("PXE Menu"));
>
>   if (curr)
>   {
>         if (curr->action == OPT_RUN)
>         {
>             if (issyslinux()) runsyslinuxcmd(curr->data);
>             else csprint(curr->data,0x07);
>             return 1;
>         }
>         csprint("Error! Bad things have happened to the network boot
> menu", 0x07);
>   }
>   return 0;
> }
>
> _______________________________________________
> 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.
>
>



------------------------------

Message: 2
Date: Mon, 27 Nov 2006 12:44:04 +0330
From: <behrad at rayavaran.com>
Subject: [syslinux] Chaining from PXELinux to some other boot loader
To: <syslinux at zytor.com>
Message-ID:
	<05E3F0C1134AEC46928D6962685ECDB801D2D0 at sahand.rayavaran.com>
Content-Type: text/plain;	charset="windows-1256"

Hi

I am using PXELinux to boot BartPE and some other application and it
works fine. There are some other Boot application which I am using 3COM
MBAUTIL PXE.mnu and floppy images. I have problem chaining from
pxelinux.0 to 3com pxe.0 (pxe.mnu).

Consider:

BIOS->(DHCP-TFTP)->pxelinux.0 works fine.
BIOS->(DHCP-TFTP)->3COM pxe.mnu works fine, the menu appears and I can
choose a floppy image.
BIOS->(DHCP-TFTP)->pxelinix.0->(choose from menu, KERNEL pxe.0 APPEND
keeppxe)->3COM pxe.mnu has some problem. The initial 3COM menu appears
but when I choose a floppy image it hangs.

I have said about this problem before and I am sorry that I insist but I
think there is some problem in pxelinux.0 which if solved maybe other
problem in chaining other kernels may clear too. 

The problem may be like:
1) KeepPXE is not working fine
2) PXELinux.0 is loaded in a memory offset, the it loads the other
kernel (3com pxe.mnu) in another memory location and 3COM pxe.mny maybe
memory location dependant. Is there any way to replace pxelinux.0 by
pxe.mnu in the memory as if pxe.mnu is loaded in the first step?

Behrad



------------------------------

Message: 3
Date: Mon, 27 Nov 2006 08:25:57 -0800
From: "H. Peter Anvin" <hpa at zytor.com>
Subject: Re: [syslinux] Chaining from PXELinux to some other boot
	loader
To: behrad at rayavaran.com
Cc: syslinux at zytor.com
Message-ID: <456B1195.9030003 at zytor.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

behrad at rayavaran.com wrote:
> 
> I have said about this problem before and I am sorry that I insist but
I think there is some problem in pxelinux.0 which if solved maybe other
problem in chaining other kernels may clear too. 
> 
> The problem may be like:
> 1) KeepPXE is not working fine
> 2) PXELinux.0 is loaded in a memory offset, the it loads the other
kernel (3com pxe.mnu) in another memory location and 3COM pxe.mny maybe
memory location dependant. Is there any way to replace pxelinux.0 by
pxe.mnu in the memory as if pxe.mnu is loaded in the first step?
> 

Except pxe.0 *is* loaded into the same memory location, and with the 
same startup registers, as pxelinux.0 itself got.

	-hpa



------------------------------

_______________________________________________
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.


End of SYSLINUX Digest, Vol 44, Issue 24
****************************************





More information about the Syslinux mailing list