iPXE discussion forum
paranoid chainloading script for flimsy tftp - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: paranoid chainloading script for flimsy tftp (/showthread.php?tid=1099)

paranoid chainloading script for flimsy tftp - lstraath - 2011-12-23 22:25

Are you chainloading undionly.kpxe and want a universal script to break the loop...

dhcp && goto label_check_loop
set countdhcp ${countdhcp}x
iseq ${countdhcp} xxx || goto label_retry_dhcp
iseq ${filename} undionly.kpxe || goto label_no_loop
set filename ${filename}.ipxe
chain ${filename} ||
set countchain ${countchain}x
iseq ${countchain} xxx || goto label_retry_chain
autoboot ||
set countautoboot ${countautoboot}x
iseq ${countautoboot} xxx || goto label_no_loop

RE: paranoid chainloading script for flimsy tftp - MultimediaMan - 2011-12-24 19:14

That's not a bad idea... it may be a better one to ask for some new functions within the iPXE shell: namely support for an incremental counter (n=n+1) and a method for character substitution ( i.e. replace ":" with "-" ).

More functional iPXE scripts could be constructed and be considerably shorter.

I've found it not too difficult to freeze iPXE when using the CLI and the command buffer (using the up and down keys); this makes me a little leery of creating truly infinite loops within iPXE. I would prefer to have the option to try an action for some repetitions and failing that, to reboot to try again in a fresh environment.

RE: paranoid chainloading script for flimsy tftp - lstraath - 2011-12-26 11:19

You are right that the script language is very limited, i also found that building loops like:

dhcp || goto retry_dhcp
chain http://myserver/boot.php || goto retry_chain

can result in freezing the machine when a action fails to many times. When doing so on a virtual machine the end result is some loop in code causing 100% cpu when the machine freezes. When you limit the retries and put a reboot in it i got rid of the freezes. ipxe and gpxe before that are funny products with a lot of potential to get rid of the old pxe stack. However i get the idea that the community is too small and there are not enough developers to make it more mature yet. MCB30 is doing a great job but there is only so much one man can do.... Let's hope he reads this and likes the idea of more functionality in the script language;-)

RE: paranoid chainloading script for flimsy tftp - MultimediaMan - 2011-12-26 17:20

I don't get the impression the development pool is too small (it is small... but so is the syslinux developer pool): I know that our scripting gripes are minor problems too, and probably ones that may be dealt with in due time.

As far as gPXE and iPXE go, this is a fairly recent effort (~3 years). Syslinux goes back over 13 years, and did not have menus and other features for quite some time. . . I don't do any compiling-level work...yet. (Professionally, I an more of an integrator.) This may be the catalyst.