OSDN Git Service

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