#!/bin/bash
#
# run this script to create a LiveCD in /tmp/live_data_1234
#
# Author: Tomas M. <http://www.linux-live.org>

export PATH=.:./tools:../tools:/usr/sbin:/usr/bin:/sbin:/bin:/

CHANGEDIR=$(dirname $(readlink -f $0))
echo "Changing current directory to $CHANGEDIR"
cd $CHANGEDIR

. /usr/lib/liblinuxlive || exit 1
. /etc/linux-live/config || exit 1

# You may override some variables by your own config
[ -f $HOME/.linux-live/config  ] && . $HOME/.linux-live/config

# only root can continue, because only root can read all files from your system
allow_only_root

# live CD name
echo -ne "Name of your live distro [hit enter for $LIVECDNAME]: "
read NEWLIVECDNAME
if [ "$NEWLIVECDNAME" != "" ]; then LIVECDNAME=$NEWLIVECDNAME; fi
LIVECDNAME=$(echo $LIVECDNAME | tr -d ' ')

. ./install
if [ "$ROOT" -a "$ROOT" != "/" ]; then 
   . ./install $ROOT
fi

# search for kernel
VMLINUZ=$ROOT/boot/vmlinuz
if [ -L "$VMLINUZ" ]; then VMLINUZ=$(readlink -f $VMLINUZ); fi
#echo -ne "Enter path for the kernel you'd like to use [hit enter for $VMLINUZ]: "
#read NEWKERNEL
#if [ "$NEWKERNEL" != "" ]; then VMLINUZ="$NEWKERNEL"; fi
if [ "$(ls $VMLINUZ 2>>$DEBUG)" = "" ]; then echo "cannot find $VMLINUZ"; exit 1; fi

header "Creating LiveCD from your Linux"
echo "some debug information can be found in $DEBUG"

mkdir -p $CDDATA/$LIVECDNAME/{base,modules,optional,rootcopy,tools}

echo "copying cd-root to $CDDATA, using kernel from $VMLINUZ"
cp -R cd-root/boot $CDDATA
if [ -n "$CUSTOM_CD_ROOT" ]; then
   echo "copying custom cd-root files from $CUSTOM_CD_ROOT to $CDDATA"
   cp -R $CUSTOM_CD_ROOT/* $CDDATA
fi
for i in isolinux syslinux; do
   cat cd-root/boot/$i/$i.cfg | \
   sed -i -r "s/LABEL linux/LABEL $LIVECDNAME/" $CDDATA/boot/$i/$i.cfg
   sed -i -r "s/Run linux/Run $LIVECDNAME/" $CDDATA/boot/$i/$i.cfg
   sed -i -r "s/ramdisk_size=RAM0SIZE/ramdisk_size=$RAM0SIZE/" $CDDATA/boot/$i/$i.cfg
done
sed -i -r "s/RAM0SIZE/$RAM0SIZE/g" $CDDATA/boot/dos/config
mv $CDDATA/boot/dos/linux.bat $CDDATA/boot/dos/${LIVECDNAME:0:8}.bat
sed -i -r "s/LINUX.BAT/"${LIVECDNAME:0:8}.bat"/" $CDDATA/boot/dos/readme.txt

mkdir -p $CDDATA/$LIVECDNAME
cp -R cd-root/linux/* $CDDATA/$LIVECDNAME
cp /usr/bin/{deb2lzm,dir2lzm,lzm2dir,tgz2lzm} $CDDATA/$LIVECDNAME/tools
cp /usr/lib/liblinuxlive $CDDATA/$LIVECDNAME/tools
cp /sbin/mksquashfs $CDDATA/$LIVECDNAME/tools
cp /sbin/unsquashfs $CDDATA/$LIVECDNAME/tools
cp -R DOC/LICENSE $CDDATA/$LIVECDNAME
cp $VMLINUZ $CDDATA/boot/vmlinuz

echo "creating initrd image..."
echo "Using kernel modules from $ROOT/$LMK"
cd initrd
./initrd_create $LIVECDNAME
if [ "$?" -ne 0 ]; then exit; fi
cd ..

cp initrd/initrd.gz $CDDATA/boot/initrd.gz
rm initrd/initrd.gz

echo "creating compressed images..."

for dir in $MKMOD; do
    if [ -d $ROOT/$dir ]; then
      echo "base/$dir.lzm ..."
      echo -ne > exclude.txt
      for i in $EXCLUDE; do
         part=$(echo "x/$i" | tr -s / | sed -r "s:x/[^/]+/::")
         if [ -e "$ROOT/$dir/$part" ]; then echo "$ROOT/$dir/$part" >> exclude.txt; fi
      done
      cat exclude.txt
      create_module $ROOT/$dir $CDDATA/$LIVECDNAME/base/$dir.lzm -keep-as-directory -ef exclude.txt
      if [ $? -ne 0 ]; then exit; fi
      rm exclude.txt
      echo
    fi
done

echo "--------done----------"

if [ "$ISO_IMAGE" ]; then
    cd $CDDATA/$LIVECDNAME
    sh make_iso.sh "$ISO_IMAGE"
else
    echo
    echo "* run $CDDATA/$LIVECDNAME/make_iso.sh to create ISO image"
    echo "* or copy content of $CDDATA to your USB device"
    echo "and run ./boot/bootinst.sh (from the device!) to setup boot sector"
    echo
    echo "Now press Enter..."
    read junk
fi
