60 lines
1.1 KiB
Bash
60 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
HUB_ID="5-1"
|
|
DOCK_ID="2"
|
|
|
|
# find all block devices
|
|
DEVICES=`ls -1 /sys/block/ | grep -P 's.+'`
|
|
MOUNTED_PARTITIONS=`mount | awk '{print($1);}'`
|
|
|
|
# Exit if already undocked or in progress
|
|
if [ `cat /sys/devices/platform/dock.$DOCK_ID/docked` == "0" ] \
|
|
|| [ -e /tmp/ultrabase_eject.lock ]
|
|
then
|
|
exit 1
|
|
fi
|
|
|
|
touch /tmp/ultrabase_eject.lock
|
|
|
|
# Syncing disks for safety
|
|
sync
|
|
|
|
for DRIVE in $DEVICES
|
|
do
|
|
if [ $DRIVE != 'sda' ] &&
|
|
([[ `ls -l /sys/block/$DRIVE | grep -P "usb\d/$HUB_ID/"` ]] ||
|
|
[ $DRIVE == 'sr0' ])
|
|
then
|
|
for PARTITION in $MOUNTED_PARTITIONS
|
|
do
|
|
# Check if it's mounted
|
|
if `echo $PARTITION | grep -q $DRIVE`
|
|
then
|
|
umount $PARTITION
|
|
if [ $? != 0 ]
|
|
then
|
|
# Do not undock when umount is failed
|
|
echo 9 > /proc/acpi/ibm/beep
|
|
rm /tmp/ultrabase_eject.lock
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
|
|
# Stop Ethernet connection
|
|
/etc/init.d/net.eth0 stop
|
|
|
|
# Turn off power to the UltraBase
|
|
echo 1 >/sys/devices/platform/dock.$DOCK_ID/undock
|
|
|
|
# Misc launch
|
|
#/etc/init.d/net.wlan0 start
|
|
|
|
# Tell the user we're OK
|
|
echo 6 > /proc/acpi/ibm/beep
|
|
|
|
rm /tmp/ultrabase_eject.lock
|
|
|