Use pyplnet to bring up the network.
[bootcd.git] / build.sh
index 32f1506..344ccb0 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -41,6 +41,7 @@ console_dev=""
 console_baud=""
 console_spec=""
 console_serial_line=""
+kernel_args=""
 
 
 #################### compute all supported types
@@ -98,19 +99,8 @@ function init_and_check () {
        . /etc/planetlab/plc_config
     fi
 
-    # From within a myplc chroot /usr/tmp is too small 
-    # to build all possible images, whereas /data is part of the host
-    # filesystem and usually has sufficient space.  What we
-    # should do is check whether the expected amount of space
-    # is available.
-    BUILDTMP=/usr/tmp
-    if [ -d /data/tmp ] ; then
-       isreadonly=$(mktemp /data/tmp/isreadonly.XXXXXX || /bin/true)
-       if [ -n "$isreadonly" ] ; then
-            rm -f "$isreadonly"
-            BUILDTMP=/data/tmp
-       fi
-    fi
+    # use /var/tmp that should be large enough on both chroot- or vserver-based myplc
+    BUILDTMP=/var/tmp
 
     FULL_VERSION_STRING="${PLC_NAME} BootCD ${BOOTCD_VERSION}"
 
@@ -163,7 +153,7 @@ function parse_command_line () {
            O) OUTPUT_BASE="$OPTARG" ;;
            o) OUTPUT_NAME="$OPTARG" ;;
            C) CUSTOM_DIR="$OPTARG" ;;
-           k) KARGS_STR="$OPTARG" ;;
+           k) KARGS_STR="$KARGS_STR $OPTARG" ;;
            n) DRY_RUN=true ;;
            h|*) usage ;;
        esac
@@ -313,6 +303,9 @@ EOF
     if [ -f "$NODE_CONFIGURATION_FILE" ] ; then
        echo "* Installing node configuration file $NODE_CONFIGURATION_FILE -> /usr/boot/plnode.txt of the bootcd image"
        install -D -m 644 $NODE_CONFIGURATION_FILE $OVERLAY/usr/boot/plnode.txt
+       NODE_ID=$(source $NODE_CONFIGURATION_FILE; echo $NODE_ID)
+       echo "* Building network configuration for $NODE_ID"
+       plnet -- --root $OVERLAY --files-only --program BootCD $NODE_ID
     fi
 
     if [ -n "$IS_SERIAL" ] ; then
@@ -321,6 +314,7 @@ EOF
 
     if [ -n "$KARGS_STR" ] ; then
        echo "$KARGS_STR" > $OVERLAY/kargs.txt
+       kernel_args=$KARGS_STR
     fi
 
     # Pack overlay files into a compressed archive
@@ -353,7 +347,7 @@ function build_iso() {
     cat >$ISOFS/isolinux.cfg <<EOF
 ${console_serial_line}
 DEFAULT kernel
-APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${console_spec}
+APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${kernel_args}
 DISPLAY pl_version
 PROMPT 0
 TIMEOUT 40
@@ -361,9 +355,7 @@ EOF
 
     # Create ISO image
     echo "* Creating ISO image"
-    mkisofs -o "$iso" \
-        $MKISOFS_OPTS \
-        $ISOFS
+    mkisofs -o "$iso" $MKISOFS_OPTS $ISOFS
 }
 
 #################### USB with partitions
@@ -403,7 +395,7 @@ EOF
     cat >$tmp <<EOF
 ${console_serial_line}
 DEFAULT kernel
-APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${console_spec}
+APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${kernel_args}
 DISPLAY pl_version
 PROMPT 0
 TIMEOUT 40
@@ -436,7 +428,7 @@ function build_usb() {
     cat >$tmp <<EOF
 ${console_serial_line}
 DEFAULT kernel
-APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${console_spec}
+APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${kernel_args}
 DISPLAY pl_version
 PROMPT 0
 TIMEOUT 40
@@ -593,7 +585,7 @@ function build_iso_cramfs() {
     cat >$tmp/isolinux.cfg <<EOF
 ${console_serial_line}
 DEFAULT kernel
-APPEND ramdisk_size=$cramfs_size initrd=cramfs.img root=/dev/ram0 ro ${console_spec}
+APPEND ramdisk_size=$cramfs_size initrd=cramfs.img root=/dev/ram0 ro ${kernel_args}
 DISPLAY pl_version
 PROMPT 0
 TIMEOUT 40
@@ -631,7 +623,7 @@ function build_usb_cramfs() {
     cat >$tmp <<EOF
 ${console_serial_line}
 DEFAULT kernel
-APPEND ramdisk_size=$cramfs_size initrd=cramfs.img root=/dev/ram0 ro ${console_spec}
+APPEND ramdisk_size=$cramfs_size initrd=cramfs.img root=/dev/ram0 ro ${kernel_args}
 DISPLAY pl_version
 PROMPT 0
 TIMEOUT 40