Script that automatically downloads and prepares ubuntu images (and variants) for pxe boot
#!/bin/bash
NFS_HOST="192.168.101.9"
NFS_BASE_PATH="/netboot/tftp"
FLAVOUR_MIRROR="http://www.mirrorservice.org/sites/cdimage.ubuntu.com/cdimage" #original ubuntu does not exist on that mirror for amd64 arch
UBUNTU_MIRROR="http://releases.ubuntu.com"
ARCH="amd64"
AVAILABLE_FLAVOURS=['ubuntu','kubuntu','xubuntu','lubuntu','ubuntustudio','edubuntu']
set -e # exit on error
if [ "$1" == "" ] || [ "$2" == "" ] || [ "$3" == "" ] || ! echo ${AVAILABLE_FLAVOURS[@]} | grep -q -w "$1";
then
echo "Arguments: FLAVOUR CODENAME VERSIONNUMBER"
echo "e.g.: xubuntu xenial 16.04.2"
exit 1
fi
flavour=$1
codename=$2
version=$3
variant="desktop"
if [ -e "${flavour}_live/${codename}-${variant}-${version}/" ];
then
echo "Already exists"
exit 1
fi
if [ "$1" == "ubuntu" ];
then
IMAGE_MIRROR=$UBUNTU_MIRROR/${codename}
else
IMAGE_MIRROR=$FLAVOUR_MIRROR/${flavour}/releases/${codename}/release
fi
wget -O /tmp/image.iso ${IMAGE_MIRROR}/${flavour}-${version}-${variant}-${ARCH}.iso
mkdir -p ${flavour}_live/${codename}-${variant}-${version}/
7z x -o${flavour}_live/${codename}-${variant}-${version}/ /tmp/image.iso
chmod -R +rx ${flavour}_live/${codename}-${variant}-${version}/
rm /tmp/image.iso
echo "${NFS_BASE_PATH}/${flavour}_live/${codename}-${variant}-${version} 192.168.0.0/255.255.0.0(ro,async,subtree_check,no_root_squash)" >> /etc/exports
/etc/init.d/nfs-kernel-server restart
if ! [ -e "pxelinux.cfg/${flavour}_live" ];
then
echo "
LABEL ${flavour}
MENU LABEL ${flavour} ^Live
KERNEL vesamenu.c32
APPEND pxelinux.cfg/${flavour}_live
" >> pxelinux.cfg/default
echo "
DEFAULT vesamenu.c32
ALLOWOPTIONS 0
PROMPT 0
TIMEOUT 0
MENU TITLE PXE Boot Menu - ${flavour}
LABEL back
MENU LABEL <-
KERNEL vesamenu.c32
APPEND pxelinux.cfg/default
" >> pxelinux.cfg/${flavour}_live
fi
echo "" >> pxelinux.cfg/${flavour}_live
echo "LABEL ub${codename} ${version}" >> pxelinux.cfg/${flavour}_live
echo "MENU LABEL ${flavour} ${codename} ${version} (${variant})" >> pxelinux.cfg/${flavour}_live
echo "KERNEL ${flavour}_live/${codename}-${variant}-${version}/casper/vmlinuz.efi" >> pxelinux.cfg/${flavour}_live
echo "APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=${NFS_HOST}:${NFS_BASE_PATH}/${flavour}_live/${codename}-${variant}-${version} initrd=${flavour}_live/${codename}-${variant}-${version}/casper/initrd.lz nomodeset -- locale=de_DE console-setup/layoutcode=de" >> pxelinux.cfg/${flavour}_live