#!/bin/sh

ARCH="`uname -m`"
REL="8.2-RELEASE"
ISO="FreeBSD-${REL}-${ARCH}-disc1.iso"
MNT="/mnt"
LABEL="FreeBSD-${REL}-${ARCH}-isboot"
NAME="FreeBSD-${REL}-${ARCH}-isboot-0.2.4.iso"

WORK=/usr/local/isboot/work
TEMP=/usr/local/isboot/temp

mkdir -p $TEMP
mkdir -p $WORK/root/kernel

MD=`mdconfig -a -t vnode -f $ISO`
mount -t cd9660 -o ro /dev/$MD $MNT
mount -t unionfs $WORK $MNT

cp -p /boot/kernel/isboot.ko $MNT/boot/kernel/
cp -p $MNT/boot/loader.conf $MNT/boot/loader.conf.new
echo 'isboot_load="YES"' >> $MNT/boot/loader.conf.new
mv $MNT/boot/loader.conf.new $MNT/boot/loader.conf

rm -rf $TEMP >/dev/null 2>&1; chflags -R noschg $TEMP; rm -rf $TEMP
mkdir -p $TEMP
(cd $TEMP; cat $MNT/$REL/base/base.?? | tar zxf -)
cp -p $TEMP/boot/loader.conf $TEMP/boot/loader.conf.new
echo 'isboot_load="YES"' >> $TEMP/boot/loader.conf.new
mv $TEMP/boot/loader.conf.new $TEMP/boot/loader.conf
rm -rf $MNT/$REL/base/base.??
(cd $TEMP; tar -cf - . | gzip --no-name -9 -c | split -b 1392k - \
    $MNT/$REL/base/base.)

(cd $MNT/$REL/base; sh /usr/src/release/scripts/info.sh base \
    > $MNT/$REL/base/base.inf)

rm -f $MNT/$REL/base/CHECKSUM.MD5 $MNT/$REL/base/CHECKSUM.SHA256
md5 * > $MNT/$REL/base/.CHECKSUM.MD5
sha256 * > $MNT/$REL/base/.CHECKSUM.SHA256
mv $MNT/$REL/base/.CHECKSUM.MD5 $MNT/$REL/base/CHECKSUM.MD5
mv $MNT/$REL/base/.CHECKSUM.SHA256 $MNT/$REL/base/CHECKSUM.SHA256


rm -rf $TEMP >/dev/null 2>&1; chflags -R noschg $TEMP; rm -rf $TEMP
mkdir -p $TEMP
(cd $TEMP; cat $MNT/$REL/kernels/generic.?? | tar zxf -)
cp -p /boot/kernel/isboot.ko $TEMP/GENERIC/
rm -rf $MNT/$REL/kernels/generic.??
(cd $TEMP; tar -cf - . | gzip --no-name -9 -c | split -b 1392k - \
    $MNT/$REL/kernels/generic.)

(cd $MNT/$REL/kernels; sh /usr/src/release/scripts/info.sh generic \
    > $MNT/$REL/kernels/generic.inf)

rm -f $MNT/$REL/kernels/CHECKSUM.MD5 $MNT/$REL/kernels/CHECKSUM.SHA256
md5 * > $MNT/$REL/kernels/.CHECKSUM.MD5
sha256 * > $MNT/$REL/kernels/.CHECKSUM.SHA256
mv $MNT/$REL/kernels/.CHECKSUM.MD5 $MNT/$REL/kernels/CHECKSUM.MD5
mv $MNT/$REL/kernels/.CHECKSUM.SHA256 $MNT/$REL/kernels/CHECKSUM.SHA256

sh /usr/src/release/${ARCH}/mkisoimages.sh -b $LABEL $NAME $MNT

#umount /mnt
#umount /mnt
#mdconfig -d -u $MD

#rm -rf $WORK
#rm -rf $TEMP; chflags -R noschg $TEMP; rm -rf $TEMP

