CONFIGURATION=default
NODE_CONFIGURATION_FILE=
TYPES="usb iso usb_serial iso_serial"
+ALL_TYPES="usb iso usb_serial iso_serial usb_cramfs iso_cramfs usb_cramfs_serial iso_cramfs_serial"
# Leave 4 MB of free space
FREE_SPACE=4096
CUSTOM_DIR=
echo " -c name (Deprecated) Static configuration to use (default: $CONFIGURATION)"
echo " -f planet.cnf Node to customize CD for (default: none)"
echo " -t 'types' Build the specified images (default: $TYPES)"
+ echo " All known types: $ALL_TYPES"
echo " -a Build all supported images"
echo " -C custom-dir Custom directory"
echo " -O output-base The basename of the generated files (default: PLC_NAME-BootCD-VERSION)"
OUTPUT_BASE="$OPTARG"
;;
a)
- TYPES="usb iso usb_serial iso_serial usb_cramfs iso_cramfs usb_cramfs_serial iso_cramfs_serial"
+ TYPES="$ALL_TYPES"
;;
h|*)
usage
for i in "$isofs"/{bootcd.img,kernel}; do
ln -s "$i" "${BUILDTMP}/isofs"
done
-cp "$isofs/isolinux.bin" "${BUILDTMP}/isofs"
+cp "/usr/lib/syslinux/isolinux.bin" "${BUILDTMP}/isofs"
isofs="${BUILDTMP}/isofs"
# Root of the ISO and USB images
function build_iso()
{
- local iso="$1"
- local serial=$2
- local custom=$3
+ local iso="$1" ; shift
+ local serial="$1" ; shift
+ local custom="$1"
# Write isolinux configuration
cat >$isofs/isolinux.cfg <<EOF
$MKISOFS_OPTS \
$isofs
}
+function build_usb_partition()
+{
+ echo -n "* Creating USB image with partitions..."
+ local usb="$1" ; shift
+ local serial="$1" ; shift
+ local custom="$1"
+
+ local size=$(($(du -Lsk $isofs | awk '{ print $1; }') + $FREE_SPACE))
+ size=$(( $size / 1024 ))
+
+ local heads=64
+ local sectors=32
+ local cylinders=$(( ($size*1024*2)/($heads*$sectors) ))
+ local offset=$(( $sectors*512 ))
+
+ /usr/lib/syslinux/mkdiskimage -M -4 "$usb" $size $heads $sectors
+
+ cat >${BUILDTMP}/mtools.conf<<EOF
+drive z:
+file="${usb}"
+cylinders=$cylinders
+heads=$heads
+sectors=$sectors
+offset=$offset
+mformat_only
+EOF
+ # environment variable for mtools
+ export MTOOLSRC="${BUILDTMP}/mtools.conf"
+
+ ### COPIED FROM build_usb() below!!!!
+ echo -n " populating USB image... "
+ mcopy -bsQ -i "$usb" "$isofs"/* z:/
+
+ # Use syslinux instead of isolinux to make the image bootable
+ tmp="${BUILDTMP}/syslinux.cfg"
+ cat >$tmp <<EOF
+${serial:+SERIAL 0 115200}
+DEFAULT kernel
+APPEND ramdisk_size=$ramdisk_size initrd=bootcd.img,overlay.img${custom:+,custom.img} root=/dev/ram0 rw ${serial:+console=ttyS0,115200n8}
+DISPLAY pl_version
+PROMPT 0
+TIMEOUT 40
+EOF
+ mdel -i "$usb" z:/isolinux.cfg 2>/dev/null || :
+ mcopy -i "$usb" "$tmp" z:/syslinux.cfg
+ rm -f "$tmp"
+ rm -f "${BUILDTMP}/mtools.conf"
+ unset MTOOLSRC
+
+ echo "making USB image bootable."
+ syslinux -o $offset "$usb"
+
+}
# Create USB image
function build_usb()
{
echo -n "* Creating USB image... "
- local usb="$1"
- local serial=$2
- local custom=$3
+ local usb="$1" ; shift
+ local serial="$1" ; shift
+ local custom="$1"
mkfs.vfat -C "$usb" $(($(du -Lsk $isofs | awk '{ print $1; }') + $FREE_SPACE))
function prepare_cramfs()
{
[ -n "$CRAMFS_PREPARED" ] && return 0
- local custom=$1
+ local custom="$1"
echo "* Setting up CRAMFS-based images"
local tmp="${BUILDTMP}/cramfs-tree"
# Create ISO CRAMFS image
function build_iso_cramfs()
{
- local iso="$1"
- local serial=$2
- prepare_cramfs $3
+ local iso="$1" ; shift
+ local serial="$1" ; shift
+ local custom="$1"
+ prepare_cramfs "$custom"
echo "* Creating ISO CRAMFS-based image"
local tmp="${BUILDTMP}/cramfs-iso"
cp ${BUILDTMP}/cramfs.img $tmp
mkisofs -o "$iso" \
- "$MKISOFS_OPTS" \
+ $MKISOFS_OPTS \
$tmp
rm -fr "$tmp"
function build_usb_cramfs()
{
local usb="$1"
- local serial=$2
- prepare_cramfs $3
+ local serial="$1" ; shift
+ local custom="$1"
+ prepare_cramfs "$custom"
echo "* Creating USB CRAMFS based image"
let vfat_size=${cramfs_size}+$FREE_SPACE
{
echo $1 | sed '
s/usb$/.usb/;
+ s/usb_partition$/-partition.usb/;
s/usb_serial$/-serial.usb/;
s/iso$/.iso/;
s/iso_serial$/-serial.iso/;
serial=1
t=`echo $t | sed 's/_serial$//'`
fi
- build_$t "${OUTPUT_BASE}${tname}" $serial $CUSTOM_DIR
+ build_$t "${OUTPUT_BASE}${tname}" "$serial" "$CUSTOM_DIR"
done
exit 0