3 # By Chih-Wei Huang <cwhuang@linux.org.tw>
4 # Last updated 2009/07/18
6 # License: GNU Public License
7 # We explicitely grant the right to use the scripts
8 # with Android-x86 project.
11 if [ -n "$DEBUG" ]; then
16 [ -e $LOG ] || busybox mknod $LOG c 1 3
20 busybox mount -t proc proc /proc
21 busybox mount -t sysfs sys /sys
25 export PATH=$PATH:/system/bin
27 if [ -n "$DEBUG" ]; then
28 mknod /dev/tty2 c 4 2 && openvt
29 mknod /dev/tty3 c 4 3 && openvt
32 echo -n Detecting Android...
37 for device in /dev/sr* /dev/sd[a-z]*; do
38 mount $device /mnt || continue
40 if [ ! -e ramdisk.img -o ! -e system.img ]; then
44 mount -t tmpfs tmpfs /android
46 zcat /mnt/$SRC/ramdisk.img | cpio -id > /dev/null
47 mount -o loop,rw /mnt/$SRC/system.img /sfs
48 if [ -e /sfs/etc/mountd.conf ]; then
49 if [ -n "$SDCARD" ]; then
50 if [ -b $SDCARD ]; then
51 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1$SDCARD|g" /sfs/etc/mountd.conf
52 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
53 elif [ -b /dev/$SDCARD ]; then
54 SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
55 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /sfs/etc/mountd.conf
56 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
58 SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
59 # reset the mount status, mountd will set it when the external storage is added
60 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=unmounted/g' /sfs/build.prop
62 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /sfs/etc/mountd.conf
65 # clean up the mountd.conf to always mount from tmpfs
66 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/SDCARD|g" /sfs/etc/mountd.conf
67 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
69 elif [ -e /sfs/build.prop ]; then
70 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /sfs/build.prop
73 mount -o loop,ro /mnt/$SRC/system.img /sfs
74 if [ -e /sfs/system.img ]; then
75 mount -o loop,rw /sfs/system.img system
76 if [ -e system/etc/mountd.conf ]; then
77 if [ -n "$SDCARD" ] ; then
78 if [ -b $SDCARD ]; then
79 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1$SDCARD|g" /system/etc/mountd.conf
80 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
81 elif [ -b /dev/$SDCARD ]; then
82 SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
83 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /sfs/etc/mountd.conf
84 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
86 SDCARD=`echo $SDCARD | sed -e 's|^/\(.*\)|\1|g'`
87 # reset the mount status, mountd will set it when the external storage is added
88 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=unmounted/g' /system/build.prop
90 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/$SDCARD|g" /system/etc/mountd.conf
93 # clean up the mountd.conf to always mount from tmpfs
94 sed -i "s|\(^ *block_device *\)\(/dev/.*\)|\1/dev/SDCARD|g" /system/etc/mountd.conf
95 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
97 elif [ -e system/build.prop ]; then
98 sed -i 's/^EXTERNAL_STORAGE_STATE=.*$/EXTERNAL_STORAGE_STATE=mounted/g' /system/build.prop
101 mount -o loop,ro /sfs/system.img system
103 mount --move /sfs system
106 mount -t tmpfs tmpfs cache
107 echo " found at $device"
110 mountpoint -q /android && break
113 if [ -n "$DEBUG" ]; then
114 echo -e "\nType 'exit' to continue booting...\n"
119 ln -s android/system /
121 ln -s ../system/lib/modules /lib
123 if [ -b "$DATA" ]; then
125 elif [ -b "/dev/$DATA" ]; then
126 mount /dev/$DATA data
127 elif [ -d /mnt/$SRC/data ]; then
128 mount --bind /mnt/$SRC/data data
130 mount -t tmpfs tmpfs data
132 if [ -z "$_sdcard" ]; then
133 if [ -b "$SDCARD" ]; then
135 elif [ -b "/dev/$SDCARD" ]; then
136 mount /dev/$SDCARD sdcard
138 if [ -d /mnt/$SRC/sdcard ]; then
139 mount --bind /mnt/$SRC/sdcard sdcard
141 mount -t tmpfs tmpfs sdcard
147 for s in `ls /scripts/* /mnt/$SRC/scripts/*`; do
153 [ -n "$INSTALL" ] && install_hd
155 if [ -n "$DEBUG" ]; then
156 echo -e "\nUse Alt-F1/F2/F3 to switch between virtual consoles"
157 echo -e "Type 'exit' to enter Android...\n"
159 # FIXME: all error messages in the shell are sent to $LOG
161 chroot /android /init
163 exec switch_root /android /init
166 sh # aviod kernel panic