#!/bin/bash
set -x
# Build a custom tinycore bootable image
## define releases for tools
. conf
PROGRAM=../../linux/CLI/dist/Release_i686/GNU-Linux/sedutil-cli
VERSIONINFO=`git describe --dirty`
BUILDTYPE=Rescue
BUILDIMG=${BUILDTYPE}-${VERSIONINFO}.img
echo "Building " $BUILDTYPE "image"
# Start fresh
sudo rm -rf ${BUILDTYPE} ; mkdir ${BUILDTYPE} ; cd ${BUILDTYPE}
[ -f ../scratch/${SYSLINUX}/bios/mbr/mbr.bin -a \
     -x ../scratch/${SYSLINUX}/bios/extlinux/extlinux -a \
     -f ../scratch/core.gz -a \
     -f ../scratch/vmlinuz -a \
     -f ../scratch/hdparm.tcz -a \
     -f ${PROGRAM} \
  ] || { echo " prereqs are not available "; exit 1; }
#
dd if=/dev/zero of=${BUILDIMG} bs=1M count=15
(echo o;echo n;echo p;echo 1;echo "";echo "";echo a;echo 1;echo w) | fdisk -C 100 ${BUILDIMG}
dd if=../scratch/${SYSLINUX}/bios/mbr/mbr.bin of=${BUILDIMG} count=1 conv=notrunc bs=512
LOOPDEV=`sudo losetup --show -f -o 1048576 ${BUILDIMG}`
sudo mkfs.ext4 $LOOPDEV -L ${BUILDTYPE}-${VERSIONINFO}
mkdir image
sudo mount $LOOPDEV image
sudo chmod 777 image
mkdir -p image/boot/extlinux
sudo ../scratch/${SYSLINUX}/bios/extlinux/extlinux --install image/boot/extlinux
cp ../scratch/vmlinuz image/boot/
echo "default DTA" >>image/boot/extlinux/extlinux.conf
echo "prompt 0" >>image/boot/extlinux/extlinux.conf
echo "noescape 1" >>image/boot/extlinux/extlinux.conf
echo "label DTA" >>image/boot/extlinux/extlinux.conf
echo "    kernel /boot/vmlinuz" >>image/boot/extlinux/extlinux.conf
echo "    initrd /boot/core.gz" >>image/boot/extlinux/extlinux.conf
echo "    append loglevel=0 libata.allow_tpm=1 tinycore base norestore noswap superuser" >>image/boot/extlinux/extlinux.conf
## Remaster the initrd 
mkdir core
cd core
zcat ../../scratch/core.gz | sudo cpio -i -H newc -d
cd ..
sudo mkdir -p core/usr/local/sbin/
sudo unsquashfs -f -li -d core ../scratch/hdparm.tcz
sudo cp ${PROGRAM} core/usr/local/sbin/
## now repackage it
cd core
sudo find | sudo cpio -o -H newc | gzip -9 > ../image/boot/core.gz
cd ..
sudo rm -rf core
sudo umount image
sudo losetup -d $LOOPDEV
gzip ${BUILDIMG}
