#!/bin/bash ## In-house replacement for di-netboot-assistant, supports CentOS. trap 'echo >&2 "${BASH_SOURCE}:${LINENO}: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }unknown error"' ERR set -eEu set -o pipefail cd /srv/tftp wget -nv -xNP.cache \ http://archive.ubuntu.com/ubuntu/dists/{hardy,lucid,precise}/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/{linux,initrd.gz} \ http://archive.ubuntu.com/ubuntu/dists/{hardy,lucid,precise}/main/installer-i386/current/images/netboot/ubuntu-installer/i386/{linux,initrd.gz} \ http://cdimage.debian.org/debian/dists/{stable,testing,unstable}/main/installer-amd64/current/images/netboot/debian-installer/amd64/{linux,initrd.gz} \ http://cdimage.debian.org/debian/dists/{stable,testing,unstable}/main/installer-i386/current/images/netboot/debian-installer/i386/{linux,initrd.gz} \ http://mirror.centos.org/centos/{5,6}/os/{i386,x86_64}/images/pxeboot/{vmlinuz,initrd.img} # Do a separate run for the dailies, since otherwise they generate cron email noise. wget -q -xNP.cache \ http://d-i.debian.org/daily-images/amd64/daily/netboot/debian-installer/amd64/{linux,initrd.gz} \ http://people.debian.org/~joeyh/d-i/images/daily/netboot/debian-installer/i386/{linux,initrd.gz} || : # ftp://cdimage.debian.org/debian-cd/current-live/amd64/web/debian-live-*.initrd.img* || : mkdir -p debian ubuntu centos pxelinux.cfg shopt -s globstar nullglob # for i in current-live squeeze_live_beta2 # do # cp -l .cache/**/$i/amd64/web/vmlinuz debian/${i//_/-}-amd64.kernel # cp -l .cache/**/$i/amd64/web/initrd.img debian/${i//_/-}-amd64.initrd # cp -l .cache/**/$i/i386/web/vmlinuz debian/${i//_/-}-i386.kernel # cp -l .cache/**/$i/i386/web/initrd.img debian/${i//_/-}-i386.initrd # done for i in hardy lucid precise do cp -l .cache/**/$i/**/ubuntu-installer/amd64/linux ubuntu/$i-amd64.kernel cp -l .cache/**/$i/**/ubuntu-installer/amd64/initrd.gz ubuntu/$i-amd64.initrd cp -l .cache/**/$i/**/ubuntu-installer/i386/linux ubuntu/$i-i386.kernel cp -l .cache/**/$i/**/ubuntu-installer/i386/initrd.gz ubuntu/$i-i386.initrd done for i in stable testing unstable daily do cp -l .cache/**/$i/**/debian-installer/amd64/linux debian/$i-amd64.kernel cp -l .cache/**/$i/**/debian-installer/amd64/initrd.gz debian/$i-amd64.initrd cp -l .cache/**/$i/**/debian-installer/i386/linux debian/$i-i386.kernel cp -l .cache/**/$i/**/debian-installer/i386/initrd.gz debian/$i-i386.initrd done for i in 5 6 do cp -l .cache/**/centos/$i/**/x86_64/**/vmlinuz centos/$i-amd64.kernel cp -l .cache/**/centos/$i/**/x86_64/**/initrd.img centos/$i-amd64.initrd cp -l .cache/**/centos/$i/**/i386/**/vmlinuz centos/$i-i386.kernel cp -l .cache/**/centos/$i/**/i386/**/initrd.img centos/$i-i386.initrd done for a in amd64 i386 do { echo "# THIS FILE WAS GENERATED BY $0. DON'T EDIT IT." echo "MENU TITLE Install an OS ($a)" echo "MENU LABEL Install an OS (^$a)" echo "LABEL back" echo " MENU LABEL ^Back.." echo " MENU EXIT" echo " TEXT HELP" echo " Press F1 for Debian mnemonics." echo " Press F2 for Ubuntu mnemonics." echo " Press F3 for CentOS mnemonics." echo " ENDTEXT" echo "F1 pxelinux.cfg/help-debian.txt" echo "F2 pxelinux.cfg/help-ubuntu.txt" echo "F3 pxelinux.cfg/help-centos.txt" } >pxelinux.cfg/install-$a.conf { echo "# THIS FILE WAS GENERATED BY $0. DON'T EDIT IT." echo "MENU TITLE Run a Live OS ($a)" echo "MENU LABEL Run a Live OS (^$a)" echo "LABEL back" echo " MENU LABEL ^Back.." echo " MENU EXIT" } >pxelinux.cfg/live-$a.conf for i in */*-$a.kernel do d=${i%-$a.kernel} r=${d#*/} d=${d%%/*} case "$i" in *live*) { echo echo "MENU BEGIN $d-$r-$a" echo " MENU TITLE $d ${r/-live}" echo " MENU LABEL $d ^${r/-live}" echo " LABEL back" echo " MENU LABEL ^Back.." echo " MENU EXIT" echo " TEXT HELP" echo " IMPORTANT NOTE: the \"current\" images DO NOT WORK as at Jan 2011." echo " Press F1 for Live mnemonics." echo " Press F2 for Debian mnemonics." echo " ENDTEXT" echo " F1 pxelinux.cfg/help-live.txt" echo " F2 pxelinux.cfg/help-debian.txt" for f in standard rescue lxde-desktop xfce-desktop kde-desktop gnome-desktop do echo echo ' 'LABEL ${i%.kernel}-$f echo ' 'MENU LABEL $d ${r/-live} ^$f echo ' 'KERNEL $i echo -n ' 'APPEND boot=live config quiet quickreboot test ! -f ${i%.kernel}.initrd || echo -n ' 'initrd=${i%.kernel}.initrd if false # Use NFS or HTTP? ## Broken in 6.0b2 -- tries to mount and merge ALL *.squashfs in $live-media-path. then echo -n ' 'netboot=nfs nfsroot=192.168.155.22:/srv/mirror live-media-path=debian-live module=$d-$r-$a-$f ## fetch support is absent in 5.0.7 :-( else echo -n ' 'fetch=http://192.168.155.175/debian-live/$d-$r-$a-$f.squashfs ## httpfs support is absent in 5.0.7 and 6.0b2 live images :-( # else echo -n ' 'httpfs=http://130.239.18.173/cdimage/$r/$a/web/$d-$r-$a-$f.squashfs fi echo # terminates APPEND line. done # } >pxelinux.cfg/$d-$r-$a.conf # { echo INCLUDE pxelinux.cfg/$d-$r-$a.conf $d-${r/-live} echo "MENU END" } >>pxelinux.cfg/live-$a.conf ;; *) { echo echo LABEL ${i%.kernel} echo MENU LABEL $d ^$r echo KERNEL $i echo -n APPEND test ! -f ${i%.kernel}.initrd || echo -n ' 'initrd=${i%.kernel}.initrd case "$i" in centos/*) echo -n ' 'method=http://mirror.internode.on.net/pub/centos/6/os/x86_64/;; # FIXME debian/*) echo -n ' 'theme=dark locale=en_AU mirror/method=http mirror/country=manual mirror/http/proxy= mirror/http/hostname=apt mirror/http/directory=/debian;; ubuntu/*) echo -n ' 'theme=dark locale=en_AU mirror/method=http mirror/country=manual mirror/http/proxy= mirror/http/hostname=apt mirror/http/directory=/ubuntu;; esac echo # terminates APPEND line. } >>pxelinux.cfg/install-$a.conf ;; esac done done cat >pxelinux.cfg/help-debian.txt <pxelinux.cfg/help-ubuntu.txt <pxelinux.cfg/help-centos.txt <pxelinux.cfg/help-live.txt <