Merge lp:~dmitry-sandalov/humpolec/humpolec into lp:humpolec

Proposed by Dmitry Sandalov
Status: Work in progress
Proposed branch: lp:~dmitry-sandalov/humpolec/humpolec
Merge into: lp:humpolec
Diff against target: 228 lines (+224/-0)
1 file modified
dualboot.sh (+224/-0)
To merge this branch: bzr merge lp:~dmitry-sandalov/humpolec/humpolec
Reviewer Review Type Date Requested Status
The Humpolec team Pending
Review via email: mp+205509@code.launchpad.net

Description of the change

spelling mistake

To post a comment you must log in.

Unmerged revisions

2. By Dmitry Sandalov

Spelling mistake

1. By Ondrej Kubik

dualboot.sh install script

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'dualboot.sh'
--- dualboot.sh 1970-01-01 00:00:00 +0000
+++ dualboot.sh 2014-02-09 21:54:13 +0000
@@ -0,0 +1,224 @@
1#!/bin/bash
2
3ACTION=$1
4SCRIPT_NAME=dualboot.sh
5# Used version of CWM recovery
6URL_CMW_PATH_MAKO="http://download2.clockworkmod.com/recoveries/recovery-clockwork-6.0.4.3-mako.img"
7URL_CMW_PATH_HAMMERHEAD="http://download2.clockworkmod.com/recoveries/recovery-clockwork-6.0.4.5-hammerhead.img"
8URL_CMW_PATH_GROUPER="http://download2.clockworkmod.com/recoveries/recovery-clockwork-6.0.4.3-grouper.img"
9URL_CMW_PATH_MAGURO="http://download2.clockworkmod.com/recoveries/recovery-clockwork-6.0.4.3-maguro.img"
10URL_CMW_PATH_MANTA="http://download2.clockworkmod.com/recoveries/recovery-clockwork-6.0.4.3-manta.img"
11URL_SUPERU_1_86="http://download.chainfire.eu/372/SuperSU/UPDATE-SuperSU-v1.86.zip?retrieve_file=1"
12URL_U_INSTALLER_PACKAGE="http://humpolec.ubuntu.com/UPDATE-UbuntuInstaller.zip"
13CACHE_RECOVERY=/cache/recovery
14TEMP_FOLDER=humpTemp
15RECOVERY_IMAGE=recovery.img
16SU_PACKAGE=UPDATE-SuperSU-v1.86.zip
17UBUNTU_INSTALLER_PACKAGE=UPDATE-UbuntuInstaller.zip
18RECOVERY_URL=
19DEVICE=
20CM_DEVICE=
21
22# get device model
23detect_device() {
24 echo "Connect device to install Ubuntu installer to."
25 DEVICE=$(adb wait-for-device shell getprop ro.product.device)
26 CM_DEVICE=$(adb wait-for-device shell getprop ro.cm.device)
27
28 if [[ "$DEVICE" == mako* ]]; then
29 echo "Detected connected Nexus 4"
30 RECOVERY_URL=$URL_CMW_PATH_MAKO
31 else if [[ "$DEVICE" == maguro* ]]; then
32 echo "Detected connected Galaxy Nexus"
33 RECOVERY_URL=$URL_CMW_PATH_MAGURO
34 else if [[ "$DEVICE" == grouper* ]]; then
35 echo "Detected connected Nexus 7"
36 RECOVERY_URL=$URL_CMW_PATH_GROUPER
37 else if [[ "$DEVICE" == manta* ]]; then
38 echo "Detected connected Nexus 10"
39 RECOVERY_URL=$URL_CMW_PATH_MANTA
40 else if [[ "$DEVICE" == hammerhead* ]]; then
41 echo "Detected connected Nexus 5"
42 RECOVERY_URL=$URL_CMW_PATH_HAMMERHEAD
43 else
44 echo "Connected device is not supported"
45 exit 0
46 fi
47 fi
48 fi
49 fi
50 fi
51}
52
53
54print_usage() {
55 echo "Welcome to Humpolec. This is Ubuntu-Android dualboot enabler"
56 echo "Please connect supported phone with adb enabled"
57 echo " "
58 echo "$SCRIPT_NAME action"
59 echo " "
60 echo " actions:"
61 echo " HELP: Prints this help"
62 echo " FULL: Full installation: this will install SuperUser package as well Ubuntu dualboot installer."
63 echo " Use this if you don't have SuperUser package installed on your device."
64 echo " Typical first time choice for unmodified factory images clean AOSP builds"
65 echo " Installation will reboot twice into the recovery, if prompterd **** when exiting recovery, answer NO"
66 echo " UPDATE: Updates application: this will install Ubuntu dualboot installer. It assumes there is alresdy Super User installed"
67 echo " Typical option for for CyanogenMod or other similar builds."
68 echo " Use this option if you already have Ubuntu dualboot installer installed and are only upgrading"
69 echo " Installation will reboot twice into the recovery, if prompterd when existing recovery, answer NO"
70 echo " INSTALL_SU: Installs Superuser"
71 echo " FIX_MAKO_RADIO: Install 4.3 radio image"
72 echo " !!! Use this only if you are running on Nexus 4 running Android 4.4.x and experiencing audio issue during call"
73 echo " !!! Do NOT USE this on any other phone than Nexus 4!!!"
74}
75
76wait_for_adb() {
77 MODE=$1
78 echo "Waiting for $MODE to boot"
79 RECOVERY_STATE=$(adb devices)
80 while ! [[ "$RECOVERY_STATE" == *$MODE ]]
81 do
82 sleep 1
83 RECOVERY_STATE=$(adb devices)
84 done
85}
86
87print_ask_help() {
88 echo "For more information refer to $ $SCRIPT_NAME HELP"
89}
90
91create_temp_dir() {
92 mkdir $TEMP_FOLDER
93 cd $TEMP_FOLDER
94}
95
96delete_temp_dir() {
97 cd ..
98 rm -rf $TEMP_FOLDER
99}
100
101download_su_package() {
102 echo "Downloading SU package"
103 # check downloaded file size, this often fails, so retry. Expected size is 1184318
104 download_file $URL_SUPERU_1_86 $SU_PACKAGE 1184000
105}
106
107download_app_update() {
108 echo "Downloading Ubuntu Installer application package"
109 # check downloaded file size, this often fails, so retry. Expected size is 2309120
110 download_file $URL_U_INSTALLER_PACKAGE $UBUNTU_INSTALLER_PACKAGE 2309000
111}
112
113download_recovery() {
114 echo "Downloading recovery for $DEVICE"
115 # check downloaded file size, this often fails, so retry. any recovery should be more than 5M
116 download_file $RECOVERY_URL $RECOVERY_IMAGE 5000000
117}
118
119download_file() {
120 DOWNLOAD_URL=$1
121 FILENAME=$2
122 TARGET_SIZE=$3
123 SIZE=1
124 # check downloaded file size, this often fails, so retry. Expected size is TARGET_SIZE
125 while [[ $TARGET_SIZE -ge $SIZE ]]
126 do
127 curl $DOWNLOAD_URL > $FILENAME
128 SIZE=$(ls -la $FILENAME | awk '{ print $5}')
129 echo "Downloaded file has size: $SIZE"
130 done
131}
132
133install_su() {
134 echo "Rebooting to bootloader"
135 adb wait-for-device reboot bootloader
136 fastboot boot $RECOVERY_IMAGE
137 wait_for_adb recovery
138 echo "Creating update command"
139 adb shell rm -rf $CACHE_RECOVERY
140 adb shell mkdir $CACHE_RECOVERY
141 adb shell "echo -e '--sideload' > $CACHE_RECOVERY/command"
142 echo "Booting back to bootloader"
143 adb reboot bootloader
144 fastboot boot $RECOVERY_IMAGE
145 wait_for_adb sideload
146 adb sideload $SU_PACKAGE
147 echo "Wait for installation of package to complete"
148}
149
150install_ubuntu_installer() {
151 echo "Rebooting to bootloader"
152 adb wait-for-device reboot bootloader
153 fastboot boot $RECOVERY_IMAGE
154 wait_for_adb recovery
155 echo "Creating update command"
156 adb shell rm -rf $CACHE_RECOVERY
157 adb shell mkdir $CACHE_RECOVERY
158 adb shell "echo -e '--sideload' > $CACHE_RECOVERY/command"
159 echo "Booting back to bootloader"
160 adb reboot bootloader
161 fastboot boot $RECOVERY_IMAGE
162 wait_for_adb sideload
163 adb sideload $UBUNTU_INSTALLER_PACKAGE
164 echo "Wait for installation of package to complete"
165 echo "If you are asked to preserve possibly lost root access"
166 echo "Or if device should be rooted"
167 echo "This is false warning and you can answer either yes or no"
168}
169
170check_build_for_su_update() {
171 if [[ "$CM_DEVICE" == "$DEVICE" ]]; then
172 echo "!!! This seems to be CyanogenMod build, you already have SuperUser as part of the system"
173 echo "Go to Settings->SuperUser->Settings and make sure it is enabled for applications"
174 echo "For installation, use: $ $SCRIPT_NAME UPDATE"
175 print_ask_help
176 exit 0;
177 fi
178}
179
180if [[ "$ACTION" == HELP ]]; then
181 echo "HELP"
182 print_usage
183else if [[ "$ACTION" == FULL ]]; then
184 detect_device
185 check_build_for_su_update
186 echo "FULL install"
187 create_temp_dir
188 download_su_package
189 download_app_update
190 download_recovery
191
192 install_ubuntu_installer
193 install_su
194
195 delete_temp_dir
196else if [[ "$ACTION" == INSTALL_SU ]]; then
197 detect_device
198 check_build_for_su_update
199 echo "INSTALL_SU"
200 create_temp_dir
201 download_su_package
202 download_recovery
203
204 install_su
205
206 delete_temp_dir
207else if [[ "$ACTION" == UPDATE ]]; then
208 detect_device
209 create_temp_dir
210 echo "UPDATE install"
211 download_app_update
212 download_recovery
213
214 install_ubuntu_installer
215
216 delete_temp_dir
217else
218 echo "Unknow action"
219 print_ask_help
220fi
221fi
222fi
223fi
224

Subscribers

People subscribed via source and target branches