OSDN Git Service

add auto mount for sdcard
authorYi Sun <beyounn@gmail.com>
Tue, 21 Jul 2009 01:20:13 +0000 (18:20 -0700)
committerYi Sun <beyounn@gmail.com>
Tue, 21 Jul 2009 01:20:13 +0000 (18:20 -0700)
initrd/init
initrd/scripts/0-auto-detect

index d42b077..e2ab81f 100755 (executable)
@@ -44,8 +44,60 @@ while [ 1 ]; do
                mount -t tmpfs tmpfs /android
                cd /android
                zcat /mnt/$SRC/ramdisk.img | cpio -id > /dev/null
+               mount -o loop,rw /mnt/$SRC/system.img /sfs
+               if [ -e /sfs/etc/mountd.conf ]; then
+                       if [ -n "$SDCARD" ]; then
+                               if [ -b $SDCARD ]; then
+                                       sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1$SDCARD|g" /sfs/etc/mountd.conf
+                                       sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
+                               elif [ -b /dev/$SDCARD ]; then
+                                       SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
+                                       sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /sfs/etc/mountd.conf
+                                       sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
+                               else
+                                       SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
+                                       # reset the mount status, mountd will set it when the external storage is added
+                                       sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=unmounted/g' /sfs/build.prop
+                                       _sdcard=1
+                                       sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /sfs/etc/mountd.conf
+                               fi
+                       else
+                               # clean up the mountd.conf to always mount from tmpfs
+                               sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/SDCARD|g" /sfs/etc/mountd.conf
+                               sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
+                       fi
+               elif [ -e /sfs/build.prop ]; then
+                       sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
+               fi
+               umount /sfs
                mount -o loop,ro /mnt/$SRC/system.img /sfs
                if [ -e /sfs/system.img ]; then
+                       mount -o loop,rw /sfs/system.img system
+                       if [ -e system/etc/mountd.conf ]; then
+                               if [ -n "$SDCARD" ] ; then
+                                       if [ -b $SDCARD ]; then
+                                               sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1$SDCARD|g" /system/etc/mountd.conf
+                                               sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
+                                       elif [ -b /dev/$SDCARD ]; then
+                                               SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
+                                               sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /sfs/etc/mountd.conf
+                                               sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
+                                       else
+                                               SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
+                                               # reset the mount status, mountd will set it when the external storage is added
+                                               sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=unmounted/g' /system/build.prop
+                                               _sdcard=1
+                                               sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /system/etc/mountd.conf
+                                       fi
+                               else
+                                       # clean up the mountd.conf to always mount from tmpfs
+                                       sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/SDCARD|g" /system/etc/mountd.conf
+                                       sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
+                               fi
+                       elif [ -e system/build.prop ]; then
+                               sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
+                       fi
+                       umount system
                        mount -o loop,ro /sfs/system.img system
                else
                        mount --move /sfs system
@@ -77,19 +129,17 @@ elif [ -d /mnt/$SRC/data ]; then
 else
        mount -t tmpfs tmpfs data
 fi
-if [ -b "$SDCARD" ]; then
-       mount $SDCARD sdcard
-elif [ -b "/dev/$SDCARD" ]; then
-       mount /dev/$SDCARD sdcard
-elif [ -n "$SDCARD" ]; then
-       # TODO: SDCARD is specified but does not exist.
-       # Set it to mountd.conf
-       echo $SDCARD
-else
-       if [ -d /mnt/$SRC/sdcard ]; then
-               mount --bind /mnt/$SRC/sdcard sdcard
+if [ -z "$_sdcard"  ]; then
+       if [ -b "$SDCARD" ]; then
+               mount $SDCARD sdcard
+       elif [ -b "/dev/$SDCARD" ]; then
+               mount /dev/$SDCARD sdcard
        else
-               mount -t tmpfs tmpfs sdcard
+               if [ -d /mnt/$SRC/sdcard ]; then
+                       mount --bind /mnt/$SRC/sdcard sdcard
+               else
+                       mount -t tmpfs tmpfs sdcard
+               fi
        fi
 fi
 
index 12ab078..d8dfa96 100644 (file)
@@ -30,10 +30,13 @@ get_asus_info()
                        LANDEV=atl1e
                        WIFDEV=rtl8187se
                        ;;
-               900A|904HD)
+               900A|904HD|1000HD)
                        LANDEV=atl1e
                        WIFDEV=ath5k
                        ;;
+               901)
+                       LANDEV=atl1e
+                       WIFDEV=rt2860sta
                *)
                        LANDEV=atl1e
                        WIFDEV=ath9k