Index: src/platform/installer/chromeos-install |
diff --git a/src/platform/installer/chromeos-install b/src/platform/installer/chromeos-install |
index 005f73c74b231b942845443f63409500046a12ff..fc5f5c25f1d0e702b73093416d3f57abfea94ce6 100755 |
--- a/src/platform/installer/chromeos-install |
+++ b/src/platform/installer/chromeos-install |
@@ -9,7 +9,13 @@ |
. "$(dirname "$0")/chromeos-common.sh" || exit 1 |
. /usr/lib/shflags || exit 1 |
-DEFINE_string dst "/dev/sda" "Destination device" |
+if [ $(uname -m) = "armv7l" ]; then |
+ DEFAULT_DST=/dev/mmcblk0 |
+else |
+ DEFAULT_DST=/dev/sda |
+fi |
+ |
+DEFINE_string dst "${DEFAULT_DST}" "Destination device" |
DEFINE_boolean skip_src_removable ${FLAGS_FALSE} \ |
"Skip check to ensure source is removable" |
DEFINE_boolean skip_rootfs ${FLAGS_FALSE} \ |
@@ -38,8 +44,8 @@ fi |
# First find the root partition that we are installing from and verify it. |
ROOTDEV=$(rootdev) |
-# Remove numbers at end of rootfs device. |
-SRC=${ROOTDEV%%[0-9]*} |
+# From root partition to root block device. |
+SRC=$(get_block_dev_from_partition_dev ${ROOTDEV}) |
REMOVABLE=$(cat /sys/block/${SRC#/dev/}/removable) |
if [ "$FLAGS_skip_src_removable" -eq "${FLAGS_FALSE}" -a "$REMOVABLE" != "1" ] |
then |
@@ -180,18 +186,29 @@ install_rootfs() { |
############################################################################## |
# What do we expect & require to have on the source device? |
-STATEFUL_IMG=${SRC}1 |
-KERNEL_IMG=${SRC}2 |
-ROOTFS_IMG=${SRC}3 |
-ESP_IMG=${SRC}4 |
- |
-# Steal the PMBR code from the source MBR to put on the dest MBR, for booting |
-# on legacy-BIOS devices. |
-sudo dd if=$SRC of=$PMBRCODE bs=512 count=1 |
+STATEFUL_IMG=$(make_partition_dev ${SRC} 1) |
+KERNEL_IMG=$(make_partition_dev ${SRC} 2) |
+ROOTFS_IMG=$(make_partition_dev ${SRC} 3) |
+ESP_IMG=$(make_partition_dev ${SRC} 4) |
+ |
+if [ $(uname -m) = "armv7l" ]; then |
+ PMBRCODE=/dev/zero |
+else |
+ # Steal the PMBR code from the source MBR to put on the dest MBR, for booting |
+ # on legacy-BIOS devices. |
+ sudo dd if=$SRC of=$PMBRCODE bs=512 count=1 |
+fi |
# Create the GPT. |
install_gpt $FLAGS_dst $ROOTFS_IMG $KERNEL_IMG $STATEFUL_IMG $PMBRCODE $ESP_IMG |
+if [ $(uname -m) = "armv7l" ]; then |
+ DEVICE=$(echo $FLAGS_dst | sed -e 's/^.*\([0-9]\)$/\1/') |
+ MBR_SCRIPT_UIMG=$(make_arm_mbr ${START_KERN_A} ${NUM_KERN_SECTORS} ${DEVICE}) |
+ sudo dd bs=1 count=`stat --printf="%s" ${MBR_SCRIPT_UIMG}` \ |
+ if="$MBR_SCRIPT_UIMG" of=${FLAGS_dst} conv=notrunc |
+fi |
+ |
if [ "$FLAGS_skip_rootfs" -eq "$FLAGS_TRUE" ]; then |
echo Done installing partitons. |
exit 0 |
@@ -211,35 +228,39 @@ install_rootfs ${ROOTFS_IMG} ${FLAGS_dst} ${START_ROOTFS_B} "H-ROOT-B" |
echo "Copying ESP..." |
sudo dd if=${ESP_IMG} of=${FLAGS_dst} conv=notrunc bs=512 seek=${START_ESP} |
-# We can't guarantee that the kernel will see the new partition table, so we |
-# can't use it directly. We could force the kernel to reload it with an ioctl, |
-# but then we might have the UI mounting and displaying any old filesystems |
-# left over from the last install, and we don't want that either. So any access |
-# that we need to do to the destination partitions will have to go through loop |
-# devices. |
- |
-# Now run the postinstall script in each new rootfs. Note that even though |
-# we're passing the new destination partition number as an arg, the postinst |
-# script had better not try to access it, for the reasons we just gave. |
-loop_offset_setup ${FLAGS_dst} ${START_ROOTFS_A} |
-trap loop_offset_cleanup EXIT |
-mount_on_loop_dev |
-trap my_cleanup EXIT |
-sudo ${TMPMNT}/postinst ${FLAGS_dst}3 |
-umount_from_loop_dev |
-trap loop_offset_cleanup EXIT |
-loop_offset_cleanup |
-trap - EXIT |
+if [ $(uname -m) != "armv7l" ]; then |
-loop_offset_setup ${FLAGS_dst} ${START_ROOTFS_B} |
-trap loop_offset_cleanup EXIT |
-mount_on_loop_dev |
-trap my_cleanup EXIT |
-sudo ${TMPMNT}/postinst ${FLAGS_dst}5 |
-umount_from_loop_dev |
-trap loop_offset_cleanup EXIT |
-loop_offset_cleanup |
-trap - EXIT |
+ # We can't guarantee that the kernel will see the new partition table, so we |
+ # can't use it directly. We could force the kernel to reload it with an ioctl, |
+ # but then we might have the UI mounting and displaying any old filesystems |
+ # left over from the last install, and we don't want that either. So any access |
piman
2010/04/12 21:59:02
80 chars
|
+ # that we need to do to the destination partitions will have to go through loop |
piman
2010/04/12 21:59:02
80 chars
|
+ # devices. |
+ |
+ # Now run the postinstall script in each new rootfs. Note that even though |
+ # we're passing the new destination partition number as an arg, the postinst |
+ # script had better not try to access it, for the reasons we just gave. |
+ loop_offset_setup ${FLAGS_dst} ${START_ROOTFS_A} |
+ trap loop_offset_cleanup EXIT |
+ mount_on_loop_dev |
+ trap my_cleanup EXIT |
+ sudo ${TMPMNT}/postinst $(make_partition_dev ${FLAGS_dst} 3) |
+ umount_from_loop_dev |
+ trap loop_offset_cleanup EXIT |
+ loop_offset_cleanup |
+ trap - EXIT |
+ |
+ loop_offset_setup ${FLAGS_dst} ${START_ROOTFS_B} |
+ trap loop_offset_cleanup EXIT |
+ mount_on_loop_dev |
+ trap my_cleanup EXIT |
+ sudo ${TMPMNT}/postinst $(make_partition_dev ${FLAGS_dst} 5) |
+ umount_from_loop_dev |
+ trap loop_offset_cleanup EXIT |
+ loop_offset_cleanup |
+ trap - EXIT |
+ |
+fi |
echo "Installing the stateful partition..." |
loop_offset_setup $FLAGS_dst $START_STATEFUL |
@@ -261,6 +282,11 @@ fi |
loop_offset_cleanup |
trap - EXIT |
+if grep "vogue" /etc/lsb-release > /dev/null; then |
+ sudo uboot-env.py -f /dev/mtdblock0 -o 0x7c000 -s 0x4000 \ |
+ --set bootcmd="mmc read 0 C0008000 0 1; autoscr C0008000" |
+fi |
+ |
# Force data to disk before we declare done. |
sync |