From 6581210de2a1644fcf665b93819b5cb08aa9b1b2 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 12 Feb 2019 15:03:04 +0100 Subject: [CompileIPxe*] Separate legacy pxelinux and new ipxe-only approach --- data/ipxe-embed.template | 91 +++++++++++++++++++++++++++++++----- data/pxelinux-ipxe-embed.template | 13 ++++++ data/pxelinux-pxemenu.template | 98 +++++++++++++++++++++++++++++++++++++++ data/pxemenu.template | 98 --------------------------------------- 4 files changed, 191 insertions(+), 109 deletions(-) create mode 100644 data/pxelinux-ipxe-embed.template create mode 100644 data/pxelinux-pxemenu.template delete mode 100644 data/pxemenu.template (limited to 'data') diff --git a/data/ipxe-embed.template b/data/ipxe-embed.template index 8ef845f..3a8a1a7 100644 --- a/data/ipxe-embed.template +++ b/data/ipxe-embed.template @@ -1,13 +1,82 @@ #!ipxe -ifopen -set net0.dhcp/next-server %ipaddress% || -set net0.dhcp/filename ipxelinux.0 || -clear net0.dhcp/210:string || -#set net0.dhcp/209:string pxelinux.cfg/default || -set next-server %ipaddress% -set filename ipxelinux.0 -clear 210:string -#set 209:string pxelinux.cfg/default -imgload pxelinux.0 -boot pxelinux.0 + +console || goto cmd_fail + +# This should always be the case since this is the embed script, but making it dynamic is more flexible during testing +set slxtest:string something || goto cmd_fail +iseq \${slxtest:md5} \${} && set slxext 0 || set slxext 1 || + +set dosleep:int32 0 || +set idx:int32 -1 || + +# This will be set to usb or pxe +#goto %mode% + +:PXE + +set retlbl:string next_open +:next_open +inc idx +iseq 20 ${idx} && goto fail || +# No MAC -- done +iseq ${net${idx}/mac} ${} && goto fail || +# Has no IP -- ignore +iseq ${net${idx}/ip} ${} && goto cleaniface || +ifopen net${idx} || goto cleaniface +# Success +set retlbl dochain +goto setvars + +# Now try to chain to main script +:dochain +set self:string http://%ipaddress%/boot/ipxe?uuid=${uuid}&mac=${mac}&manuf=${manufacturer:uristring}&product=${product:uristring}&platform=${platform:uristring}&slx-extensions=${slxext} +chain -ar ${self} || goto fail +echo How the hell did I get here? +:fail +set retlbl retry_sleep +goto cleaniface +:retry_sleep +echo Trying again in ${dosleep} seconds... +sleep ${dosleep} || +iseq 0 ${dosleep} && set idx:int32 -1 || +set dosleep 5 || +:USB +iseq 20 ${idx} && set idx:int32 -1 || +set retlbl:string next_dhcp +:next_dhcp +inc idx +iseq 20 ${idx} && goto fail || +# No MAC -- done +iseq ${net${idx}/mac} ${} && goto next_dhcp || +echo Trying net${idx} via DHCP +dhcp net${idx} || goto cleaniface +# Success +set retlbl dochain +goto setvars + +# Clear interface IP address and close it +# Jumps back to label stored in ${retlbl} +:cleaniface +clear net${idx}/ip || +clear net${idx}.dhcp/ip || +ifclose net${idx} || +goto ${retlbl} + +# Force global variables to have the values of the interface we succeeded on +# Jumps back to label stored in ${retlbl} +:setvars +set ip ${net${idx}/ip} || +set mac ${net${idx}/mac} || +set netmask ${net${idx}/netmask} || +set gateway ${net${idx}/gateway} || +goto ${retlbl} + +:cmd_fail +echo This iPXE was compiled with important commands/features missing +echo Essential are: console, menu, param, set, clear +echo Optinally, reboot and poweroff would be nice +prompt Press any key to reboot || +reboot || echo OK, reboot is apparently missing, so.... +prompt Press any key to exit iPXE and return control to the BIOS || +exit 1 diff --git a/data/pxelinux-ipxe-embed.template b/data/pxelinux-ipxe-embed.template new file mode 100644 index 0000000..8ef845f --- /dev/null +++ b/data/pxelinux-ipxe-embed.template @@ -0,0 +1,13 @@ +#!ipxe +ifopen +set net0.dhcp/next-server %ipaddress% || +set net0.dhcp/filename ipxelinux.0 || +clear net0.dhcp/210:string || +#set net0.dhcp/209:string pxelinux.cfg/default || +set next-server %ipaddress% +set filename ipxelinux.0 +clear 210:string +#set 209:string pxelinux.cfg/default +imgload pxelinux.0 +boot pxelinux.0 + diff --git a/data/pxelinux-pxemenu.template b/data/pxelinux-pxemenu.template new file mode 100644 index 0000000..5d39364 --- /dev/null +++ b/data/pxelinux-pxemenu.template @@ -0,0 +1,98 @@ +DEFAULT vesamenu.c32 + +NOESCAPE 1 +PROMPT 0 +MENU MASTER PASSWD %masterpassword% + +MENU BACKGROUND openslx.png +MENU WIDTH 78 +MENU MARGIN 9 +MENU PASSWORDMARGIN 9 +MENU ROWS 10 +MENU TABMSGROW 16 +MENU CMDLINEROW 16 +MENU ENDROW -1 +MENU PASSWORDROW 16 +MENU TIMEOUTROW 20 +MENU HELPMSGROW 16 +MENU HELPMSGENDROW -1 +MENU HSHIFT 0 +MENU VSHIFT 7 + +menu color screen 37;40 #80000000 #00000000 std +menu color border 37;40 #40000000 #ff757575 std +menu color title 1;37;40 #ffff8b00 #ff757575 std +menu color unsel 37;40 #ffffffff #ff757575 std +menu color hotkey 1;37;40 #ffff8b00 #ff757575 std +menu color disabled 1;37;40 #ffff8b00 #ff757575 std +menu color tabmsg 37;40 #ffff8b00 #ff757575 std +menu color cmdmark 1;37;40 #ffff8b00 #ff757575 std +menu color cmdline 37;40 #fff0f0f0 #ff757575 std +menu color pwdborder 37;40 #40000000 #ff757575 std +menu color pwdheader 37;40 #ffff8b00 #ff757575 std +menu color pwdentry 37;40 #ffff8b00 #ff757575 std +menu color timeout_msg 37;40 #fff0f0f0 #ff757575 std +menu color timeout 1;37;40 #ffff8b00 #ff757575 std +menu color sel 7;37;40 #ff000000 #ffcccccc all +menu color hotsel 1;7;37;40 #ffff8b00 #ffcccccc all +menu color scrollbar 37;40 #40000000 #ff000000 std +menu color help 37;40 #ff1c2a33 #00000000 none +MENU MSGCOLOR #ff1c2a33 #00000000 none + +# !! The template is UTF-8, conversion to codepage 437 is done by the taskmanager !! + +TIMEOUT %timeout% +TOTALTIMEOUT %totaltimeout% + +MENU TITLE bwLehrpool Bootmenü +MENU AUTOBOOT Automatischer Boot in # Sekunde{,n} +MENU PASSPROMPT Passwort benötigt + +MENU CLEAR +ONTIMEOUT %default% + + +LABEL shutdown + MENU HIDE + KERNEL kernel-shutdown + APPEND initrd=initramfs-shutdown quiet + + +LABEL net + MENU LABEL ^bwLehrpool-Umgebung starten + TEXT HELP + Durch Drücken von ENTER wird die bwLehrpool-Umgebung gestartet. + Sie bietet Zugriff auf die Virtuellen Labore. + ENDTEXT + KERNEL http://%ipaddress%/boot/default/kernel + INITRD http://%ipaddress%/boot/default/initramfs-stage31 + APPEND slxbase=boot/default vga=current quiet splash + IPAPPEND 3 + %default-net% + + +LABEL hdd + MENU LABEL ^Lokales System starten + TEXT HELP + Durch Drücken von ENTER wird das lokal auf diesem Computer + installierte Betriebssystem gestartet, sofern vorhanden. + ENDTEXT + LOCALBOOT 0 + %default-hdd% + +%custom% + +MENU SEPARATOR + +LABEL openslx-debug + MENU LABEL bwLehrpool-Umgebung starten (nosplash, debug) + TEXT HELP + Startet die bwLehrpool-Umgebung ohne Bootlogo und mit + zusätzlichen Debug-Ausgaben für die Fehlersuche. + ENDTEXT + KERNEL http://%ipaddress%/boot/default/kernel + INITRD http://%ipaddress%/boot/default/initramfs-stage31 + APPEND slxbase=boot/default + IPAPPEND 3 + + diff --git a/data/pxemenu.template b/data/pxemenu.template deleted file mode 100644 index 5d39364..0000000 --- a/data/pxemenu.template +++ /dev/null @@ -1,98 +0,0 @@ -DEFAULT vesamenu.c32 - -NOESCAPE 1 -PROMPT 0 -MENU MASTER PASSWD %masterpassword% - -MENU BACKGROUND openslx.png -MENU WIDTH 78 -MENU MARGIN 9 -MENU PASSWORDMARGIN 9 -MENU ROWS 10 -MENU TABMSGROW 16 -MENU CMDLINEROW 16 -MENU ENDROW -1 -MENU PASSWORDROW 16 -MENU TIMEOUTROW 20 -MENU HELPMSGROW 16 -MENU HELPMSGENDROW -1 -MENU HSHIFT 0 -MENU VSHIFT 7 - -menu color screen 37;40 #80000000 #00000000 std -menu color border 37;40 #40000000 #ff757575 std -menu color title 1;37;40 #ffff8b00 #ff757575 std -menu color unsel 37;40 #ffffffff #ff757575 std -menu color hotkey 1;37;40 #ffff8b00 #ff757575 std -menu color disabled 1;37;40 #ffff8b00 #ff757575 std -menu color tabmsg 37;40 #ffff8b00 #ff757575 std -menu color cmdmark 1;37;40 #ffff8b00 #ff757575 std -menu color cmdline 37;40 #fff0f0f0 #ff757575 std -menu color pwdborder 37;40 #40000000 #ff757575 std -menu color pwdheader 37;40 #ffff8b00 #ff757575 std -menu color pwdentry 37;40 #ffff8b00 #ff757575 std -menu color timeout_msg 37;40 #fff0f0f0 #ff757575 std -menu color timeout 1;37;40 #ffff8b00 #ff757575 std -menu color sel 7;37;40 #ff000000 #ffcccccc all -menu color hotsel 1;7;37;40 #ffff8b00 #ffcccccc all -menu color scrollbar 37;40 #40000000 #ff000000 std -menu color help 37;40 #ff1c2a33 #00000000 none -MENU MSGCOLOR #ff1c2a33 #00000000 none - -# !! The template is UTF-8, conversion to codepage 437 is done by the taskmanager !! - -TIMEOUT %timeout% -TOTALTIMEOUT %totaltimeout% - -MENU TITLE bwLehrpool Bootmenü -MENU AUTOBOOT Automatischer Boot in # Sekunde{,n} -MENU PASSPROMPT Passwort benötigt - -MENU CLEAR -ONTIMEOUT %default% - - -LABEL shutdown - MENU HIDE - KERNEL kernel-shutdown - APPEND initrd=initramfs-shutdown quiet - - -LABEL net - MENU LABEL ^bwLehrpool-Umgebung starten - TEXT HELP - Durch Drücken von ENTER wird die bwLehrpool-Umgebung gestartet. - Sie bietet Zugriff auf die Virtuellen Labore. - ENDTEXT - KERNEL http://%ipaddress%/boot/default/kernel - INITRD http://%ipaddress%/boot/default/initramfs-stage31 - APPEND slxbase=boot/default vga=current quiet splash - IPAPPEND 3 - %default-net% - - -LABEL hdd - MENU LABEL ^Lokales System starten - TEXT HELP - Durch Drücken von ENTER wird das lokal auf diesem Computer - installierte Betriebssystem gestartet, sofern vorhanden. - ENDTEXT - LOCALBOOT 0 - %default-hdd% - -%custom% - -MENU SEPARATOR - -LABEL openslx-debug - MENU LABEL bwLehrpool-Umgebung starten (nosplash, debug) - TEXT HELP - Startet die bwLehrpool-Umgebung ohne Bootlogo und mit - zusätzlichen Debug-Ausgaben für die Fehlersuche. - ENDTEXT - KERNEL http://%ipaddress%/boot/default/kernel - INITRD http://%ipaddress%/boot/default/initramfs-stage31 - APPEND slxbase=boot/default - IPAPPEND 3 - - -- cgit v1.2.3-55-g7522