OSDN Git Service

extend DATA, SDCARD syntax
[android-x86/bootable-newinstaller.git] / initrd / init
1 #!/bin/busybox sh
2 #
3 # By Chih-Wei Huang <cwhuang@linux.org.tw>
4 # Last updated 2009/07/18
5 #
6 # License: GNU Public License
7 # We explicitely grant the right to use the scripts
8 # with Android-x86 project.
9 #
10
11 if [ -n "$DEBUG" ]; then
12         LOG=/tmp/log
13         set -x
14 else
15         LOG=/dev/null
16         [ -e $LOG ] || busybox mknod $LOG c 1 3
17 fi
18 exec 2> $LOG
19
20 busybox mount -t proc proc /proc
21 busybox mount -t sysfs sys /sys
22
23 busybox --install -s
24
25 export PATH=$PATH:/system/bin
26
27 if [ -n "$DEBUG" ]; then
28         mknod /dev/tty2 c 4 2 && openvt
29         mknod /dev/tty3 c 4 3 && openvt
30 fi
31
32 echo -n Detecting Android...
33
34 while [ 1 ]; do
35         mdev -s
36
37         for device in /dev/sr* /dev/sd[a-z]*; do
38                 mount $device /mnt || continue
39                 cd /mnt/$SRC
40                 if [ ! -e ramdisk.img -o ! -e system.img ]; then
41                         umount /mnt
42                         continue
43                 fi
44                 mount -t tmpfs tmpfs /android
45                 cd /android
46                 zcat /mnt/$SRC/ramdisk.img | cpio -id > /dev/null
47                 mount -o loop,ro /mnt/$SRC/system.img /sfs
48                 if [ -e /sfs/system.img ]; then
49                         mount -o loop,ro /sfs/system.img system
50                 else
51                         mount --move /sfs system
52                 fi
53                 mkdir cache sdcard
54                 mount -t tmpfs tmpfs cache
55                 echo " found at $device"
56                 break
57         done
58         mountpoint -q /android && break
59         sleep 1
60         echo -n .
61         if [ -n "$DEBUG" ]; then
62                 echo -e "\nType 'exit' to continue booting...\n"
63                 sh
64         fi
65 done
66
67 ln -s android/system /
68
69 ln -s ../system/lib/modules /lib
70
71 if [ -b "$DATA" ]; then
72         mount $DATA data
73 elif [ -b "/dev/$DATA" ]; then
74         mount /dev/$DATA data
75 elif [ -d /mnt/$SRC/data ]; then
76         mount --bind /mnt/$SRC/data data
77 else
78         mount -t tmpfs tmpfs data
79 fi
80 if [ -b "$SDCARD" ]; then
81         mount $SDCARD sdcard
82 elif [ -b "/dev/$SDCARD" ]; then
83         mount /dev/$SDCARD sdcard
84 elif [ -n "$SDCARD" ]; then
85         # TODO: SDCARD is specified but does not exist.
86         # Set it to mountd.conf
87         echo $SDCARD
88 else
89         if [ -d /mnt/$SRC/sdcard ]; then
90                 mount --bind /mnt/$SRC/sdcard sdcard
91         else
92                 mount -t tmpfs tmpfs sdcard
93         fi
94 fi
95
96 # load scripts
97 for s in `ls /scripts/* /mnt/$SRC/scripts/*`; do
98         source $s
99 done
100
101 load_modules
102
103 [ -n "$INSTALL" ] && install_hd
104
105 if [ -n "$DEBUG" ]; then
106         echo -e "\nUse Alt-F1/F2/F3 to switch between virtual consoles"
107         echo -e "Type 'exit' to enter Android...\n"
108
109         # FIXME: all error messages in the shell are sent to $LOG
110         sh
111         chroot /android /init
112 else
113         exec switch_root /android /init
114 fi
115
116 sh # aviod kernel panic