Code: Select all
#!/bin/sh
#
# ? Copyright 1996-2010, ZsoltTech.Com
# by Ser Lev Arris <arris@ZsoltTech.Com>
#
# donated for the SamyGo Project
# http://samygo.sourceforge.net/
#
# Version: SamyGO svn $Id$
#
# TODO: more sysv style, more error handling
#
. /dtv/SGO.env
case $1 in
start)
# on C series: can't open '/proc/scsi/scsi': No such file or directory?
# if [ `cat /proc/scsi/scsi | grep -c "Type:"` -lt "1" ] ; then
# create unsusable dummy device
# dd if=/dev/zero of=/dtv/vusb bs=512 count=4
# create usable vfat image
# we don't need to mess around with log and usblog
# also no limits to usb mounts
# we need to find mount point, on most devices it's sda
# but it will differ in some situations
mkfs.vfat -C /dtv/vusb 500
# mkfs.vfat -C /dtv/vusb $(($(df -k /dtv | grep dtv | sed -e 's,^\(.*\) \(.*\) \( .*% /dtv\),\2,') / 3 ))
# TODO: for recording on c series xfs stuff.
# /dev/stl0/21 392.3M 142.9M 249.4M 36% /mtd_rwcommon
# needs to be adapted:
# http://sourceforge.net/apps/phpbb/samygo/viewtopic.php?f=12&p=10567#p10567
#
# dd if=/dev/zero of=/mtd_rwcommon/vusb bs=1M count=16
# /sbin/mkfs.xfs -f -d name=/mtd_rwcommon/vusb
# ln -s /mtd_rwcommon/vusb /dtv/
# OBSOLETE: gone to 80_80_record_to_nwshare.init
# create usable virtual device (don't store data on it what you need tomorrow too!!)
# dd if=/dev/zero of=/dtv/vusb bs=1M count=2
# mkfs.ext3 -q -F -m 0 -b 1024 /dtv/vusb
# insmod $SYSROOT/lib/modules/treasure/dummy_hcd.ko
insmod $MOD_DIR/kernel/drivers/usb/gadget/dummy_hcd.ko || \
insmod $MOD_DIR/kernel/drivers/mstar/usb/gadget/dummy_hcd.ko
sleep 2
# insmod $SYSROOT/lib/modules/treasure/g_file_storage.ko
insmod $MOD_DIR/kernel/drivers/usb/gadget/g_file_storage.ko || \
insmod $MOD_DIR/kernel/drivers/mstar/usb/gadget/g_file_storage.ko
sleep 3
# find vusb in /sys
# and set a variable for mount point
rdev="sdj" # init state
dev="sdj" # set fallback if someting wrong with modules
for i in /sys/block/sd?/device/model ; do
if [ `cat $i | grep -c "SamyGO Virt"` -gt "0" ] ; then
echo "found gadget at: $i"
dev=`echo $i | sed 's/^\/.*\(sd.\)\/.*/\1/g'`
echo "scsidev: $dev"
else
# catch last one. hm, really required?
rdev=`echo $i | sed 's/^\/.*\(sd.\)\/.*/\1/g'`
echo "real storage device at: $i ($rdev)"
fi
done
# else
# echo "Storage Device is present"
# fi
# if rdev == dev -> no vusb and no real usb
# if rdev != dev -> vusb or real usb or both
# if rdev != dev + check where "sdj" -> vusb or real and "sdj" tels what's not present
# how to detect that we need to write to log or usblog?
if [ "$dev" == "sdj" ] ; then
# make [usb]log
$(echo -e "[${dev}]\nVendor : SamyGO Virt.\nProduct : SamyGO Virt.\n\
Serial : Q80VQLFK\nDevpath : 11\nLun : 0\nScsiDevicePath : /dev/${dev}\nMountDir : /dtv/usb/${dev}\nFileSystem : vfat\n" >> /dtv/usb/usblog)
mkdir -p /dtv/usb/${dev}
fi
sed -i -e "s,MountPlaceholder,/dtv/usb/$dev," /dtv/SGO.env
;;
stop)
# what's about umount?
rmmod g_file_storage
# some troubles if we mess around with dummy_hcd, so not remove on stop
# rmmod dummy_hcd
;;
status)
cat /sys/block/sd?/device/model
;;
*)
echo "Usage: $0 {start|stop|status}" 1>&2
exit 0
;;
esac
Code: Select all
#!/bin/sh
. /dtv/SGO.env
case $1 in
start)
[ -e $SYSROOT/etc/init.d/02_04_vusb.init ] && exit 1
[ ! -e $SYSROOT/etc/init.d/03_03_nfsmount.init ] && exit 1
[ ! -e $SYSROOT/etc/init.d/80_80_record_to_nwshare.init ] && exit 1
mkfs.vfat -C /dtv/vusb 500
insmod $MOD_DIR/kernel/drivers/usb/gadget/dummy_hcd.ko || \
insmod $MOD_DIR/kernel/drivers/mstar/usb/gadget/dummy_hcd.ko
XFSIMAGE=""$SYSROOT"/xfsimage"
XFSMOUNT="/dtv/xfsmount"
PVRIMAGE=""$XFSMOUNT"/pvrimage"
PVRMOUNT=""$XFSMOUNT"/pvrmount"
GFILESTORAGE="/dtv/vusb"
[ ! -d $XFSMOUNT ] && mkdir $XFSMOUNT
[ ! -f $XFSIMAGE ] && dd if=/dev/zero of=$XFSIMAGE bs=1M count=17 status=noxfer 2>/dev/null
mkfs.xfs -qf $XFSIMAGE
cat /proc/mounts | grep -q "$XFSMOUNT" || /bin/busybox mount -o loop $XFSIMAGE $XFSMOUNT
if [ ! -f $PVRIMAGE ]; then
dd if=/dev/zero of="$PVRIMAGE" bs=1M count=1 seek=1536 status=noxfer 2>/dev/null
mkfs.xfs "$PVRIMAGE"
mkdir -p "$PVRMOUNT"
/bin/busybox mount -o loop "$PVRIMAGE" "$PVRMOUNT"
touch ""$PVRMOUNT"/.PlaceHolderDO-NOT-REMOVE"
/bin/busybox umount "$PVRMOUNT"
fi
[ -e $PVRIMAGE ] && GFILESTORAGE="$GFILESTORAGE,$PVRIMAGE"
insmod $MOD_DIR/kernel/drivers/usb/gadget/g_file_storage.ko file="$GFILESTORAGE" || \
insmod $MOD_DIR/kernel/drivers/mstar/usb/gadget/g_file_storage.ko file="$GFILESTORAGE"
sleep 3
FOUND=false
SAMYGODEVS=''
for i in /sys/block/sd?/device/model ; do
if [ `cat $i | grep -c "SamyGO Virt"` -gt "0" ]; then
CURDEV="`echo $i | sed 's/^\/.*\(sd.\)\/.*/\1/g'`"
SAMYGODEVS="$SAMYGODEVS /dev/$CURDEV"
if [ $FOUND = false ]; then
echo "found gadget at: $i"
dev=$CURDEV
echo "scsidev: $dev"
FOUND=true
fi
else
echo "real storage device at: $i"
fi
done
SAMYGODEVS=`echo $SAMYGODEVS|sed 's/^[[:space:]]//'`
sed -i -e "s,MountPlaceholder,/dtv/usb/$dev," /dtv/SGO.env
echo "SAMYGODEVS=\"$SAMYGODEVS\"" >> /dtv/SGO.env
;;
stop)
rmmod g_file_storage
# some troubles if we mess around with dummy_hcd, so not remove on stop
# rmmod dummy_hcd
;;
status)
cat /sys/block/sd?/device/model
;;
*)
echo "Usage: $0 {start|stop|status}" 1>&2
exit 0
;;
esac