install_ipxe() { [ -z "$1" ] && perror "Call install_ipxe with target directory!" git clone --branch openslx https://git.openslx.org/openslx-ng/ipxe.git "$1" || perror "Cloning ipxe repo failed" cp "$BASEDIR/static_files/pxelinux.0" "$1/" || perror "Could not copy pxelinux.0 to $1" # Symlink for USB-Stick HTTP access mkdir -p "$WWWDIR" ln -s -f "$TFTPDIR" "$WWWDIR/tftp" || perror "Could not create symlink for tftp dir" # Patch config local PATH_IPXE="$1" ipxe_enable CONSOLE_FRAMEBUFFER CONSOLE_CMD MENU_CMD PARAM_CMD DOWNLOAD_PROTO_HTTPS IMAGE_PNG NVO_CMD IFMGMT_CMD LOGIN_CMD SHELL_CMD MENU_CMD REBOOT_CMD POWEROFF_CMD ipxe_disable NET_PROTO_STP NET_PROTO_LACP CRYPTO_80211_WEP CRYPTO_80211_WPA CRYPTO_80211_WPA2 IWMGMT_CMD IBMGMT_CMD FCMGMT_CMD CONSOLE_SERIAL } compile_ipxe() { echo "*** compiling iPXE in the background ..." echo [ -z "$1" ] && perror "Call compile_ipxe with target directory!" cd "$1/src" make bin/undionly.kkkpxe chown -R taskmanager:www-data "$1" if [ "$ERR" -ne 0 ]; then pwarning "*** Background compilation of iPXE failed." else echo "*** Background compilation of iPXE successful." fi echo } ipxe_enable () { local var while [ $# -gt 0 ]; do var="$1" sed -i -r "s~^\\s*(//\\s*#define|#undef)\\s+${var}(\\s|$)~#define ${var} /* enabled by bwLehrpool */\\2~" "$PATH_IPXE"/src/config/*.h || pwarning "Could not enable iPXE option $var" shift done } ipxe_disable () { local var while [ $# -gt 0 ]; do var="$1" sed -i -r "s~^\\s*(//\\s*#undef|#define)\\s+${var}(\\s|\$)~#undef ${var} /* disabled by bwLehrpool */\\2~" "$PATH_IPXE"/src/config/*.h || pwarning "Could not disable iPXE option $var" shift done }