#!/bin/bash
# Original script created by AgentData
# Modified by Laszlo H.
# 
# mounts the ext2 file systems needed by Pollinux and starts the nfs 
# server. 
#

# test if user has root privileges
if [ $UID != 0 ]; then
	echo you must be root to run this script!
	exit 1
fi

# change if you want to change the mount directory
MOUNT_DIR=${PWD}/mount

mount_nfs ()
{
	# create all folders
	echo creating folder structure...
	mkdir -p ${MOUNT_DIR}/{nandfs,nandfs.user,nandfs.config,nandfs.profile}
	echo done

	# if the file does not exist, create it and format it with ext2
	if [ ! -f nandfs.config ]; then
		echo creating nandfs.config file
		dd if=/dev/zero of=nandfs.config bs=1024 count=5120
		losetup /dev/loop0 nandfs.config
		mkfs -t ext2 /dev/loop0
		losetup -d /dev/loop0
	fi

	if [ ! -f nandfs.profile ]; then
        	echo creating nandfs.profile file
	        dd if=/dev/zero of=nandfs.profile bs=1024 count=5120
        	losetup /dev/loop0 nandfs.profile
	        mkfs -t ext2 /dev/loop0
        	losetup -d /dev/loop0
	fi

	echo mount rootfs...
	mount -o loop -t ext2 nfsroot.ext2 mount/nandfs
	echo done

	echo mount userfs...
	mount -o loop -t ext2 nfsuser.ext2 mount/nandfs.user
	echo done

	echo mount configfs...
	mount -o loop -t ext2 nandfs.config mount/nandfs.config
	echo done

	echo mount profilefs...
	mount -o loop -t ext2 nandfs.profile mount/nandfs.profile
	echo done

	echo add exports...
	cat <<EOT > /etc/exports
${MOUNT_DIR}/nandfs		*(rw,insecure,no_root_squash,no_subtree_check)
${MOUNT_DIR}/nandfs.user		*(rw,insecure,no_root_squash,no_subtree_check)
${MOUNT_DIR}/nandfs.config		*(rw,insecure,no_root_squash,no_subtree_check)
${MOUNT_DIR}/nandfs.profile	*(rw,insecure,no_root_squash,no_subtree_check)
EOT
	echo done
}

start_nfs ()
{
	echo start nfs-kernel-server...
	/etc/init.d/portmap start
	/etc/init.d/nfs-kernel-server start
	echo done
}

stop_nfs ()
{
	echo stopping nfs server
	/etc/init.d/nfs-kernel-server stop
	/etc/init.d/portmap stop
	echo done
}

unmount_nfs () 
{
	echo unmounting all file systems
	umount ${MOUNT_DIR}/nandfs
	umount ${MOUNT_DIR}/nandfs.user
	umount ${MOUNT_DIR}/nandfs.config
	umount ${MOUNT_DIR}/nandfs.profile
	echo done
}

case $1 in
	"start")
		mount_nfs
		start_nfs
		;;
	"stop")
		stop_nfs
		unmount_nfs
		;;
	"mount")
		mount_nfs
		;;
	"unmount")
		unmount_nfs
		;;
	*)
		echo "usage: ${0} start|stop|mount|unmount"
		exit 1
		;;
esac

