Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

176 lines (143 sloc) 5.007 kb
# the following variables are available in the template:
#
# $INTERFACE_ (interface for the terminalserver)
# $IP_ (ip for the terminalserver to bind)
# $NETMASK_ (network mask)
# $GW_ (gateway)
# $NAMESERVERS_ (nameservers for the nodes)
# $IPRANGE_FROM_ (user configured iprange, first ip)
# $IPRANGE_TO_ (user configured iprange, last ip)
# $NETWORK_ (first ip in this subnet)
# $OPTIONS_ (options for grml-terminalserver)
# $BOOT_ARGS_ (boot arguments for the nodes)
#
# NOTE:
# templates are shellscript fragments and will be sourced from the
# terminalserver
#
# GLOBAL_README_END
if grep -q live-media-path= /proc/cmdline 2>/dev/null ; then
live_media_path_="live-media-path=$(awk -F live-media-path= '{print $2}' /proc/cmdline | awk '{print $1}')"
fi
if [ ! -d /live/image/boot ] ; then
live_media_path_="live-media-path=/"
fi
# default boot arguments used for both grub and pxelinux
if [ -e "$MOUNT_POINT_" ]; then
default_boot_args_="root=/dev/nfs rw nfsroot=$IP_:$MOUNT_POINT_ \
noprompt noeject"
else
default_boot_args_="ramdisk_size=24000 root=/dev/ram0 rw \
init=/etc/init nfsdir=$IP_:$MOUNT_POINT_ nodhcp noprompt noeject \
apm=power-off nomce"
fi
# special boot arguments required by grub
grub_def_boot_args_="/vmlinuz $default_boot_args_ $live_media_path_"
# special boot arguments required by pxelinux
pxe_def_boot_args_="$default_boot_args_"
# default arguments for framebuffer console
def_fb_args_="vga=791"
no_fb_args_="vga=normal"
###
## create grub config
###
cat >"$TFTPD_DATA_DIR_/menu.lst" <<EOT
default=0
timeout=10
title GRML
root (nd)
kernel $grub_def_boot_args_ $def_fb_args_ $BOOT_ARGS_
initrd /initrd.img
title GRML no framebuffer
root (nd)
kernel $grub_def_boot_args_ $no_fb_args_ $BOOT_ARGS_
title GRML small
root (nd)
kernel $grub_def_boot_args_ small $def_fb_args_ $BOOT_ARGS_
initrd /initrd.img
title GRML small nofb
root (nd)
kernel $grub_def_boot_args_ small $no_fb_args_ $BOOT_ARGS_
initrd /initrd.img
title GRML debuginit
root (nd)
kernel $grub_def_boot_args_ debuginitrd $def_fb_args_ $BOOT_ARGS_
initrd /initrd.img
title GRML debuginit nofb
root (nd)
kernel $grub_def_boot_args_ debuginitrd $no_fb_args_ $BOOT_ARGS_
initrd /initrd.img
title GRML rescue
root (nd)
kernel $grub_def_boot_args_ $no_fb_args_
initrd /initrd.img
title memtest
root (nd)
kernel /memtest
title Reload config
configfile (nd)/menu.lst
EOT
ret_=$?
###
## create pxelinux config
###
DEST_DIR=$(mktemp -d)
if [ -d /live/image/boot ] ; then
grml2usb --bootloader-only \
--bootoptions="$pxe_def_boot_args_ $BOOT_ARGS_" \
--remove-bootoption=nodhcp \
/live/image "$DEST_DIR"
mv "$DEST_DIR"/boot/syslinux/* "$TFTPD_DATA_DIR_/"
rmdir "$DEST_DIR"/boot/syslinux
mv "$DEST_DIR"/boot/ "$TFTPD_DATA_DIR_"
else # there is no kernel inside /live/image copy it from /boot
if [ ! -d /usr/share/grml-live/templates/boot/isolinux ] ; then
echo "E: Could not find isolinux template directory" >&2
exit 2
fi
array=( $(cat /etc/grml_version) )
grml_name_=${array[0]}
grml_version_=${array[1]}
cp /usr/share/grml-live/templates/boot/isolinux/* "$TFTPD_DATA_DIR_/"
config_files_=$(find "$TFTPD_DATA_DIR_/" -name "*.cfg" -type f)
sed -i "s/%ARCH%/$(uname -m)/" $config_files_
sed -i "s/%BOOTID%/$RANDOM/" $config_files_
sed -i "s/%SHORT_NAME%/dummy/" $config_files_
sed -i "s/%VERSION%/$grml_version_/" $config_files_
sed -i "s/%GRML_NAME%/$grml_name_/" $config_files_
sed -i "s/%DISTRI_SPLASH%/grml.png/" $config_files_
sed -i "s/%DISTRI_INFO%/Grml/" $config_files_
sed -i "s#\(^.*append.*initrd.*$\)#\1 $pxe_def_boot_args_ $BOOT_ARGS_#" $config_files_
cat > "$TFTPD_DATA_DIR_/grmlmain.cfg"<<EOT
include default.cfg
include menuoptions.cfg
include grml.cfg
include options.cfg
include isoprompt.cfg
include hd.cfg
include hidden.cfg
EOT
fi
config_files_=$(find "$TFTPD_DATA_DIR_/" -name "*.cfg" -type f)
# cd is multi iso, grml2usb got it right ;0
if [ -d "$MOUNT_POINT_"/boot/release ] ; then
sed -i -e 's#\(.*\)/boot/\(.*\)#\1\2#' $config_files_
else
# remove normal kernel path and use our image
sed -i -e 's/.*kernel.*vmlinuz/ kernel vmlinuz/' $config_files_
sed -i -e 's/\(initrd\)=[[:alnum:]/._-]*/\1=initrd.img/' $config_files_
# remove live-media-path per default
sed -i -e 's#live-media-path=[[:alnum:]/._-]*##' $config_files_
# append live-media-path if needed
if [ ! -z "$live_media_path_" ] ; then
sed -i -e "s#\(^.*append.*initrd.*$\)#\1 $live_media_path_#" $config_files_
fi
fi
# adjust ldbsd.com bootline
sed -i -e 's#\(.*kernel .*/ldbsd.com\)#\1 set image /boot/addons/bsd4grml/bsd.rd`echo Type "boot" to load MirOS bsd4grml via keeppxe#' "$TFTPD_DATA_DIR_/"addon_*_bsd.cfg
# remove grub entries
rm -f "$TFTPD_DATA_DIR_/"addon_*grub*.cfg
mv "$TFTPD_DATA_DIR_/syslinux.cfg" "$TFTPD_DATA_DIR_/pxelinux.cfg/default"
rm -rf "$DEST_DIR"
let ret_=$ret_+$?
return $ret_
Jump to Line
Something went wrong with that request. Please try again.