From eda6c680d1bbafa54ebe4964d7445861ce5717f3 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Tue, 15 Jan 2008 16:06:53 +0000 Subject: [PATCH] Cleanup: - cdcustom.sh was the ancestor of bootcustom.sh - bootcustom.sh itself is not used anymore in myplc - newbuild.sh looks like a rather old version of build.sh - despite the name --- bootcustom.sh | 438 -------------------------------------------------- cdcustom.sh | 353 ---------------------------------------- newbuild.sh | 162 ------------------- 3 files changed, 953 deletions(-) delete mode 100755 bootcustom.sh delete mode 100755 cdcustom.sh delete mode 100755 newbuild.sh diff --git a/bootcustom.sh b/bootcustom.sh deleted file mode 100755 index 7a210c3..0000000 --- a/bootcustom.sh +++ /dev/null @@ -1,438 +0,0 @@ -#!/bin/bash - -# purpose : create a node-specific boot image - -# NOTE (see also bootcd/build.sh) -# If you run your own myplc instance, and you dont need to -# customize the bootcd, you might wish to use bootcd/build.sh -# with the -f option -# However cdcustom.sh might turn out useful if -# (*) you only have an iso or usb image and nothing else -# (*) or you want to generate several images in a single run -# (*) or you run myplc rpm, but need to customize the bootcd image, -# because the myplc rpm does not come with the required sources - -# See usage for full details - -######## Implementation notes -# (*) as of may 2007, this script supports both iso and usb images -# this becomes a bit tricky sometimes -# in particular the startup is only partially lazy.. -# most names are kept from former version for easier merge -# (*) in a former release (iso only) it was possible to perform faster by -# loopback-mounting the generic iso image -# Unfortunately mkisofs cannot graft a file that already exists on the -# original tree (so overlay.img cannot be overridden) -# to make things worse we cannot loopback-mount the cpio-gzipped -# overlay image either, so all this stuff is way more complicated -# than it used to be. -# -# (*) as of 2006 jun 28 we use a third image named custom.img for -# overriding files in bootcd.img, which let us use bootcd.img intact -# and thus notably speeds things up -# -######## Logic -# here is how we do this for ISO -# for efficiency, we do only once: -# (*) mount the generic image -# (*) copy it into a temp dir -# (*) unzip/unarchive overlay image into another temp dir -# (*) if required prepare a custom.img -# then for each node, we -# (*) insert plnode.txt at the right place if not a default iso -# (*) rewrap a gzipped/cpio overlay.img, that we push onto the -# copied iso tree -# (*) rewrap this into an iso image - -# for USB -# in principle it's simpler here, but for better code factorization we -# do the same startup thing, but slightly different -# only once: -# (*) mount the generic image -# (*) unzip/unarchive overlay image into another temp dir -# then for each node, we -# (*) copy the generic image into the node-dep image -# (*) loopback mount it (write enabled) -# (*) insert plnode.txt at the right place, -# (*) rewrap a gzipped/cpio overlay.img, that we push onto the -# mounted image -# (*) unmount - -set -e -COMMANDSH=$(basename $0) -COMMAND=$(basename $0 .sh) -REVISION="$Id$" - -function usage () { - - echo "Usage: $COMMANDSH [-f] [ -c bootcd-dir] [generic-image|image-dir] node-config [.. node-configs]" - echo " Creates a node-specific boot (iso or usb) image" - echo "*Options" - echo -e " -f\r\t\tForces overwrite of output images" - echo -e " -c bootcd-dir\r\t\tis taken as the root of a set of custom bootcd files" - echo -e "\t\ti.e. the files under dir take precedence" - echo -e "\t\tover the ones in the generic bootcd" - echo -e "\t\tThis is available for ISO images only, and is experimental code" - echo -e "-C dir\r\t\tlike make -C, performs chdir prior to running anything" - echo -e "-O isoname\r\t\tWrite iso output image to isoname. Does not work with" - echo -e "\t\tmultiple node-config files." - echo "*Arguments" - echo -e " generic-image or image-dir\n\r\t\tThe generic image as downloaded from myplc" - echo -e "\t\ttypically from http://myplc.domain.org/download/" - echo -e "\t\tor, the already mounted or copied contents in a directory." - echo -e " node-config(s)\r\t\tnode config files (plnode.txt format)" - echo -e " default\r\t\tmentioned instead of a plnode.txt file, for generating" - echo -e "\t\ta node-independent iso image when -c is provided" - echo -e "\t\tThis is default behaviour when no node-config are provided" - echo "*Outputs" - echo " node-specific images are named after nodename[-bootcd-dir]" - echo " node-independant image is named after bootcd-dir" - echo " with extension .iso or .usb accordingly" - echo "*Examples" - echo "# $COMMANDSH /plc/data/var/www/html/download/Onelab-BootCD-4.0.usb node1.txt node2.txt" - echo " Creates node1.usb and node2.usb that are self-contained USB images for both nodes" - echo "# $COMMANDSH -c onelab-bootcd /plc/data/var/www/html/download/onelab-BootCD-4.0.iso" - echo " Creates onelab-bootcd.iso that has no plnode.txt embedded and that uses" - echo " the hw init scripts located under onelab-bootcd/etc/rc.d/init.d/" - echo "*Version $REVISION" - exit 1 -} - -### read config file in a subshell and echoes host_name -function host_name () { - export CONFIG="$1"; shift - ( . "$CONFIG" ; echo "${HOST_NAME}.${DOMAIN_NAME}" ) -} - -### Globals -# we set this to iso or usb according to the generic-image provided -IMAGE_TYPE= -PLNODE_PATH=/usr/boot -PLNODE=plnode.txt -DEFAULT_TARGET=default -# defined on the command-line -CUSTOM_DIR= -## arg-provided generic iso -ISO_GENERIC= -# node-dep conf file -NODE_CONFIG= -# resulting iso image and log -NODE_ISO= -NODE_LOG= -## mount points and temps -ISO_MOUNT="/tmp/$COMMAND-$$-mount" -ISO_ROOT="/tmp/$COMMAND-$$-iso" -OVERLAY_ROOT="/tmp/$COMMAND-$$-overlay" -# node-dep cpio/gzip image -NODE_OVERLAY= - -CPIO_OARGS="-oc --quiet" -CPIO_IARGS="-id --quiet" -CPIO_PARGS="-pdu --quiet" - -# export DEBUG=true -# for enabling debug messages (set -x) - -# export VERBOSE=true for enabling this -function verbose () { - if [ -n "$VERBOSE" ] ; then - echo "$@" - fi - } - -function message () { echo -e "$COMMAND : $@" ; } -function message-n () { echo -en "$COMMAND : $@" ; } -function message-done () { echo Done ; } -function error () { echo -e "$COMMAND : ERROR $@ - exiting" ; exit 1 ;} - -# lazy startup -STARTED_UP= -function startup () { - - trap abort int hup quit err - set -e - - [[ -n "$DEBUG" ]] && set -x - - # lazy : run only once - if [ -z "$STARTED_UP" ] ; then - message "lazy start up" - - ### checking - [ ! -f "$ISO_GENERIC" ] && [ ! -d "$ISO_GENERIC" ] && error "Could not find template ISO image" - [ -d "$ISO_MOUNT" ] && error "$ISO_MOUNT already exists" - [ -d "$ISO_ROOT" ] && [ ! -d "$ISO_GENERIC" ] && error "$ISO_ROOT already exists" - [ -d "$OVERLAY_ROOT" ] && error "$OVERLAY_ROOT already exists" - - verbose "Creating temp dirs" - mkdir -p "$ISO_MOUNT" "$ISO_ROOT" "$OVERLAY_ROOT" - - if [[ "$IMAGE_TYPE" = "usb" || "$IMAGE_TYPE" = "iso" ]] ; then - verbose "Mounting generic ISO $ISO_GENERIC under $ISO_MOUNT" - mount -o ro,loop "$ISO_GENERIC" "$ISO_MOUNT" - else - # the iso_generic name is the directory from which files are available - ISO_MOUNT=$ISO_GENERIC - fi - - if [[ "$IMAGE_TYPE" = "iso" || "$IMAGE_TYPE" = "dir" ]] ; then - ### ISO - ### DONT!! use tar for duplication - message "Duplicating ISO image in $ISO_ROOT" - (cd "$ISO_MOUNT" ; find . | cpio $CPIO_PARGS "$ISO_ROOT" ) - - if [ -n "$CUSTOM_DIR" ] ; then - [ -d "$CUSTOM_DIR" ] || error "Directory $CUSTOM_DIR not found" - prepare_custom_image - fi - fi - ### USB specifics are done unconditionnally, see below - - message "Extracting generic overlay image in $OVERLAY_ROOT" - gzip -d -c "$ISO_MOUNT/overlay.img" | ( cd "$OVERLAY_ROOT" ; cpio $CPIO_IARGS ) - - STARTED_UP=true - fi - - # for USB: do this for every node - if [ "$IMAGE_TYPE" = "usb" ] ; then - message "Duplicating $ISO_GENERIC into $NODE_ISO" - cp "$ISO_GENERIC" "$NODE_ISO" - message "Mounting write-enabled" - mount -o loop "$NODE_ISO" "$ISO_ROOT" - fi - -} - -function prepare_custom_image () { - - # Cleaning any sequel - rm -f custom.img - [ -f custom.img ] && error "Could not cleanup custom.img" - - message "WARNING : You are creating *custom* boot CDs" - - message-n "Creating $ISO_ROOT/custom.img" - (cd $"CUSTOM_DIR" ; find . | cpio $CPIO_OARGS) | gzip -9 > "$ISO_ROOT"/custom.img - message-done - -} - -function node_cleanup () { - verbose "Cleaning node-dependent cpio image" - rm -rf "$NODE_OVERLAY" - -} - -function cleanup () { - - echo "$COMMAND : cleaning up" - [[ -n "$DEBUG" ]] && set -x - - verbose "Cleaning overlay image" - rm -rf "$OVERLAY_ROOT" - verbose "Cleaning ISO image" - rm -rf "$ISO_ROOT" - verbose "Cleaning node-dep overlay image" - rm -f "$NODE_OVERLAY" - if [[ "$IMAGE_TYPE" = "iso" || "$IMAGE_TYPE" = "usb" ]]; then - verbose "Unmounting $ISO_MOUNT" - umount "$ISO_MOUNT" 2> /dev/null - rmdir "$ISO_MOUNT" - fi - exit -} - -function abort () { - echo "$COMMAND : Aborting" - message "Cleaning $NODE_ISO" - rm -f "$NODE_ISO" - cleanup -} - -function main () { - - trap abort int hup quit err - set -e - - [[ -n "$DEBUG" ]] && set -x - - # accept -b as -c, I am used to it now - while getopts "c:b:O:C:fh" opt ; do - case "$opt" in - c|b) -# not sure about the status of this, you are warned -# echo "The custom option in $COMMAND is broken " ; exit 1 - echo "WARNING : The custom option in $COMMAND is maybe broken " - echo -n "You will have been warned, proceed ? " - read answer - CUSTOM_DIR="$OPTARG" ;; - C) - cd "$OPTARG" ;; - O) - NODEOUTPUT="$OPTARG" ;; - f) - FORCE_OUTPUT=true ;; - h|*) - usage ;; - esac - done - - shift $(($OPTIND-1)) - - [[ -z "$@" ]] && usage - ISO_GENERIC="$1"; shift - - if [[ -z "$@" ]] ; then - nodes="$DEFAULT_TARGET" - else - nodes="$@" - fi - - ### getting image type - iso="${ISO_GENERIC%.iso}" - usb="${ISO_GENERIC%.usb}" - - if [ -d "$ISO_GENERIC" ] ; then - IMAGE_TYPE=dir - elif [ "$ISO_GENERIC" != "$iso" ] ; then - IMAGE_TYPE=iso - elif [ "$ISO_GENERIC" != "$usb" ] ; then - IMAGE_TYPE=usb - else - echo "Could not figure type of $ISO_GENERIC -- exiting" - exit 1 - fi - -# perform that later (lazily) -# so that (1st) node-dep checking are done before we bother to unpack -# startup - - for NODE_CONFIG in $nodes ; do - - if [ "$NODE_CONFIG" = "$DEFAULT_TARGET" ] ; then - NODE_DEP="" - # default node without customization does not make sense - if [ -z "$CUSTOM_DIR" ] ; then - message "creating a non-custom node-indep. image refused\n(Would have no effect)" - continue - else - NODENAME="$DEFAULT_TARGET" - NODEOUTPUT=$(basename "$CUSTOM_DIR") - fi - else - NODE_DEP=true - NODENAME=$(host_name "$NODE_CONFIG") - case "$NODENAME" in - .*|*.) - message "HOST_NAME or DOMAIN_NAME not found in $NODE_CONFIG - skipped" - continue ;; - esac - if [ -z "$NODEOUTPUT" ] ; then - if [ -z "$CUSTOM_DIR" ] ; then - NODEOUTPUT="$NODENAME" - else - NODEOUTPUT="${NODENAME}"-$(basename "$CUSTOM_DIR") - fi - fi - fi - - message "$COMMAND : dealing with node $NODENAME" - - if [[ "$IMAGE_TYPE" = "iso" || "$IMAGE_TYPE" = "dir" ]] ; then - NODE_ISO="$NODEOUTPUT.iso" - NODE_LOG="$NODEOUTPUT-iso.log" - else - NODE_ISO="$NODEOUTPUT.usb" - NODE_LOG="$NODEOUTPUT-usb.log" - fi - - ### checking - if [ -e "$NODE_ISO" ] ; then - if [ -n "$FORCE_OUTPUT" ] ; then - message "$NODE_ISO exists, will overwrite (-f)" - rm "$NODE_ISO" - else - message "$NODE_ISO exists, please remove first - skipped" ; continue - fi - fi - if [ -n "$NODE_DEP" -a ! -f "$NODE_CONFIG" ] ; then - message "Could not find node-specifig config - skipped" ; continue - fi - - startup - - if [ -n "$NODE_DEP" ] ; then - verbose "Pushing node config into overlay image" - mkdir -p "$OVERLAY_ROOT"/"$PLNODE_PATH" - cp "$NODE_CONFIG" "$OVERLAY_ROOT"/"$PLNODE_PATH"/"$PLNODE" - else - verbose "Cleaning node config for node-indep. image" - rm -f "$OVERLAY_ROOT"/"$PLNODE_PATH"/"$PLNODE" - fi - - echo "$COMMAND : Creating overlay image for $NODENAME" - (cd "$OVERLAY_ROOT" ; find . | cpio $CPIO_OARGS) | gzip -9 > "$ISO_ROOT"/overlay.img - - if [[ "$IMAGE_TYPE" = "iso" || "$IMAGE_TYPE" = "dir" ]] ; then - ### ISO - message "Refreshing isolinux.cfg" - # Calculate ramdisk size (total uncompressed size of both archives) - - ########## - # N.B. Thierry Parmentelat - 2006-06-28 - # the order in which these images need to be mentioned here for - # isolinux involved some - not so educated - guesses - # as per syslinux source code in syslinux/runkernel.inc, the - # config file is parsed left to right, and indeed it's in that - # order that the files are loaded right off the CD - # This does not tell however, in case a given file is present in - # two different images - and that's the very purpose here - which - # one will take precedence over the other - # I came up with this order on a trial-and-error basis, I would - # have preferred to find it described somewhere - # Might be worth checking with other versions of syslinux in case - # the custom files would turn out to not be taken into account - ########## - - if [ -n "$CUSTOM_DIR" ] ; then - images="bootcd.img custom.img overlay.img" - else - images="bootcd.img overlay.img" - fi - - ramdisk_size=$(cd "$ISO_ROOT" ; gzip -l $images | tail -1 | awk '{ print $2; }') # bytes - # keep safe, provision for cpio's block size - ramdisk_size=$(($ramdisk_size / 1024 + 1)) # kilobytes - - initrd_images=$(echo "$images" | sed -e 's/ /,/g') - # Write isolinux configuration - cat > "$ISO_ROOT"/isolinux.cfg < "$NODE_LOG" 2>&1 - message-done - - else - ### USB - umount "$NODE_ISO" - fi - node_cleanup - - message "Image for $NODENAME in $NODE_ISO" - done - - cleanup - -} - -#################### -main "$@" diff --git a/cdcustom.sh b/cdcustom.sh deleted file mode 100755 index c77043b..0000000 --- a/cdcustom.sh +++ /dev/null @@ -1,353 +0,0 @@ -#!/bin/bash - -# purpose : create a node-specific CD ISO image - -# NOTE (see also bootcd/build.sh) -# If you run your own myplc instance, and you dont need to -# customize the bootcd, you might wish to use bootcd/build.sh -# with the -f option -# However cdcustom.sh might turn out useful if -# (*) you only have an iso image and nothing else -# (*) or you want to generate several iso images in a single run -# (*) or you run myplc rpm, but need to customize the bootcd image, -# because the myplc rpm does not come with the required sources - -# See usage for full details - -######## Implementation note -# in a former release it was possible to perform faster by -# loopback-mounting the generic iso image -# Unfortunately mkisofs cannot graft a file that already exists on the -# original tree (so overlay.img cannot be overridden) -# to make things worse we cannot loopback-mount the cpio-gzipped -# overlay image either, so all this stuff is way more complicated -# than it used to be. -# -# as of 2006 jun 28 we use a third image named custom.img for -# overriding files in bootcd.img, which let us use bootcd.img intact -# and thus notably speeds things up -# -######## Logic -# here is how we do this -# for efficiency, we do only once: -# (*) mount the generic iso -# (*) copy it into a temp dir -# (*) unzip/unarchive overlay image into another temp dir -# (*) if required prepare a custom.img -# then for each node, we -# (*) insert plnode.txt at the right place if not a default iso -# (*) rewrap a gzipped/cpio overlay.img, that we push onto the -# copied iso tree -# (*) rewrap this into an iso image -# and cleanup/umount everything - - -set -e -COMMANDSH=$(basename $0) -COMMAND=$(basename $0 .sh) -REVISION="$Id$" - -function usage () { - - echo "Usage: $COMMANDSH [-f] [ -c bootcd-dir] generic-iso node-config [.. node-configs]" - echo " Creates a node-specific ISO image" - echo "*Options" - echo -e " -f\r\t\tForces overwrite of output iso images" - echo -e " -c bootcd-dir\r\t\tis taken as the root of a set of custom bootcd files" - echo -e "\t\ti.e. the files under dir take precedence" - echo -e "\t\tover the ones in the generic bootcd" - echo "*Arguments" - echo -e " generic-iso\r\t\tThe iso image as downloaded from myplc" - echo -e "\t\ttypically in /plc/data/var/www/html/download/" - echo -e " node-config(s)\r\t\tnode config files (plnode.txt format)" - echo -e " default\r\t\tmentioned instead of a plnode.txt file, for generating" - echo -e "\t\ta node-independent iso image" - echo -e "\t\tThis is defaultbehaviour when no node-config are provided" - echo "*Outputs" - echo " node-specific iso images are named after nodename[-bootcd-dir].iso" - echo " node-independant iso image is named after bootcd-dir.iso" - echo "*Examples" - echo "# $COMMANDSH -c onelab-bootcd /plc/data/var/www/html/download/onelab-BootCD-3.3.iso" - echo " Creates onelab-bootcd.iso that has no plnode.txt embedded and that uses" - echo " the hw init scripts located under onelab-bootcd/etc/rc.d/init.d/" - echo "# $COMMANDSH /plc/data/var/www/html/download/onelab-BootCD-3.3.iso node1.txt node2.txt" - echo " Creates node1.iso and node2.iso that have plnode.txt embedded for these two nodes" - echo " and the standard bootcd" - echo "*Version $REVISION" - exit 1 -} - -### read config file in a subshell and echoes host_name -function host_name () { - export CONFIG=$1; shift - ( . "$CONFIG" ; echo $HOST_NAME ) -} - -### Globals -PLNODE_PATH=/usr/boot -PLNODE=plnode.txt -DEFAULT_TARGET=default -# defined on the command-line -CUSTOM_DIR= -## arg-provided generic iso -ISO_GENERIC= -# node-dep conf file -NODE_CONFIG= -# resulting iso image and log -NODE_ISO= -NODE_LOG= -## mount points and temps -ISO_MOUNT=/tmp/$COMMAND-$$-mount -ISO_ROOT=/tmp/$COMMAND-$$-iso -OVERLAY_ROOT=/tmp/$COMMAND-$$-overlay -# node-dep cpio/gzip image -NODE_OVERLAY= - -CPIO_OARGS="-oc --quiet" -CPIO_IARGS="-id --quiet" -CPIO_PARGS="-pdu --quiet" - -# export DEBUG=true -# for enabling debug messages (set -x) - -# export VERBOSE=true for enabling this -function verbose () { - if [ -n "$VERBOSE" ] ; then - echo "$@" - fi - } - -function message () { echo -e "$COMMAND : $@" ; } -function message-n () { echo -en "$COMMAND : $@" ; } -function message-done () { echo Done ; } -function error () { echo -e "$COMMAND : ERROR $@ - exiting" ; exit 1 ;} - -# lazy startup -STARTED_UP= -function startup () { - - [[ -n "$DEBUG" ]] && set -x - - # lazy : run only once - [[ -n "$STARTED_UP" ]] && return - message "lazy start up" - - ### checking - [ ! -f "$ISO_GENERIC" ] && error "Could not find template ISO image" - [ -d "$ISO_MOUNT" ] && error "$ISO_MOUNT already exists" - [ -d "$ISO_ROOT" ] && error "$ISO_ROOT already exists" - [ -d "$OVERLAY_ROOT" ] && error "$OVERLAY_ROOT already exists" - - verbose "Creating temp dirs" - mkdir -p $ISO_MOUNT $ISO_ROOT $OVERLAY_ROOT - verbose "Mounting generic ISO $ISO_GENERIC under $ISO_MOUNT" - mount -o ro,loop $ISO_GENERIC $ISO_MOUNT - - ### DONT!! use tar for duplication - message "Duplicating ISO image in $ISO_ROOT" - (cd $ISO_MOUNT ; find . | cpio $CPIO_PARGS $ISO_ROOT ) - - message "Extracting generic overlay image in $OVERLAY_ROOT" - gzip -d -c "$ISO_ROOT/overlay.img" | ( cd "$OVERLAY_ROOT" ; cpio $CPIO_IARGS ) - - if [ -n "$CUSTOM_DIR" ] ; then - [ -d "$CUSTOM_DIR" ] || error "Directory $CUSTOM_DIR not found" - prepare_custom_image - fi - - STARTED_UP=true - -} - -function prepare_custom_image () { - - # Cleaning any sequel - rm -f custom.img - [ -f custom.img ] && error "Could not cleanup custom.img" - - message "WARNING : You are creating *custom* boot CDs" - - message-n "Creating $ISO_ROOT/custom.img" - (cd $CUSTOM_DIR ; find . | cpio $CPIO_OARGS) | gzip -9 > $ISO_ROOT/custom.img - message-done - -} - -function node_cleanup () { - verbose "Cleaning node-dependent cpio image" - rm -rf "$NODE_OVERLAY" - -} - -function cleanup () { - - echo "$COMMAND : cleaning up" - [[ -n "$DEBUG" ]] && set -x - - verbose "Cleaning overlay image" - rm -rf "$OVERLAY_ROOT" - verbose "Cleaning ISO image" - rm -rf "$ISO_ROOT" - verbose "Cleaning node-dep overlay image" - rm -f "$NODE_OVERLAY" - verbose "Unmounting $ISO_MOUNT" - umount "$ISO_MOUNT" 2> /dev/null - rmdir "$ISO_MOUNT" - exit -} - -function abort () { - echo "$COMMAND : Aborting" - message "Cleaning $NODE_ISO" - rm -f "$NODE_ISO" - cleanup -} - -function main () { - - trap abort int hup quit err - set -e - - [[ -n "$DEBUG" ]] && set -x - - # accept -b as -c, I am used to it now - while getopts "c:b:fh" opt ; do - case $opt in - c|b) - CUSTOM_DIR=$OPTARG ;; - f) - FORCE_OUTPUT=true ;; - h|*) - usage ;; - esac - done - - shift $(($OPTIND-1)) - - [[ -z "$@" ]] && usage - ISO_GENERIC=$1; shift - - if [[ -z "$@" ]] ; then - nodes="$DEFAULT_TARGET" - else - nodes="$@" - fi - -# perform that later (lazily) -# so that (1st) node-dep checking are done before we bother to unpack -# startup - - for NODE_CONFIG in $nodes ; do - - if [ "$NODE_CONFIG" = "$DEFAULT_TARGET" ] ; then - NODE_DEP="" - # default node without customization does not make sense - if [ -z "$CUSTOM_DIR" ] ; then - message "creating a non-custom node-indep. image refused\n(Would have no effect)" - continue - else - NODENAME=$DEFAULT_TARGET - NODEOUTPUT=$(basename $CUSTOM_DIR) - fi - else - NODE_DEP=true - NODENAME=$(host_name $NODE_CONFIG) - if [ -z "$NODENAME" ] ; then - message "HOST_NAME not found in $NODE_CONFIG - skipped" - continue - fi - if [ -z "$CUSTOM_DIR" ] ; then - NODEOUTPUT=$NODENAME - else - NODEOUTPUT=${NODENAME}-$(basename $CUSTOM_DIR) - fi - fi - - message "$COMMAND : dealing with node $NODENAME" - - NODE_ISO="$NODEOUTPUT.iso" - NODE_LOG="$NODEOUTPUT.log" - - ### checking - if [ -e "$NODE_ISO" ] ; then - if [ -n "$FORCE_OUTPUT" ] ; then - message "$NODE_ISO exists, will overwrite (-f)" - rm $NODE_ISO - else - message "$NODE_ISO exists, please remove first - skipped" ; continue - fi - fi - if [ -n "$NODE_DEP" -a ! -f "$NODE_CONFIG" ] ; then - message "Could not find node-specifig config - skipped" ; continue - fi - - startup - - if [ -n "$NODE_DEP" ] ; then - verbose "Pushing node config into overlay image" - mkdir -p $OVERLAY_ROOT/$PLNODE_PATH - cp "$NODE_CONFIG" $OVERLAY_ROOT/$PLNODE_PATH/$PLNODE - else - verbose "Cleaning node config for node-indep. image" - rm -f $OVERLAY_ROOT/$PLNODE_PATH/$PLNODE - fi - - echo "$COMMAND : Creating overlay image for $NODENAME" - (cd "$OVERLAY_ROOT" ; find . | cpio $CPIO_OARGS) | gzip -9 > $ISO_ROOT/overlay.img - - message "Refreshing isolinux.cfg" - # Calculate ramdisk size (total uncompressed size of both archives) - - ########## - # N.B. Thierry Parmentelat - 2006-06-28 - # the order in which these images need to be mentioned here for - # isolinux involved some - not so educated - guesses - # as per syslinux source code in syslinux/runkernel.inc, the - # config file is parsed left to right, and indeed it's in that - # order that the files are loaded right off the CD - # This does not tell however, in case a given file is present in - # two different images - and that's the very purpose here - which - # one will take precedence over the other - # I came up with this order on a trial-and-error basis, I would - # have preferred to find it described somewhere - # Might be worth checking with other versions of syslinux in case - # the custom files would turn out to not be taken into account - ########## - - if [ -n "$CUSTOM_DIR" ] ; then - images="bootcd.img custom.img overlay.img" - else - images="bootcd.img overlay.img" - fi - - ramdisk_size=$(cd $ISO_ROOT ; gzip -l $images | tail -1 | awk '{ print $2; }') # bytes - # keep safe, provision for cpio's block size - ramdisk_size=$(($ramdisk_size / 1024 + 1)) # kilobytes - - initrd_images=$(echo "$images" | sed -e 's/ /,/g') - # Write isolinux configuration - cat > $ISO_ROOT/isolinux.cfg < "$NODE_LOG" 2>&1 - message-done - - node_cleanup - - message "CD ISO image for $NODENAME in $NODE_ISO" - done - - cleanup - -} - -#################### -main "$@" diff --git a/newbuild.sh b/newbuild.sh deleted file mode 100755 index 66b5010..0000000 --- a/newbuild.sh +++ /dev/null @@ -1,162 +0,0 @@ -#!/bin/bash -# -# Builds custom BootCD ISO and USB images in the current -# directory. -# -# Mark Huang -# Copyright (C) 2004-2006 The Trustees of Princeton University -# -# $Id$ -# - -PATH=/sbin:/bin:/usr/sbin:/usr/bin - -BOOTCD_VERSION=4.0 - -if [ -f /etc/planetlab/plc_config ] ; then - # Source PLC configuration - . /etc/planetlab/plc_config -else - echo "Could not find /etc/planetlab/plc_config." - echo "This file defines the configuration of your PlanetLab installation." - exit 1 -fi - -# This support for backwards compatibility can be taken out in the -# future. RC1 based MyPLCs set $PLC_BOOT_SSL_CRT in the plc_config -# file, but >=RC2 based bootcd assumes that $PLC_BOOT_CA_SSL_CRT is -# set. -if [ -z "$PLC_BOOT_CA_SSL_CRT" -a ! -z "$PLC_BOOT_SSL_CRT" ] ; then - PLC_BOOT_CA_SSL_CRT=$PLC_BOOT_SSL_CRT - PLC_API_CA_SSL_CRT=$PLC_API_SSL_CRT -fi - -output="$PLC_NAME-BootCD-$BOOTCD_VERSION.iso" - -usage() -{ - echo "Usage: build.sh [OPTION]..." - eceho " -o file Output file (default: $output)" - echo " -h This message" - exit 1 -} - -# Get options -while getopts "o:h" opt ; do - case $opt in - o) - output=$OPTARG - ;; - h|*) - usage - ;; - esac -done - -FULL_VERSION_STRING="$PLC_NAME BootCD $BOOTCD_VERSION" -echo "* Building image for $FULL_VERSION_STRING" - -# Do not tolerate errors -set -e - -# Change to our source directory -srcdir=$(cd $(dirname $0) && pwd -P) -pushd $srcdir >/dev/null - -# Root of the isofs -isofs=$PWD/isofs - -# Miscellaneous files -misc=$(mktemp -d /tmp/misc.XXXXXX) -trap "rm -rf $misc" ERR INT - -# initramfs requires that /init be present -ln -sf /sbin/init $misc/init - -# Create version file -echo "$FULL_VERSION_STRING" >$misc/.bootcd - -# Install GPG, boot, and API server public keys and certificates -install -D -m 644 $PLC_ROOT_GPG_KEY_PUB $misc/$PLC_ROOT_GPG_KEY_PUB -install -D -m 644 $PLC_BOOT_CA_SSL_CRT $misc/$PLC_BOOT_CA_SSL_CRT -install -D -m 644 $PLC_API_CA_SSL_CRT $misc/$PLC_API_CA_SSL_CRT - -cat > $misc/etc/planetlab/plc_config <$misc/etc/issue <$isofs/misc.img - -rm -rf $misc -trap - ERR INT - -# Calculate ramdisk size (total uncompressed size of all initrds) -ramdisk_size=$(gzip -l $isofs/*.img | tail -1 | awk '{ print $2; }') # bytes -ramdisk_size=$((($ramdisk_size + 1023) / 1024)) # kilobytes - -# Write isolinux configuration -echo "$FULL_VERSION_STRING" >$isofs/version -cat >$isofs/isolinux.cfg </dev/null - -# Create ISO image -echo "* Creating ISO image" -mkisofs -o "$output" \ - -R -allow-leading-dots -J -r \ - -b isolinux.bin -c boot.cat \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ - $isofs - -# XXX Create USB image - -exit 0 -- 2.43.0