# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2004-2006 The Trustees of Princeton University
#
-# $Id: build.sh,v 1.33 2006/04/03 20:07:45 mlhuang Exp $
+# $Id$
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin
if [ -f /etc/planetlab/plc_config ] ; then
# Source PLC configuration
. /etc/planetlab/plc_config
-elif [ -d configurations/$CONFIGURATION ] ; then
+fi
+
+# If PLC configuration is not valid, try a static configuration
+if [ -z "$PLC_BOOT_CA_SSL_CRT" -a -d configurations/$CONFIGURATION ] ; then
# (Deprecated) Source static configuration
. configurations/$CONFIGURATION/configuration
PLC_NAME="PlanetLab"
+ PLC_MAIL_SUPPORT_ADDRESS="support@planet-lab.org"
+ PLC_WWW_HOST="www.planet-lab.org"
+ PLC_WWW_PORT=80
if [ -n "$EXTRA_VERSION" ] ; then
BOOTCD_VERSION="$BOOTCD_VERSION $EXTRA_VERSION"
fi
PLC_BOOT_HOST=$PRIMARY_SERVER
PLC_BOOT_SSL_PORT=$PRIMARY_SERVER_PORT
- PLC_BOOT_SSL_CRT=configurations/$CONFIGURATION/$PRIMARY_SERVER_CERT
+ PLC_BOOT_CA_SSL_CRT=configurations/$CONFIGURATION/$PRIMARY_SERVER_CERT
PLC_ROOT_GPG_KEY_PUB=configurations/$CONFIGURATION/$PRIMARY_SERVER_GPG
fi
# Root of the ISO and USB images
overlay=$(mktemp -d /tmp/overlay.XXXXXX)
install -d -m 755 $overlay
-trap "rm -rf $overlay" ERR
+trap "rm -rf $overlay" ERR INT
# Create version files
echo "* Creating version files"
# but never got around to it. Just install the same parameters for
# both for now.
for dir in $overlay/usr/boot $overlay/usr/boot/backup ; do
- install -D -m 644 $PLC_BOOT_SSL_CRT $dir/cacert.pem
+ install -D -m 644 $PLC_BOOT_CA_SSL_CRT $dir/cacert.pem
install -D -m 644 $PLC_ROOT_GPG_KEY_PUB $dir/pubring.gpg
echo "$PLC_BOOT_HOST" >$dir/boot_server
echo "$PLC_BOOT_SSL_PORT" >$dir/boot_server_port
done
# (Deprecated) Install old-style boot server configuration files
-install -D -m 644 $PLC_BOOT_SSL_CRT $overlay/usr/bootme/cacert/$PLC_BOOT_HOST/cacert.pem
+install -D -m 644 $PLC_BOOT_CA_SSL_CRT $overlay/usr/bootme/cacert/$PLC_BOOT_HOST/cacert.pem
echo "$FULL_VERSION_STRING" >$overlay/usr/bootme/ID
echo "$PLC_BOOT_HOST" >$overlay/usr/bootme/BOOTSERVER
echo "$PLC_BOOT_HOST" >$overlay/usr/bootme/BOOTSERVER_IP
# Generate /etc/issue
echo "* Generating /etc/issue"
+
+if [ "$PLC_WWW_PORT" = "443" ] ; then
+ PLC_WWW_URL="https://$PLC_WWW_HOST/"
+elif [ "$PLC_WWW_PORT" != "80" ] ; then
+ PLC_WWW_URL="http://$PLC_WWW_HOST:$PLC_WWW_PORT/"
+else
+ PLC_WWW_URL="http://$PLC_WWW_HOST/"
+fi
+
mkdir -p $overlay/etc
cat >$overlay/etc/issue <<EOF
+$FULL_VERSION_STRING
$PLC_NAME Node: \n
Kernel \r on an \m
+$PLC_WWW_URL
This machine is a node in the $PLC_NAME distributed network. It has
not fully booted yet. If you have cancelled the boot process at the
to you. Otherwise, please contact $PLC_MAIL_SUPPORT_ADDRESS.
Console login at this point is restricted to root. Provide the root
-password of the default $PLC_NAME Central administrator account.
+password of the default $PLC_NAME Central administrator account at the
+time that this CD was created.
+
EOF
# Set root password
(cd $overlay && find . | cpio --quiet -c -o) | gzip -9 >$isofs/overlay.img
rm -rf $overlay
-trap - ERR
+trap - ERR INT
# Calculate ramdisk size (total uncompressed size of both archives)
ramdisk_size=$(gzip -l $isofs/bootcd.img $isofs/overlay.img | tail -1 | awk '{ print $2; }') # bytes
-ramdisk_size=$(($ramdisk_size / 1024)) # kilobytes
+ramdisk_size=$((($ramdisk_size + 1023) / 1024)) # kilobytes
# Write isolinux configuration
echo "$FULL_VERSION_STRING" >$isofs/pl_version
# Mount it
tmp=$(mktemp -d /tmp/bootcd.XXXXXX)
mount -o loop "$usb" $tmp
-trap "umount $tmp; rm -rf $tmp" ERR
+trap "umount $tmp; rm -rf $tmp" ERR INT
# Populate it
echo "* Populating USB image"
mv $tmp/isolinux.cfg $tmp/syslinux.cfg
umount $tmp
rmdir $tmp
-trap - ERR
+trap - ERR INT
echo "* Making USB image bootable"
$srcdir/syslinux/unix/syslinux "$usb"