2 # By Chih-Wei Huang <cwhuang@linux.org.tw>
3 # Last updated 2010/10/14
5 # License: GNU Public License
6 # We explicitely grant the right to use the scripts
7 # with Android-x86 project.
15 dialog --title " Rebooting... " --nocancel --pause "" 8 41 1
23 dialog --clear --title " $1 " \
24 --menu "$2" 20 71 13 --file $menufile 2> $tempfile
27 choice=`cat $tempfile`
32 fdisk -l | grep ^/dev | cut -b6-12,55- | awk '{
33 if (!match($2, "Extended")) {
35 system("echo -n `cat /sys/block/*/"$1"/../device/model`")
39 printf("\"Create/Modify partitions\" \"\"\n\"Detect devices\" \"\"")
41 choose "Choose Partition" "Please select a partition to install Android-x86:"
47 dialog --clear --title " $1 " --gauge "\n $2" 8 70
53 echo -e '"Do not format" ""\next3 ""\next2 ""\nntfs ""\nfat32 ""' > $menufile
54 choose "Choose filesystem" "Please select a filesystem to format $1:"
71 if [ -n "$cmd" ]; then
72 dialog --title " Confirm " --no-label Skip --yesno \
73 "\n You chose to format $1 to $choice.\n All data in that partition will LOSE.\n\n Are you sure to format the partition $1?" 10 51
74 [ $? -ne 0 ] && return 1
75 $cmd Android-x86 /dev/$1 | awk '{
76 # FIXME: very imprecise progress
77 if (match($0, "done"))
79 }' | progress_bar "Formatting" "Formatting partition $1..."
87 echo -e "title $title\n\tkernel /$asrc/kernel$vga $@ SRC=/$asrc\n\tinitrd /$asrc/initrd.img\n" >> $menulst
92 menulst=/hd/grub/menu.lst
93 [ -n "$VESA" ] && vga=" vga=788 modeset=0"
94 echo -e "default=0\ntimeout=6\nroot (hd0,$1)\nsplashimage=/grub/android-x86.xpm.gz\n" > $menulst
95 cmdline=`cat /proc/cmdline | sed "s|\(initrd.*img\s*\)||; s|quiet\s*||; s|\(vga=\w\+\?\s*\)||; s|\(DPI=\w\+\?\s*\)||; s|\(INSTALL=\w\+\?\s*\)||; s|\(SRC=\S\+\?\s*\)||; s|\(DEBUG=\w\+\?\s*\)||; s|\(BOOT_IMAGE.*\)||"`
97 if grep -q ^ro.sf.lcd_density /android/default.prop /android/system/build.prop; then
98 create_entry "Android-x86 $VER" quiet $cmdline
100 create_entry "Android-x86 $VER (HDPI)" quiet $cmdline DPI=240
101 create_entry "Android-x86 $VER (MDPI)" quiet $cmdline DPI=160
103 create_entry "Android-x86 $VER (Debug mode)" $cmdline DEBUG=1
108 win=`fdisk -l /dev/$(echo $1 | cut -b-3) | grep ^/dev | cut -b6-12,55- | awk '{
109 if (match($2, "NTFS"))
112 if [ -n "$win" ]; then
113 dialog --title " Confirm " --yesno \
114 "\nThe installer found a Windows partition in /dev/$win.\n\nDo you want to create a boot item for Windows?" 9 59
115 [ $? -ne 0 ] && return 1
116 p=$((`echo $win | cut -b4-`-1))
117 echo -e "title Windows\n\trootnoverify (hd$d,$p)\n\tchainloader +1\n" >> $menulst
123 mountpoint -q /hd && umount /hd
126 try_mount rw /dev/$1 /hd && break
127 dialog --clear --title " Error " --defaultno --yesno \
128 "\n Cannot mount /dev/$1\n Do you want to format it?" 8 37
129 [ $? -ne 0 ] && return 255
132 fs=`cat /proc/mounts | grep /dev/$1 | awk '{ print $3 }'`
133 if [ "$fs" = "vfat" ]; then
134 dialog --title " Warning " --yesno \
135 "\nYou are going to install Android-x86 to a fat32 partition. Though this is possible, android cannot save user data to that partition. So data will be save to a RAMDISK(tmpfs), and lose after power off.\n\nAre you sure to continue?" 12 63
136 [ $? -ne 0 ] && return 1
137 elif [ "$fs" = "fuseblk" ]; then
138 dialog --title " Warning " --yesno \
139 "\nYou are going to install Android-x86 to an NTFS partition. Though this is possible, some user data cannot be saved properly to that partition and will lose after power off.\n\nAre you sure to continue?" 11 63
140 [ $? -ne 0 ] && return 1
144 dialog --title " Confirm " --no-label Skip --yesno \
145 "\n Do you want to install boot loader GRUB?" 7 47
146 if [ $? -eq 0 ]; then
150 h=`echo $d | awk '{ printf("%c", $1+97) }'`
151 [ -d /sys/block/[sh]d$h/$1 ] && break
154 p=$((`echo $1 | cut -b4-`-1))
157 rm -f /hd/boot/grub/stage1
158 echo "setup (hd$d) (hd$d,$p)" | grub > /dev/tty5
159 [ $? -ne 0 ] && return 255
162 dialog --title " Question " --defaultno --yesno \
163 "\nDo you want to install /system directory as read-write?\n\nLet /system be read-write make it easier to debug, but it needs more disk space and longer installation time." 10 61
167 files="mnt/$SRC/kernel mnt/$SRC/initrd.img mnt/$SRC/ramdisk.img"
168 [ $instal_rw -eq 0 ] && files="$files android/system" || files="$files mnt/$SRC/system.*"
170 for s in `du -sk $files | awk '{print $1}'`; do
176 ( ( cd /; find $files | cpio -H newc -o ) | pv -ns ${size}k | ( cpio -iud > /dev/null; echo $? > /tmp/result )) 2>&1 \
177 | progress_bar "Installing Android-x86" "Expect to write $size KB..."
181 mv mnt/$SRC/* . && rm -rf mnt
182 [ -d android ] && mv android/* . && rmdir android
184 [ "$fs" != "vfat" ] && mkdir data
187 return $((`cat /tmp/result`*255))
193 select_dev || rebooting
204 dialog --title " Detecting... " --nocancel --pause "" 8 41 1
213 if [ $retval -eq 255 ]; then
214 dialog --title ' Error! ' --yes-label Retry --no-label Reboot \
215 --yesno '\n Installation failed!' 7 35
216 [ $? -eq 1 ] && rebooting
220 [ -n "$VESA" ] || runit="Run Android-x86"
221 dialog --clear --title ' Congratulations! ' \
222 --menu "\n Android-x86 is installed successfully.\n " 11 51 13 \
223 "$runit" "" "Reboot" "" 2> $tempfile
224 case "`cat $tempfile`" in
228 if mountpoint -q /sfs; then
230 mount -o loop /hd/$asrc/system.sfs /sfs
231 mount -o loop /sfs/system.img system
233 mount -o loop /hd/$asrc/system.img system
235 [ -d /hd/$asrc/data ] && mount --bind /hd/$asrc/data data