/etc/sdcontrol
#!/bin/sh # # sdcontrol 1.0 Rev.2 2006/03/30 by T.Yokota # ( 1.0 2001/8/8 21:33:19 (Hideki Hayami) ) # # Initialize or shutdown a SD card device # (for pdaXrom 1.1.0 beta1 or older release) # # The first argument should be # 'insert' 'eject' 'compeject' 'change'. # # Command parameter ACTION=$1 # User definition # (Please edit for your environment) MOUNT_POINT=(/mnt/sd /mnt/card) SWAPFILE=/mnt/card/.swap # Constant definition DEVICE_PREFIX=/dev/mmcd STORAGE_STAT_FILE=/proc/usb-storage STORAGE_PID_FILE=/var/run/usbdstorage.pid # mouont / umount case "$ACTION" in 'insert') TARGSTAT=0 for TARGET in ${MOUNT_POINT[*]} do mount | fgrep $TARGET > /dev/null 2>&1 if (( $? != 0 )); then mount $TARGET fi done if [ -r $SWAPFILE ]; then swapon $SWAPFILE fi ;; 'eject'|'compeject') TARGSTAT=1 SWAPSIZE=`free | awk '/Swap/{print $2}'` if [ $SWAPSIZE != "0" ]; then swapoff $SWAPFILE fi for TARGET in ${MOUNT_POINT[*]} do mount | fgrep $TARGET > /dev/null 2>&1 if (( $? == 0 )); then TARGDEV=`grep $TARGET /etc/fstab | awk '{print $1}'` if [ $ACTION = "eject" ]; then fuser -s -m $TARGDEV if (( $? == 0 )); then echo "!!WARNING!! Filesystem $TARGET is in use. Cannot umount." continue fi else fuser -s -k -m $TARGDEV fi umount -l $TARGET fi done ;; 'change') $0 compeject sleep 1 $0 insert ;; *) echo "Usage : $0 ( insert | eject | compeject | change )" exit 1 ;; esac # Check result mount | grep -q $DEVICE_PREFIX if (( $? != $TARGSTAT )); then echo "SD $ACTION failed." exit 1 fi # Reload usb storage module (if executing) grep -q $STORAGE_STAT_FILE $DEVICE_PREFIX 2> /dev/null if (( $? == 0 )); then kill -HUP `cat $STORAGE_PID_FILE` fi # finish exit 0