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

Unified Diff: src/platform/factory_installer/factory_install.sh

Issue 1556022: Factory Installer. (Closed)
Patch Set: fixes for review Created 10 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: src/platform/factory_installer/factory_install.sh
diff --git a/src/platform/factory_installer/factory_install.sh b/src/platform/factory_installer/factory_install.sh
new file mode 100644
index 0000000000000000000000000000000000000000..344d2320f7c9bd6e974eb9ef3d9e317332a9639c
--- /dev/null
+++ b/src/platform/factory_installer/factory_install.sh
@@ -0,0 +1,69 @@
+#!/bin/sh -e
+
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+. "$(dirname "$0")/chromeos-common.sh"
+. "/opt/google/memento_updater/memento_updater_logging.sh"
+
+if [ $(id -u) -ne 0 ]; then
+ echo "You must run this as root."
+ exit 1
+fi
+
+# If we get in a respawn loop, sleeping for 1 minute before starting is nice.
+sleep 60
+
+# TODO(adlr): pick an install device in a matter that works on x86 and ARM.
+# This works on x86 only, afaik.
+DST=/dev/sda
+DST_FACTORY_PART=3
+DST_RELEASE_PART=5
+
+log "Factory Install: Setting partition table"
+
+/usr/sbin/chromeos-install --dst "${DST}" --skip_rootfs --run_as_root --yes \
+ 2>&1 | cat >> "$MEMENTO_AU_LOG"
+
+cleanup_loop() {
+ sleep 1 # TODO(adlr): figure out why this sleep seems to be required
+ losetup -d "$LOOP_DEV" 2>&1 | cat >> "$MEMENTO_AU_LOG"
+}
+
+# Call as: setup_loop loop_dev device partition#
+setup_loop() {
+ OFFSET=$(partsize "$2" "$3")
+ losetup -o "$OFFSET" "$1" "$2" 2>&1 | cat >> "$MEMENTO_AU_LOG"
+}
+
+# Install the two partitions
+for i in FACTORY RELEASE; do
+ PART=$(eval "echo \$DST_${i}_PART")
+ if [ "$i" = "FACTORY" ]; then
+ CHANNEL_ARG='--force_track=factory-channel'
+ else
+ CHANNEL_ARG=""
+ fi
+
+ LOOP_DEV=$(losetup -f)
+ setup_loop "$LOOP_DEV" "$DST" "$PART" || exit 1
+ trap cleanup_loop INT TERM EXIT
+
+ log "Factory Install: Installing $i partition to $PART"
+
+ RESULT="$(/opt/google/memento_updater/memento_updater.sh --dst_partition \
+ "${DST}${PART}" --allow_removable_boot $CHANNEL_ARG)"
+
+ if [ "$RESULT" != "UPDATED" ]; then
+ log "Factory Install: AU failed"
+ exit 1
+ fi
+ cleanup_loop
+ trap - INT TERM EXIT
+done
+
+log "All done installing."
+
+shutdown -r now
+sleep 1d # sleep indefinitely to avoid respawning rather than shutting down
« no previous file with comments | « src/platform/factory_installer/factory_install.conf ('k') | src/platform/memento_softwareupdate/memento_updater.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698