[ipxe-devel] Unable to load custom menu in gPXE / iPXE scripts chaining to pxelinux.0 with dhcp option 209

Slawomir Latkowski slawomir.latkowski at gmail.com
Sat Nov 19 20:28:41 UTC 2011


Hi,

I think that everything is clear. What actually you want to know?

DHCP >>> undionly >>> DHCP file (boot.php) (load menu.c32 directly)
Im not using pxelinux at all.

Regards,
Slawek

W dniu 19 listopada 2011 01:41 użytkownik Chee-Yang Chau
<cychau at gmail.com>napisał:

> I have tried both syslinux 4.04 and 4.10's menu.c32, and it doesn't
> work.   However Syslinux 3.86 works.  How is your configuration?
>
> 2011/11/19 Slawomir Latkowski <slawomir.latkowski at gmail.com>:
> > Hi,
> > The way i use it is the latest syslinux 4.04 menu.c32 and use menu.c32
> > directly as follows boot.php:
> >
> > <?php
> >
> > header ( "Content-type: text/plain" );
> >
> > $uri=$_SERVER["REQUEST_URI"];
> > $dir=substr ( $uri, 0, strrpos ($uri, "/") + 1);
> >
> > echo "#!gpxe\n";
> > echo "imgfree\n";
> > echo "login\n";
> > echo "chain ".
> >      "https://\${username:uristring}:\${password:uristring}@".
> >      $_SERVER["HTTP_HOST"].$dir.
> >      "menu.c32 menu.php\n";
> > ?>
> >
> > menu.php needs small correction:
> >
> >   <?php
> >
> >   header ( "Content-type: text/plain" );
> >
> >   $username = $_SERVER["PHP_AUTH_USER"];
> >   $password = $_SERVER["PHP_AUTH_PW"];
> >
> >   $index = 0;
> >
> >   function title ( $title ) {
> >     global $username;
> >     echo "menu title ".$title;
> >     echo ( $username ? " for ".$username : "" )."\n";
> >   }
> >
> >   function label ( $label ) {
> >     global $index;
> >     $index++;
> >     echo "label item".$index."\n";
> >     echo "  menu label ";
> >     echo "^".( ( $index < 10 ) ? $index :
> >                sprintf ( "%c", $index + ord ( 'A' ) - 10 ) )." ";
> >     echo $label."\n";
> >   }
> >
> >   function sanboot ( $label, $root_path ) {
> >     label ( $label );
> >     echo "  kernel cmd.c32\n";
> >     echo "  append sanboot ".$root_path."\n";
> >     echo "\n";
> >   }
> >
> >   function uriboot ( $label, $uri, $args ) {
> >     label ( $label );
> >     echo "  kernel ".$uri."\n";
> >     if ( $args )
> >         echo "  append ".$args."\n";
> >   }
> >
> >   function retry () {
> >     echo "label failed\n";
> >     echo "  menu label Authentication Failed\n";
> >     echo "  menu disable\n";
> >     uriboot ( "Try again", "boot.php", "" );
> >   }
> >
> >   function authenticated () {
> >     global $username;
> >     global $password;
> >
> >     switch ( "$username:$password" ) {
> >     case "mcb30:password":
> >     case "guest:guest":
> >       return 1;
> >     default:
> >       return 0;
> >     }
> >   }
> >
> >   ?>
> >
> >   menu background atlantis.png
> >   prompt 0
> >   timeout 100
> >   allowoptions 0
> >   menu timeoutrow 29
> >   menu vshift 2
> >   menu rows 8
> >   menu color title  1;36;44   #ff8bc2ff #00000000 std
> >   menu color unsel  37;44     #ff1069c5 #00000000 std
> >   menu color sel    7;37;40   #ff000000 #ffff7518 all
> >   menu color hotkey 1;37;44   #ffffffff #00000000 std
> >   menu color hotsel 1;7;37;40 #ff000431 #ffff7518 all
> >
> >   <?php // <<<<<<<<<<<<<<<<<<<<<<< THIS PART IS MISSING
> >
> >   title ( "Secure Network Boot" );
> >
> >   if ( ! authenticated() ) {
> >     retry();
> >   } else {
> >
> >     if ( $username == "mcb30" ) {
> >
> >       sanboot ( "MS-DOS 6.22",
> >                 "iscsi:chipmunk.tuntap::::iqn.2007-07.chipmunk:msdos622"
> );
> >
> >       sanboot ( "Windows 2k3",
> >                 "iscsi:chipmunk.tuntap::::iqn.2007-07.chipmunk:win2k3" );
> >
> >     }
> >
> >     uriboot ( "Linux rescue shell",
> >               "http://chipmunk.tuntap/images/uniboot/uniboot.php", "" );
> >   }
> >
> >   ?>
> >
> > It works with me
> > Hope it helps.
> > Regards
> > Slawek
> > W dniu 18 listopada 2011 17:08 użytkownik Sven Dreyer <
> sven at dreyer-net.de>
> > napisał:
> >>
> >> Am 18.11.2011 16:20, schrieb Chee-Yang Chau:
> >>>
> >>> Due to the lack of support of menu in iPXE, I force to use chain to
> >>> PXELinux's menu.
> >>
> >> I'm also using a menu and doing it in a (as I think) simpler fashion:
> >>
> >> BIOS > NIC's PXE ROM > DHCP and TFTP > ipxe.kpxe > script (see below) >
> >> menu.c32 > menu.cfg
> >>
> >> The script goes like this:
> >> <SNIP>
> >> #!ipxe
> >> chain http://my-server/menu/menu.c32 http://my-server/menu.cfg
> >> </SNIP>
> >>
> >> menu.c32 is from syslinux 3.86, later versions use a different module
> >> format.
> >> menu.cfg contains the menu's configuration
> >>
> >> Hope this helps,
> >> Sven
> >> _______________________________________________
> >> ipxe-devel mailing list
> >> ipxe-devel at lists.ipxe.org
> >> https://lists.ipxe.org/mailman/listinfo/ipxe-devel
> >
> >
>
>
>
> --
> Best regards,
> Chau Chee Yang
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20111119/56ec4681/attachment.htm>


More information about the ipxe-devel mailing list