Вы находитесь на странице: 1из 14

#!

/system/bin/sh
# 2010-07-13 Firerat - symlink apps from /data/app/ to sd-ext/app/
# optionally leave apps on /data/app/
# optionally move froyo fat apps to sd-ext
# 2010-08-06 ==> 2010-08-12 , disbaled lots, and added better Apps2sdext + ApkMa
nager.sh script
# 2010-08-17 Firerat, Mister Opinion's fix
# 2010-08-17 Firerat, switched from symlink to bind mount
# 2010-09-02 Firerat, added a system free check + option to move rom manager if
full
# start FroYo apps2sdext Functions
recoverycheck ()
{
#if [ "`ls /sbin|grep -q recovery;echo $?`" = "0" ];
if [ -e "/sbin/recovery" ];
then
mount -a > /dev/null
recoverymode=y
else
recoverymode=n
fi
return
}
fsdextmnt ()
{
# don't clobber 05mountsd if it alread exists, and is 'complete'
if [ `grep -q "Unable to repair filesystem" /system/etc/init.d/05mountsd;echo $?
` = "0" ];
then
printmsg "/system/etc/init.d/05mountsd alreadys exists"
return
fi
# install sd-ext mount script ( frm cm5 )
cat > /dev/05mountsd << "EOF"
#!/system/bin/sh
#
# mount ext[234] partition from sd card
BB="logwrapper busybox";
# Firerat - make mount point
if [ ! -d /sd-ext ];
then
$BB mount -o rw,remount /
install -m 774 -o 1000 -g 1000 -d /sd-ext
$BB mount -o ro,remount /
fi
if [ "$SD_EXT_DIRECTORY" = "" ];
then
SD_EXT_DIRECTORY=/sd-ext;
fi;
# IConrad01's fix for CM6
# http://forum.cyanogenmod.com/topic/2636-froyo-a2sdext/page__view__findpost__p_
_26124
#
MMC=/dev/block/mmcblk0
if [ ! -b "$MMC" ];
then
mknod ${MMC} b 179 0
chmod 600 ${MMC}
for i in 1 2 3;do
mknod ${MMC}p${i} b 179 $i
chmod 600 ${MMC}p${i}
done
fi
# find first linux partition on SD card
# wait for the device to settle
COUNT=6;
until [ -b "$MMC" ] || [ $COUNT -lt 1 ];
do
sleep 1;
COUNT=$((COUNT-1));
done;
if [ -b "$MMC" ];
then
FDISK="busybox fdisk"
PARTITION=`$FDISK -l $MMC | awk '/^\// && $5 == 83 {print $1;exit;}'`
if [ -b "$PARTITION" ];
then
log -p i -t mountsd "Checking filesystems..";
# fsck the sdcard filesystem first
if [ `which e2fsck` ];
then
e2fsck -pv $PARTITION;
e2fsckExitCode=$?
else
echo "e2fsck not found, assuming fs ok.."
e2fsckExitCode=0
fi
# set property with exit code in case an error occurs
setprop cm.e2fsck.errors $e2fsckExitCode;
if [ "$e2fsckExitCode" = 0 ];
then
# mount and set perms
$BB mount -o noatime,nodiratime -t auto $PARTITION $SD_EXT_DIRECTORY
;
if [ "$?" = 0 ];
then
$BB chown 1000:1000 $SD_EXT_DIRECTORY;
$BB chmod 771 $SD_EXT_DIRECTORY;
log -p i -t mountsd "$SD_EXT_DIRECTORY successfully mounted";
else
log -p e -t mountsd "Unable to mount filesystem for $SD_EXT_DIRE
CTORY!";
fi
else
log -p e -t mountsd "Unable to repair filesystem, disabling apps2sd"
;
fi
fi
fi
EOF
if [ "`grep -q sd-ext /proc/mounts;echo $?`" != "0" ];
then
sh /dev/05mountsd
if [ "`grep -q sd-ext /proc/mounts;echo $?`" != "0" ];
then
printmsg "/sd-ext mount failed, exiting"
exit
fi
fi
mount -o rw,remount /system
install -m 700 -D /dev/05mountsd /system/etc/init.d/05mountsd
if [ "$?" = "0" ];
then
printmsg "mount sd-ext installed"
else
printmsg "mount sd-ext script failed to install\nProbably ran out of spa
ce\nchecking..."
systemfree
fi
mount -o ro,remount /system
return
}
systemfree ()
{
# check free space on system
df |grep -E "system$|^Filesystem"
ls -l /dev/05mountsd
sysfree=`df |awk '/system$/ {print $4}'`
scriptsize=`ls -l /dev/05mountsd|awk ' { print $5 }'`
# going to need at least 7k for ApkManager
scriptsize=`expr $scriptsize + 8000`
if [ "$sysfree" -lt "$scriptsize" ];
then
printmsg "looks like you have no room on system"
if [ -e /system/app/RomManager.apk ];
then
echo "would you like me to move RomManager.apk to data (y/n)?"
mvromman
else
printmsg "can't see an easy target, please make space\non system
and run again"
exit
fi
fi
return
}
mvromman ()
{
if [ "$recoverymode" = "n" ];
then
read a
else
a=y
fi
if [ "$a" = "y" ];
then
if [ "$recoverymode" = "y" ];
then
mv /system/app/RomManager.apk /data/app/
else
pm install -rf /system/app/RomManager.apk
# pm always gives 0 exit
rm /system/app/RomManager.apk
printmsg "RomManager.apk moved"
fsdextmnt
return
fi
elif [ "$a" = "n" ];
then
printmsg "ok, can't do anything yet\nmanually make space and run again"
exit
else
echo "please enter y or n"
mvromman
fi
return
}
checkcfg ()
{
# oops, ended putting a 1 to be the default ignore in v0.6
if [ -e $internallist ];
then
sed s/^1/qwertpoiu/ -i $internallist
fi
return
}
movefroyocfg ()
{
if [ "`mount|grep -c \"/mnt/asec/\"`" != "0" ];
then
printmsg "move FroYo FAT installed apps to /sd-ext? (y/n)\nit can be a l
ittle slow, so if your in a rush\nthen answer n, you can always run the script a
gain later"
read a
if [ "$a" = "n" ];
then
printmsg "FroYo FAT 2 sd-ext will be skipped"
froyo2sdext=n
elif [ "$a" = "y" ];
then
printmsg "FroYo fat apps will be moved to sd-ext"
froyo2sdext=y
else
printmsg "please enter y or n"
movefroyocfg
fi
fi
return
}
dupecleaner ()
{
for i in `find /sd-ext/app/ /sd-ext/app-private /data/app-private /data/app -nam
e "*apk" -type f`;do
apk=`basename $i`
echo "checking ${i}..."
if [ "`grep -q $apk /data/system/packages.xml;echo $?`" = "1" ];
then
echo -e "$apk is not listed in packages.xml\nremoving .."
rm $i
else
echo "OK.."
fi
done
return
}
a2sdbind ()
{
initd=/sd-ext/userinit.d
# well, I normally test if sd-ext is mounted, but seeing as the whole Idea of th
is is to use sd-ext its safe to assume that it exists
cat > /dev/10data2sdext-binds << "EOF"
#!/system/bin/sh
# a2sd bind mounts
# remove FroYo a2sdext hack if official a2sd is live [ Firerat ]
if [ -e "/sd-ext/userinit.d/10data2sdext-binds" -a -e "/system/etc/init.d/10apps
2sd" ];
then
# delete the script which sets up bind mounts + script that re-creates /
system/bin/ApkManager.sh ( this will make strange symlinks links )
#TODO preserve data/data bind? causes problems if /data/system/packages.
xml got wiped... so for now no
rm /sd-ext/userinit.d/10data2sdext-binds /sd-ext/userinit.d/55ApkManager
2> /dev/null
# move the 'keep on internal' apps to their proper place
for apkdir in app app-private;do
mv /data/${apkdir}_i/* /data/${apkdir}/ 2> /dev/null
done
# remove the symlinks it the 'keep on internal' apps
find /sd-ext/app /sd-ext/app-private -type l -exec rm {} \;
if [ -e "/data/system/packages.xml" ];
then
for apk in `ls /sd-ext/app/*apk /sd-ext/app-private/*apk`;do
# update packages.xml with apk's location
sed s~/data/`basename $apk`~/sd-ext/`basename $apk`~ -i
/data/system/packages.xml
# clear dalvik-cache ( will probably get generated on /s
d-ext )
rm /data/dalvik-cache/*`basename $apk`*.dex 2> /dev/null
done
fi
exit
fi
# end of AutoSelfDestruct
EOF
if [ -e ${initd}/10data2sdext-binds ];
then
#preserve old 'config'
grep "binddata=" ${initd}/10data2sdext-binds >> /dev/10data2sdext-binds
else
echo "binddata=n" >> /dev/10data2sdext-binds
fi
cat >> /dev/10data2sdext-binds << "EOF"
if [ "$binddata" = "n" ];
then
databind=""
elif [ "$binddata" = "y" ];
then
databind=data # bind /sd-ext/data with /data/data
else
echo "unknown data bind option,turning off"
databind=""
fi
SD_EXT_DIRECTORY=`egrep "/sd-ext|/system/sd" /proc/mounts|awk '{ print $2 }'`
if [ "$SD_EXT_DIRECTORY" = "" ];
then
SD_EXT_DIRECTORY=/sd-ext
fi
if [ "`egrep -q $SD_EXT_DIRECTORY /proc/mounts;echo $?`" != "0" ];
then
echo "$SD_EXT_DIRECTORY not mounted.. skipping a2sd"
exit
fi
for dir in app app-private;do
if [ "`egrep -q \"/data/${dir}\" /proc/mounts;echo $?`" != "0" ];
then
if [ ! -e "${SD_EXT_DIRECTORY}/${dir}" ];
then
install -m 771 -o 1000 -g 1000 -d ${SD_EXT_DIRECTORY}/${
dir}
fi
if [ -L "/data/${dir}" ];
then
rm /data/${dir}
install -m 771 -o 1000 -g 1000 -d /data/${dir}
fi
if [ "${dir}" = "app" -o "${dir}" = "app-private" ];
then
for app in `find /data/${dir} -type f -iname "*.apk" -o
-iname "*.zip"`;do
mv ${app} ${SD_EXT_DIRECTORY}/${dir}/
done
fi
mount -o bind ${SD_EXT_DIRECTORY}/${dir}/ /data/${dir}
fi
done
for dir in $databind;do
if [ "`egrep -q \"/data/${dir}\" /proc/mounts;echo $?`" != "0" ];
then
if [ ! -e /data/${dir} ];
then
install -m 771 -o 1000 -g 1000 -d /data/${dir}
fi
du_datadata=`du /data/${dir}|awk '/\/data\/\'${dir}'$/ {print $1
}'`
du_sdextdata=`du ${SD_EXT_DIRECTORY}/${dir}|awk '/\'${SD_EXT_DIR
ECTORY}'\/'${dir}'$/ {print $1}'`
if [ "$du_datadata" -gt "5" -a "$du_sdextdata" -lt "5" ];
then
cp -a /data/${dir}/* ${SD_EXT_DIRECTORY}/${dir}/
rm /data/${dir}/*
fi
if [ ! -e ${SD_EXT_DIRECTORY}/${dir} ];
then
install -m 771 -o 1000 -g 1000 -d ${SD_EXT_DIRECTORY}/${dir}
fi
mount -o bind ${SD_EXT_DIRECTORY}/${dir}/ /data/${dir}
fi
done
EOF
install -m 700 -o 0 -g 0 -D /dev/10data2sdext-binds ${initd}/10data2sdext-binds
rm /dev/10data2sdext-binds
sh ${initd}/10data2sdext-binds
if [ "`grep -q \"/data/data\" /proc/mounts;echo $?`" != "0" ];
then
if [ ! -e /sd-ext/data ];
then
install -m 771 -o 1000 -g 1000 -d /sd-ext/data
fi
sdextdatasize=`du -cs /sd-ext/data|awk '/total/ {print $1}'`
sdextdatasize4human=`echo $sdextdatasize|awk '{printf "%.1f" "%c",$1/102
4,"M"}'`
datadatasize=`du -cs /data/data|awk '/total/ {print $1}'`
dataAvailable=`df |awk '/\ \/data$/ {print $4}'`
datadata4human=`echo $datadatasize|awk '{printf "%.1f" "%c",$1/1024,"M"}'`
dataAvailable4human=`echo $dataAvailable|awk '{printf "%.1f" "%c",$1/1024,"M
"}'`
postdatabindfree=`echo $datadatasize $dataAvailable|awk '{printf "%.1f" "%c"
,($1+$2)/1024,"M"}'`
if [ "$sdextdatasize" -gt "$datadatasize" -a "$recoverymode" != "y" ];
then
newestdir="`ls /sd-ext/data/ -lt|head -n 1|awk '{print $6" "$7"
"$8" "$9" "$10}'`"
oldestdir="`ls /sd-ext/data/ -lt|tail -n 1|awk '{print $6" "$7"
"$8" "$9" "$10}'`"
printmsg "You currently have $sdextdatasize4human in /sd-ext/dat
a\nThe newest dir is $newestdir\nThe oldest dir is $oldestdir\ndo you want to us
e this?(y/n)"
datadatabindcfg
if [ "$datadatabind" = "y" ];
then
cat > /data/firstboot.sh << "EOF"
rm -r /data/data/*
EOF
fi
else
printmsg "do you want to put /data/data on /sd-ext(y/n)?\nIt will free u
p $datadata4human from data\n/data currently has $dataAvailable4human free\nthis
option would give you approx $postdatabindfree free\n( /data/data can grow to 3
0M or more )"
datadatabindcfg
fi
fi
if [ "$recoverymode" = "y" -a "`du -cs /data/data|awk '/total/ {print $1}'`" -lt
"3000" ];
then
sed s/binddata=n/binddata=y/ ${initd}/10data2sdext-binds -i
fi
return
}
datadatabindcfg ()
{
read a
if [ "$a" = "y" ];
then
sed s/binddata=n/binddata=y/ ${initd}/10data2sdext-binds -i
datadatabind=y
elif [ "$a" = "n" ];
then
datadatabind=n
else
printmsg "Please answer y or n"
datadatabindcfg
fi
return
}
ApkManager ()
{
cat > /dev/ApkManager.sh << "EOAPKMANAGER"
#!/system/bin/sh
if [ ! -e /system/bin/ApkManager.sh -o "$1" = "force" ];
then
busybox mount -o rw,remount /system
cat > /dev/ApkManager.sh << "EOF"
#!/system/bin/sh
# ApkManager.sh v0.5
me=$0
applist=/dev/appslist.txt
printmsg ()
{
ml=`echo -e $1|wc -L`
hf=""
for i in `seq $ml`;do
hf="${hf}="
done
echo -e $1|busybox awk -v hf=$hf 'BEGIN{print hf};END{print hf};{print $0};'
###########^^^^^^^ keep that, makes testing on pc easy
return
}
recoverycheck ()
{
if [ "`ls /sbin|grep -q recovery;echo $?`" = "0" ];
then
mount -a > /dev/null
recoverymode=y
else
recoverymode=n
rootcheck
fi
return
}
rootcheck ()
{
if [ "`busybox id -u`" != "0" ];
then
echo -e "root is required to run this script\ntype\nsu\nand then run again"
exit 1
fi
return
}
internallinks ()
{
# make sure we have dir and links for internel apps
for dir in app_i app-private_i;do
if [ ! -e /data/${dir} ];
then
install -m 771 -o 1000 -g 1000 -d /data/${dir}
fi
for apk in `find /data/${dir} -type f`;do
ln -sf $apk `dirname $apk|sed -e s/data/sd-ext/ -e s/_i//`/`base
name $apk`
done
done
return
}
movefroyocfg ()
{
if [ "`mount|grep -c \"/mnt/asec/\"`" != "0" ];
then
printmsg "move FroYo FAT installed apps to /sd-ext? (y/n)\nit can be a l
ittle slow, so if your in a rush\nthen answer n, you can always run the script a
gain later"
read a
if [ "$a" = "n" ];
then
printmsg "FroYo FAT 2 sd-ext will be skipped"
froyo2sdext=n
elif [ "$a" = "y" ];
then
printmsg "FroYo fat apps will be moved to sd-ext"
froyo2sdext=y
else
printmsg "please enter y or n"
movefroyocfg
fi
fi
return
}
fat2ext ()
{
for apk in `find /mnt/asec/ -type d|grep -v asec/\$`;do
echo "moving `basename ${apk}.apk`"
if [ -e /mnt/secure/asec/smdl2tmp1.asec ];
then
rm /mnt/secure/asec/smdl2tmp1.asec
fi
time pm install -f -r ${apk}/pkg.apk
done
return
}
menu ()
{
if [ "$recoverymode" = "y" ];
then
return
fi
find /data/app_i /data/app-private_i /sd-ext/app /sd-ext/app-private -type f -na
me "*apk" -exec ls -lh {} \; \
|awk 'sub(/\/sd-ext/,"sdext /sd-ext") sub(/\/data/,"Data /data") ( ++c ) {print
"["c"] \t"$9"\t"$5"\t"$10};' > $applist
apkcount=`sed -n '$=' $applist`
if [ "$apkcount" = "" ];
then
printmsg "no apps to manage yet"
return
fi
#awk 'sub(/\/.+ap.+\//,"") sub(/-.\.apk/,"")' $applist
#show the silly froyo number thing
#awk 'sub(/\/.+ap.+\//,"") sub(/\.apk/,"")' $applist
# better formating
awk '{sub(/\/.+ap.+\//,"") sub(/\.apk/,"")};{printf "%5s %-5s %8s %s",$1,$2,$3,$
4"\n"}' $applist
dataAvailable=`df |awk '/\ \/data$/ {print $4}'`
sdextAvailable=`df |awk '/\/sd-ext$/ {print $4}'`
dataAvailable4human=`echo $dataAvailable|awk '{printf "%7.1f" "%c",$1/1024,"M"}'
`
sdextAvailable4human=`echo $sdextAvailable|awk '{printf "%7.1f" "%c",$1/1024,"M"
}'`
printmsg "Available space on\n/data = $dataAvailable4human\t/sd-ext = $sdextAvai
lable4human"
printmsg "List the app numbers you wish to move\neg:10 12 45\nor use 'keyword'\n
e.g. swype twit\n0 to exit"
#Toggle
BetterToggle
return
}
BetterToggle ()
{
#START BetterToggle functions
BToggle ()
{
# for app in $toggle;do
for app in $@;do
test=`echo $app|awk '{if ( int($1) == 0 )
( $1 = $1 )
else
( $1 = "\\\["$1"\\\]")}
{print}'`
apps2move=$(awk '/'$test'/ {print $4 };' $applist)
if [ "`echo $apps2move |wc -w`" -gt "1" ];
then
# awk '/'$test'/ {print $0 };' $applist
awk '{sub(/\/.+ap.+\//,"") sub(/\.apk/,"")};/'$test'/ {printf "%5s %-5s %8s %s",
$1,$2,$3,$4"\n"}' $applist
echo "More than one app in \"$app\" filter"
echo "do you want to toggle all of them (y/n)"
ConfirmFilter
elif [ "`echo $apps2move |wc -w`" = "0" ];
then
echo "no apps found in \"$app\" filter"
fi
move="$(echo $move `awk '/'$test'/ {print $4 };' $applist`)"
done
return
}
ConfirmFilter ()
{
read a
if [ "$a" = "y" ]
then
echo "ok, will toggle them all"
return
elif [ "$a" = "n" ]
then
RedefineFilter
else
echo "please Answer y or n"
ConfirmFilter
fi
return
}
RedefineFilter ()
{
toggle=`echo toggle|sed s/$app//`
echo "please enter numbers or new filter"
read minitoggle
toggle=`echo $toggle $minitoggle`
BToggle `echo $minitoggle`
return
}
# END BetterToggle functions
move=""
if [ "$#" = "0" ];
then
read toggle
if [ "$toggle" = "0" ];
then
return
fi
BToggle `echo $toggle`
else
BToggle `echo $toggle`
fi
toData=""
toSdext=""
for app in $toggle;do
test=`echo $app|awk '{if ( int($1) == 0 )
( $1 = $1 )
else
( $1 = "\\\["$1"\\\]")}
{print}'`
toSdext="${toSdext} `awk '/'$test'/ {print $4}' $applist|grep -v \/data\/`"
toData="${toData} `awk '/'$test'/ {print $4}' $applist|grep -v \/sd-ext\/`"
intcount=`echo $toData|sed s/\ /"\n"/g|grep sd-ext|sed -n '$='`
done
moveapps
menu
return
}
moveapps ()
{
for i in toSdext toData;do
eval files=\$${i}
if [ "`echo $files|grep -q apk;echo $?`" != "0" ];
then
eval ${i}Size=0
else
eval ${i}Size=`du -c $files|awk '/total/ {print $1}'`
fi
done
# thanks to Mister Opinion
# http://forum.cyanogenmod.com/user/34339-mister-opinion/
# for point bug out http://forum.cyanogenmod.com/topic/2636-froyo-apps2sdext-201
0-08-12-new-v12-include-apkmanager/page__view__findpost__p__40320
dataAvailable=`df |awk '/\ \/data$/ {print $4}'`
sdextAvailable=`df |awk '/\/sd-ext$/ {print $4}'`
datapostmove=`expr $dataAvailable - \( $toDataSize - $toSdextSize \)`
sdextpostmove=`expr $sdextAvailable - \( $toSdextSize - $toDataSize \)`
if [ "$datapostmove" -lt "10240" ];
then
printmsg "It looks like free space on data is going to fall below 10mb\n
are you sure you want to continue? (y/n)"
read a
if [ "$a" = "y" ];
then
printmsg "OK, continuing"
else
printmsg "will skip moving apps to internal"
movetointernal=n
fi
fi
if [ "$sdextpostmove" -lt "0" ];
then
printmsg "not going to have enough space on sd-ext\nskipping"
movetosdext=n
fi
#make sure we don't have duplicates
for app in $move;do
move="$app `echo $move|sed s~$app~~g`"
done
for app in $move;do
app=`basename $app`
location=`awk '/'$app'/ {print $2}' $applist`
apk=`awk '/'$app'/ {print $4}' $applist`
if [ "$location" = "Data" ];
then
if [ "$movetosdext" != "n" ];
then
echo "moving ${apk}..."
find `dirname $apk|sed -e s/data/sd-ext/ -e s/_i//` -typ
e l -name "`basename $apk`" -exec rm {} \;
mv $apk `dirname $apk|sed -e s/data/sd-ext/ -e s/_i//`/
if [ "$?" != "0" ];
then
echo "moving $apk failed.. relinking."
ln -s $apk `dirname $apk|sed -e s/data/sd-ext/ -
e s/_i//`/`basename $apk`
fi
fi
elif [ "$location" = "sdext" ];
then
if [ "$movetointernal" != "n" ];
then
echo "moving ${apk}..."
mv $apk `dirname $apk|sed s/sd-ext/data/`_i/
if [ "$?" != "0" ];
then
echo "moving $apk failed... not preformining lin
k"
else
ln -sf `echo $apk|sed -e 's/sd-ext/data/' -e 's~
/~_i/~3'` `dirname $apk`/
fi
fi
else
return
fi
done
return
}
recoverycheck
if [ "$recoverymode" = "n" ];
then
movefroyocfg
if [ "$froyo2sdext" = "y" ];
then
fat2ext
fi
else
printmsg "FroYoFat2sdext is not available in recovery"
fi
internallinks
menu
if [ -e "$applist" ];
then
rm $applist
fi
printmsg "use `basename $me` if you want to manage apps"
EOF
install -g 0 -o 0 -m 755 /dev/ApkManager.sh /system/bin/ApkManager.sh
ln -sf /system/bin/ApkManager.sh /system/bin/apkmanager.sh
busybox mount -o ro,remount /system
echo "ApkManager installed"
fi
EOAPKMANAGER
install -m 700 -g 0 -o 0 -D /dev/ApkManager.sh /sd-ext/userinit.d/55ApkManager
rm /dev/ApkManager.sh
sh /sd-ext/userinit.d/55ApkManager force
sh /system/bin/ApkManager.sh
return
}
printmsg ()
{
ml=`echo -e $1|wc -L`
hf=""
for i in `seq $ml`;do
hf="${hf}="
done
echo -e $1|busybox awk -v hf=$hf 'BEGIN{print hf};END{print hf};{print $0};'
return
}
# end FroYo apps2sdext Functions
# setup env
internallist=/data/a2sd-ext/internal.cfg
version="1.34"
# run
printmsg "a2sd for FroYo version $version"
if [ "`echo $@ |grep -q dupefix;echo $?`" = "0" ];
then
dupecleaner
exit
fi
fsdextmnt
recoverycheck
checkcfg
a2sdbind
ApkManager
printmsg "FroYo apps2sdext complete..\nyou may need to reboot to see apps\nwhich
were already on /sd-ext"
if [ "$datadatabind" = "y" ];
then
printmsg "bind mounting /data/data with /sd-ext/data\nchanges will take
effect on next boot"
elif [ "$datadatabind" = "n" ];
then
printmsg "skipping data/data bind mount\nIf you are running low on space
then\njust rerun this script to see how much its grown.."
fi
exit

Вам также может понравиться