#!/bin/bash

# you need to have directory structure that you'll
# want on data partition of your CD, kernels,
# and possibly arcboot.

#image file name
IMAGE=./O2.iso
#files to put in data partition
DATA=./o2-real
#iso image size, in MB
IMAGE_SIZE=650
#volume header size (in MB)
VOLHDR_SIZE=100

LOOPDEV=/dev/loop0
MNTDIR=./iso-mnt
##########END SETTINGS

#create empty image
dd if=/dev/zero of=$IMAGE bs=1M count=$IMAGE_SIZE

#create SGI disklabel
parted -s $IMAGE mklabel dvh
# create empty partitions - we need volhdr to be partition 9
# and data partition 8, but parted -s doesn't allow to specify
# partition number
echo Creating empty partitions
parted -s $IMAGE mkpart primary 10 10
parted -s $IMAGE mkpart primary 10 10
parted -s $IMAGE mkpart primary 10 10
parted -s $IMAGE mkpart primary 10 10
parted -s $IMAGE mkpart primary 10 10
parted -s $IMAGE mkpart primary 10 10
echo Data partition
parted -s $IMAGE mkpartfs primary linux-swap $VOLHDR_SIZE $IMAGE_SIZE
echo Removing original volume header
parted -s $IMAGE rm 1
echo "Removed"
echo making dummy partition in its place
parted $IMAGE mkpart ignore primary linux-swap 10 10
echo created dummy partitiona
echo Volume header
parted $IMAGE mkpart ignore extended 0 10
echo created extended

echo Removing unneeded partitions
parted -s $IMAGE rm 1
parted -s $IMAGE rm 2
parted -s $IMAGE rm 3
parted -s $IMAGE rm 4
parted -s $IMAGE rm 5
parted -s $IMAGE rm 6
parted -s $IMAGE rm 7

parted -s $IMAGE resize 9 0 $VOLHDR_SIZE
parted -s $IMAGE resize 8 $VOLHDR_SIZE $IMAGE_SIZE
parted $IMAGE print

dvhtool -d $IMAGE --unix-to-vh arc32 sashARCS
dvhtool -d $IMAGE --unix-to-vh ext2load arcboot
dvhtool -d $IMAGE --unix-to-vh ip32r5k ip32r5k
dvhtool -d $IMAGE --unix-to-vh ip32r10k ip32r10k
dvhtool -d $IMAGE --unix-to-vh sgialabel sgialabel

losetup -d $LOOPDEV
losetup -o $(($VOLHDR_SIZE*1024*1024)) $LOOPDEV $IMAGE

#mkisofs -RlL -o $LOOPDEV $DATA
mke2fs -b 4096 -i 4096 -L SGILinux -vm0 $LOOPDEV
mount $LOOPDEV $MNTDIR
cp -R $DATA/* $MNTDIR
umount $MNTDIR
losetup -d $LOOPDEV

