X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=build.sh;h=b6fff0bd865d5a2093f1901aa098c4160be83408;hb=a1dc5376e0df2b95b1d3061f48352905f47b08ef;hp=cfce5e27812ba6544175f337e459a023fc04de62;hpb=ce071abbbc30e0f5356d41e8cca8aaf8cc09d66f;p=bootcd.git diff --git a/build.sh b/build.sh index cfce5e2..b6fff0b 100755 --- a/build.sh +++ b/build.sh @@ -7,8 +7,6 @@ # Mark Huang # Copyright (C) 2004-2007 The Trustees of Princeton University # -# $Id$ -# COMMAND=$(basename $0) DIRNAME=$(dirname $0) @@ -30,7 +28,7 @@ OUTPUT_BASE= DRY_RUN="" OUTPUT_NAME="" TYPES="" -KARGS_STR="" +KERNEL_ARGS="" # various globals BUILDTMP="" @@ -43,7 +41,6 @@ console_dev="" console_baud="" console_spec="" console_serial_line="" -kernel_args="" #################### compute all supported types @@ -163,7 +160,7 @@ function parse_command_line () { o) OUTPUT_NAME="$OPTARG" ;; C) CUSTOM_DIR="$OPTARG" ;; V) VARIANT="$OPTARG" ;; - k) KARGS_STR="$KARGS_STR $OPTARG" ;; + k) KERNEL_ARGS="$KERNEL_ARGS $OPTARG" ;; n) DRY_RUN=true ;; h|*) usage ;; esac @@ -174,6 +171,18 @@ function parse_command_line () { [ -z "$VARIANT" ] && VARIANT="build" [ "$CONSOLE_INFO" == "default" ] && CONSOLE_INFO=$SERIAL_CONSOLE + if [ -n "$NODE_CONFIGURATION_FILE" ] ; then + # check existence of NODE_CONFIGURATION_FILE and normalize as we will change directory + if [ ! -f "$NODE_CONFIGURATION_FILE" ] ; then + echo "Node configuration file $NODE_CONFIGURATION_FILE not found - exiting" + exit 1 + fi + cf_dir="$(dirname $NODE_CONFIGURATION_FILE)" + cf_dir="$(cd $cf_dir; pwd -P)" + cf_file="$(basename $NODE_CONFIGURATION_FILE)" + NODE_CONFIGURATION_FILE="$cf_dir"/"$cf_file" + fi + # check TYPES local matcher="XXX$(echo $ALL_TYPES | sed -e 's,\W,XXX,g')XXX" for t in $TYPES; do @@ -221,7 +230,9 @@ function build_overlay () { for i in "$ISOREF"/isofs/{bootcd.img,kernel}; do ln -s "$i" "${BUILDTMP}/isofs" done - cp "/usr/lib/syslinux/isolinux.bin" "${BUILDTMP}/isofs" + # the syslinux that comes with f12 has this file in a new location + cp "/usr/lib/syslinux/isolinux.bin" "${BUILDTMP}/isofs" \ + || cp "/usr/share/syslinux/isolinux.bin" "${BUILDTMP}/isofs" ISOFS="${BUILDTMP}/isofs" # Root of the ISO and USB images @@ -319,14 +330,19 @@ EOF plnet -- --root $OVERLAY --files-only --program BootCD $NODE_ID fi - if [ -n "$IS_SERIAL" ] ; then - KARGS_STR="$KARGS_STR ${console_spec}" - fi + [ -n "$IS_SERIAL" ] && KERNEL_ARGS="$KERNEL_ARGS ${console_spec}" - if [ -n "$KARGS_STR" ] ; then - echo "$KARGS_STR" > $OVERLAY/kargs.txt - kernel_args=$KARGS_STR - fi + # tmp: should be restricted to f15 nodes and above + # making sure the network interfaces are still numbered eth0 and above + KERNEL_ARGS="$KERNEL_ARGS biosdevname=0" + # making sure selinux is turned off - somehow this is needed with lxc/f14 + KERNEL_ARGS="$KERNEL_ARGS selinux=0" +# cannot use this mecahnism to set systemd default target because this applies to kexec boots as well +# # set default target for systemd +# KERNEL_ARGS="$KERNEL_ARGS systemd.unit=pl_boot.target" + # output more systemd-related messages on the console + KERNEL_ARGS="$KERNEL_ARGS systemd.log_level=debug systemd.log_target=kmsg" + [ -n "$KERNEL_ARGS" ] && echo "$KERNEL_ARGS" > $OVERLAY/kargs.txt # Pack overlay files into a compressed archive echo "* Compressing overlay image" @@ -358,7 +374,7 @@ function build_iso() { cat >$ISOFS/isolinux.cfg <${BUILDTMP}/mtools.conf<$tmp </dev/null || : mcopy -i "$usb" "$tmp" z:/syslinux.cfg rm -f "$tmp" - rm -f "${BUILDTMP}/mtools.conf" + rm -f "${MTOOLSRC}" unset MTOOLSRC echo "making USB image bootable." @@ -431,6 +452,12 @@ function build_usb() { rm -f "$usb" mkfs.vfat -C "$usb" $(($(du -Lsk $ISOFS | awk '{ print $1; }') + $FREE_SPACE)) + cat >${BUILDTMP}/mtools.conf<$tmp </dev/null || : mcopy -i "$usb" "$tmp" ::/syslinux.cfg rm -f "$tmp" + rm -f "${MTOOLSRC}" + unset MTOOLSRC echo "making USB image bootable." syslinux "$usb" @@ -521,9 +550,12 @@ EOF popd # update etc/inittab to start with pl_rsysinit - sed -i 's,pl_sysinit,pl_rsysinit,' etc/inittab + for file in etc/inittab etc/event.d/rcS etc/init/rcS.conf; do + [ -f $file ] && sed -i 's,pl_sysinit,pl_rsysinit,' $file + done # modify inittab to have a serial console + # xxx this might well be broken with f12 and above xxx if [ -n "$serial" ] ; then echo "T0:23:respawn:/sbin/agetty -L $console_dev $console_baud vt100" >> etc/inittab # and let root log in @@ -597,7 +629,7 @@ function build_iso_cramfs() { cat >$tmp/isolinux.cfg <$tmp <