338b8dc301
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96
125 lines
3.0 KiB
Plaintext
125 lines
3.0 KiB
Plaintext
#!/bin/sh
|
||
|
||
usage() {
|
||
echo "Usage: makebootfloppy [-cd] [-base <directory>] [-preserve] [-image <target>]"
|
||
echo "-cd : Creates a boot floppy capable of booting to a CD."
|
||
echo " If not specified, the boot floppy will only be able to boot"
|
||
echo " systems from hard drives."
|
||
echo "-base : Specifies the base directory of the system you wish to make"
|
||
echo " a boot floppy from. Defaults to /boot"
|
||
echo "-preserve : Leaves a copy of the floppy image in /tmp (only valid when"
|
||
echo " used with the -cd option)."
|
||
echo "-image : writes the floppy image to the specified file - this implies"
|
||
echo " the -cd option."
|
||
exit $1
|
||
}
|
||
|
||
BASE=distro/x86.release.haiku/
|
||
CD=0
|
||
PRESERVE=0
|
||
IMAGE=/dev/disk/floppy/raw
|
||
|
||
while [ "x$1" != "x" ] ; do
|
||
if [ "$1" = "-help" ] || [ "$1" = "--help" ] ; then
|
||
usage 0
|
||
elif [ "$1" = "-cd" ] ; then
|
||
CD=1
|
||
elif [ "$1" = "-preserve" ] ; then
|
||
PRESERVE=1
|
||
elif [ "$1" = "-image" ] ; then
|
||
shift
|
||
IMAGE=$1
|
||
CD=1
|
||
if [ "x$1" = "x" ] ; then
|
||
echo "-image requires an argument."
|
||
usage 1
|
||
fi
|
||
elif [ "$1" = "-base" ] ; then
|
||
shift
|
||
BASE=$1
|
||
if [ "x$1" = "x" ] || [ ! -d $BASE ] ; then
|
||
echo "-base requires a directory argument."
|
||
usage 1
|
||
fi
|
||
else
|
||
echo "Invalid option: $1"
|
||
usage 1
|
||
fi
|
||
shift
|
||
done
|
||
|
||
if [ $CD = 1 ] ; then
|
||
rm -f /tmp/boot.tgz /tmp/boot.img
|
||
|
||
echo "Creating boot image..."
|
||
|
||
mkdir -p /tmp/beos/system
|
||
cp objects/x86.release.haiku/system/kernel_x86 /tmp/beos/system/
|
||
oldCWD=$(pwd)
|
||
|
||
cd /tmp
|
||
tar chf /tmp/boot.tar beos/system/kernel_x86
|
||
rm -r /tmp/beos
|
||
|
||
cd $oldCWD
|
||
cd $BASE
|
||
pwd
|
||
tar rvhf /tmp/boot.tar \
|
||
beos/system/add-ons/kernel/busses/ide \
|
||
beos/system/add-ons/kernel/bus_managers \
|
||
beos/system/add-ons/kernel/file_systems/bfs \
|
||
beos/system/add-ons/kernel/generic \
|
||
beos/system/add-ons/kernel/partitioning_systems \
|
||
beos/system/add-ons/kernel/drivers/bin/scsi* \
|
||
beos/system/add-ons/kernel/file_systems/bfs \
|
||
> /dev/null
|
||
# beos/system/add-ons/kernel/boot \
|
||
gzip -c /tmp/boot.tar > /tmp/boot.tgz
|
||
rm /tmp/boot.tar
|
||
cd $oldCWD
|
||
if [ $? != 0 ] ; then
|
||
echo "Error creating boot floppy"
|
||
exit 1
|
||
fi
|
||
|
||
dd if=/dev/zero of=/tmp/boot.img bs=1k count=1440
|
||
if [ $? != 0 ] ; then
|
||
echo "Error creating temporary boot image"
|
||
exit 1
|
||
fi
|
||
dd if=$BASE/beos/system/zbeos of=/tmp/boot.img conv=notrunc
|
||
dd if=/tmp/boot.tgz of=/tmp/boot.img bs=192k seek=1 conv=notrunc
|
||
|
||
echo "Writing boot image to "$IMAGE
|
||
dd if=/tmp/boot.img of=$IMAGE bs=72k
|
||
_retval=$?
|
||
|
||
if [ $PRESERVE = 0 ] ; then
|
||
rm -f /tmp/boot.tgz /tmp/boot.img
|
||
fi
|
||
|
||
if [ $_retval != 0 ] ; then
|
||
echo "Error creating boot floppy"
|
||
exit 1
|
||
fi
|
||
else
|
||
# non-CD mode (only writes the bare boot loader)
|
||
|
||
echo "Writing boot loader..."
|
||
dd if=$BASE/beos/system/zbeos of=$IMAGE bs=18k
|
||
if [ $? != 0 ] ; then
|
||
echo "Error creating boot floppy"
|
||
exit 1
|
||
fi
|
||
|
||
echo "Erasing old boot drivers from the floppy..."
|
||
dd if=/dev/zero of=$IMAGE bs=512 conv=notrunc seek=384 count=1
|
||
if [ $? != 0 ] ; then
|
||
echo "Error creating boot floppy"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
echo "Done!"
|
||
exit 0
|
||
|