Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(656)

Side by Side Diff: factory_install.sh

Issue 6708106: Fix factory installer for ARM platforms (Closed) Base URL: ssh://gitrw.chromium.org:9222/factory_installer.git@master
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | factory_reset.sh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh -ex 1 #!/bin/sh -ex
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 . "$(dirname "$0")/chromeos-common.sh" 7 . "$(dirname "$0")/chromeos-common.sh"
8 . "/opt/google/memento_updater/memento_updater_logging.sh" 8 . "/opt/google/memento_updater/memento_updater_logging.sh"
9 . "/opt/google/memento_updater/find_omaha.sh" 9 . "/opt/google/memento_updater/find_omaha.sh"
10 10
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 # Ensure that flash chips are in a known good state. 82 # Ensure that flash chips are in a known good state.
83 clear_fwwp 83 clear_fwwp
84 84
85 # Ensure that we can wipe TPM if necessary. 85 # Ensure that we can wipe TPM if necessary.
86 clear_tpm 86 clear_tpm
87 fi 87 fi
88 fi 88 fi
89 89
90 log "Waiting for ethernet connectivity to install" 90 log "Waiting for ethernet connectivity to install"
91 log "Or disable developer mode to factory reset." 91 log "Or disable developer mode to factory reset."
92 while ! ifconfig eth0 | grep -q "inet addr"; do 92 while ! ifconfig eth0 | grep -q "inet addr" && \
Hung-Te 2011/03/29 12:57:34 Why do we want two inet devices? And, you don't ne
Nick Sanders 2011/03/30 00:10:44 This indicates, "loop until either eth0 or eth1 is
Che-Liang Chiou 2011/03/30 08:57:44 I changed this part, and hope that it would be mor
93 ! ifconfig eth1 | grep -q "inet addr"; do
93 # If developer switch is flipped, go to "reset mode" instead of 94 # If developer switch is flipped, go to "reset mode" instead of
94 # network install mode. Make sure gpio can be read (gpio_setup may 95 # network install mode. Make sure gpio can be read (gpio_setup may
95 # fail if the device is not ready). 96 # fail if the device is not ready).
96 if [ "$(crossystem devsw_cur)" = "0" ]; then 97 if [ "$(crossystem devsw_cur)" = "0" ]; then
97 log "Performing factory reset" 98 log "Performing factory reset"
98 if ! /usr/sbin/factory_reset.sh; then 99 if ! /usr/sbin/factory_reset.sh; then
99 log "Factory reset failed." 100 log "Factory reset failed."
100 exit 1 101 exit 1
101 fi 102 fi
102 103
103 log "Done" 104 log "Done"
104 exit 0 105 exit 0
105 fi 106 fi
106 sleep 1 107 sleep 1
107 done 108 done
108 log "$(ifconfig eth0 | grep 'inet addr')" 109 log "eth0: $(ifconfig eth0 | grep 'inet addr')"
110 log "eth1: $(ifconfig eth1 | grep 'inet addr')"
109 111
110 set_time || exit 1 112 set_time || exit 1
111 113
112 # TODO(adlr): pick an install device in a matter that works on x86 and ARM. 114 # Is there a better x86 test?
113 # This works on x86 only, afaik. 115 if uname -m | grep -q "^i.86\$"; then
114 DST_DRIVE=/dev/sda 116 ARCH="INTEL"
117 elif [ $(uname -m ) = "x86_64" ]; then
118 ARCH="INTEL"
119 elif [ $(uname -m ) = "armv7l" ]; then
Hung-Te 2011/03/29 12:57:34 So we only support v71?
120 ARCH="ARM"
121 else
Nick Sanders 2011/03/30 00:10:44 This has been an annoying problem in general: http
122 log "Error: Failed to auto detect architecture"
123 exit 1
124 fi
125
126 if [ "$ARCH" = "INTEL" ]; then
127 DST_DRIVE=/dev/sda
128 else
129 DST_DRIVE=/dev/mmcblk0
130 fi
115 DST_FACTORY_PART=3 131 DST_FACTORY_PART=3
116 DST_RELEASE_PART=5 132 DST_RELEASE_PART=5
117 DST_OEM_PART=8 133 DST_OEM_PART=8
118 DST_EFI_PART=12 134 DST_EFI_PART=12
119 DST_STATE_PART=1 135 DST_STATE_PART=1
120 DST_FIRMWARE=/tmp/firmware.sh 136 DST_FIRMWARE=/tmp/firmware.sh
121 137
122 # Light up screen in case you can't see our splash image. 138 # Light up screen in case you can't see our splash image.
123 LIGHTUP_SCREEN="/usr/sbin/lightup_screen" 139 LIGHTUP_SCREEN="/usr/sbin/lightup_screen"
124 if [ -x /usr/sbin/lightup_screen ]; then 140 if [ -x "${LIGHTUP_SCREEN}" ]; then
125 ${LIGHTUP_SCREEN} 141 ${LIGHTUP_SCREEN}
126 else 142 else
127 log "${LIGHTUP_SCREEN} does not exist or not executable" 143 log "${LIGHTUP_SCREEN} does not exist or not executable"
128 fi 144 fi
129 145
130 log "Factory Install: Setting partition table" 146 log "Factory Install: Setting partition table"
131 147
132 INST_FLAGS="--dst ${DST_DRIVE} --skip_rootfs --run_as_root --yes" 148 INST_FLAGS="--dst ${DST_DRIVE} --skip_rootfs --run_as_root --yes"
133 149
134 # in factory mode, we need both GPT_LAYOUT and PMBR_CODE always generated. 150 # in factory mode, we need both GPT_LAYOUT and PMBR_CODE always generated.
(...skipping 13 matching lines...) Expand all
148 log "FACTORY INSTALLER STOPPED." 164 log "FACTORY INSTALLER STOPPED."
149 exit 1 165 exit 1
150 fi 166 fi
151 167
152 /usr/sbin/chromeos-install $INST_FLAGS 2>&1 | cat >> "$MEMENTO_AU_LOG" 168 /usr/sbin/chromeos-install $INST_FLAGS 2>&1 | cat >> "$MEMENTO_AU_LOG"
153 169
154 # Load the new partition table. The autoupdater has trouble with loop devices. 170 # Load the new partition table. The autoupdater has trouble with loop devices.
155 sync 171 sync
156 echo 3 > /proc/sys/vm/drop_caches 172 echo 3 > /proc/sys/vm/drop_caches
157 /sbin/sfdisk -R "$DST_DRIVE" 173 /sbin/sfdisk -R "$DST_DRIVE"
174 partprobe # inform the OS of partition table changes
158 175
159 log "Done preparing disk" 176 log "Done preparing disk"
160 177
161 FACTORY_CHANNEL_ARG='--force_track=factory-channel' 178 FACTORY_CHANNEL_ARG='--force_track=factory-channel'
162 RELEASE_CHANNEL_ARG='--force_track=release-channel' 179 RELEASE_CHANNEL_ARG='--force_track=release-channel'
163 OEM_CHANNEL_ARG='--force_track=oempartitionimg-channel' 180 OEM_CHANNEL_ARG='--force_track=oempartitionimg-channel'
164 EFI_CHANNEL_ARG='--force_track=efipartitionimg-channel' 181 EFI_CHANNEL_ARG='--force_track=efipartitionimg-channel'
165 STATE_CHANNEL_ARG='--force_track=stateimg-channel' 182 STATE_CHANNEL_ARG='--force_track=stateimg-channel'
166 FIRMWARE_CHANNEL_ARG='--force_track=firmware-channel' 183 FIRMWARE_CHANNEL_ARG='--force_track=firmware-channel'
167 184
168 # Install the partitions 185 # Install the partitions
169 for i in EFI OEM STATE RELEASE FACTORY FIRMWARE; do 186 for i in EFI OEM STATE RELEASE FACTORY FIRMWARE; do
170 if [ "$i" = "FIRMWARE" ]; then 187 if [ "$i" = "FIRMWARE" ]; then
171 DST="${DST_FIRMWARE}" 188 DST="${DST_FIRMWARE}"
172 else 189 else
173 PART=$(eval "echo \$DST_${i}_PART") 190 PART=$(eval "echo \$DST_${i}_PART")
174 DST="${DST_DRIVE}${PART}" 191 DST="$(make_partition_dev ${DST_DRIVE} ${PART})"
175 fi 192 fi
176 193
177 log "Factory Install: Installing $i image to $DST" 194 log "Factory Install: Installing $i image to $DST"
178 195
179 CHANNEL_ARG=$(eval "echo \$${i}_CHANNEL_ARG") 196 CHANNEL_ARG=$(eval "echo \$${i}_CHANNEL_ARG")
180 KPART="none" 197 KPART="none"
181 if [ "$i" = "FACTORY" -o "$i" = "RELEASE" ]; then 198 if [ "$i" = "FACTORY" -o "$i" = "RELEASE" ]; then
182 # Set up kernel partition 199 # Set up kernel partition
183 KPART="" 200 KPART=""
184 fi 201 fi
(...skipping 24 matching lines...) Expand all
209 fi 226 fi
210 done 227 done
211 228
212 # Release image is not allowed to boot unless the factory test is passed 229 # Release image is not allowed to boot unless the factory test is passed
213 # otherwise the wipe and final verification can be skipped. 230 # otherwise the wipe and final verification can be skipped.
214 # TODO(hungte) do this in memento_updater or postinst may be better 231 # TODO(hungte) do this in memento_updater or postinst may be better
215 # TODO(hungte) make a better way to find location of cgpt 232 # TODO(hungte) make a better way to find location of cgpt
216 if ! cgpt add -i $((${DST_RELEASE_PART} - 1)) -P 0 -T 0 -S 0 ${DST_DRIVE}; then 233 if ! cgpt add -i $((${DST_RELEASE_PART} - 1)) -P 0 -T 0 -S 0 ${DST_DRIVE}; then
217 log "Factory Install: failed to lock release image. Destroy all kernels." 234 log "Factory Install: failed to lock release image. Destroy all kernels."
218 # Destroy kernels otherwise the system is still bootable. 235 # Destroy kernels otherwise the system is still bootable.
219 dd if=/dev/zero of=${DST_DRIVE}$((${DST_RELEASE_PART} - 1)) 236 DST_RELEASE=$(make_partition_dev ${DST_DRIVE} $((${DST_RELEASE_PART} - 1)))
220 dd if=/dev/zero of=${DST_DRIVE}$((${DST_FACTORY_PART} - 1)) 237 DST_FACTORY=$(make_partition_dev ${DST_DRIVE} $((${DST_FACTORY_PART} - 1)))
238 dd if=/dev/zero of=$DST_RELEASE
239 dd if=/dev/zero of=$DST_FACTORY
221 exit 1 240 exit 1
222 fi 241 fi
223 242
224 log "All done installing." 243 log "All done installing."
225 244
226 sleep 3 245 sleep 3
227 shutdown -r now 246 shutdown -r now
228 sleep 1d # sleep indefinitely to avoid respawning rather than shutting down 247 sleep 1d # sleep indefinitely to avoid respawning rather than shutting down
OLDNEW
« no previous file with comments | « no previous file | factory_reset.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698