From 2a517638ef6d29ac6ecd9d165fbeb8b7b5f7fb6a Mon Sep 17 00:00:00 2001 From: Nick Sanders Date: Tue, 18 Jan 2011 22:20:03 -0800 Subject: [PATCH] Add legacy fixup for diskimg make_factory_package.sh --diskimg can now boot on H2O bios. BUG=chromeium-os:10915 TEST=boots Change-Id: I8358247e475fa2d4298e225fa9445b00e4dad253 Review URL: http://codereview.chromium.org/6296001 (cherry picked from commit 10418cc13c298f3514fdc5898655132cb9b09037) Review URL: http://codereview.chromium.org/6278003 --- make_factory_package.sh | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/make_factory_package.sh b/make_factory_package.sh index c2575988d1..715f1fd9b3 100755 --- a/make_factory_package.sh +++ b/make_factory_package.sh @@ -191,6 +191,21 @@ else IMAGE_IS_UNPACKED=1 fi +mount_esp() { + local image="$1" + local esp_mountpoint="$2" + offset=$(partoffset "${image}" 12) + sudo mount -o loop,offset=$(( offset * 512 )) \ + "${image}" "${esp_mountpoint}" + ESP_MOUNT="${esp_mountpoint}" +} + +umount_esp() { + if [ -n "${ESP_MOUNT}" ]; then + sudo umount "${ESP_MOUNT}" + fi +} + generate_img() { local outdev="$(readlink -f "$FLAGS_diskimg")" local sectors="$FLAGS_sectors" @@ -202,10 +217,8 @@ generate_img() { echo "Release Kernel" image_partition_copy "${RELEASE_IMAGE}" 2 "${outdev}" 4 - echo "Release Rootfs" image_partition_copy "${RELEASE_IMAGE}" 3 "${outdev}" 5 - echo "OEM parition" image_partition_copy "${RELEASE_IMAGE}" 8 "${outdev}" 8 @@ -223,6 +236,30 @@ generate_img() { echo "EFI Partition" image_partition_copy "${FACTORY_IMAGE}" 12 "${outdev}" 12 + # TODO(nsanders, wad): consolidate this code into some common code + # when cleaning up kernel commandlines. There is code that touches + # this in postint/chromeos-setimage and build_image. However none + # of the preexisting code actually does what we want here. + local tmpesp="$(mktemp -d)" + mount_esp "${outdev}" "${tmpesp}" + + trap "umount_esp" EXIT + + # Edit boot device default for legacy. + # Support both vboot and regular boot. + sudo sed -i "s/chromeos-usb.A/chromeos-hd.A/" \ + "${tmpesp}"/syslinux/default.cfg + sudo sed -i "s/chromeos-vusb.A/chromeos-vhd.A/" \ + "${tmpesp}"/syslinux/default.cfg + + # Edit root fs default for legacy + # Somewhat safe as ARM does not support syslinux, I believe. + sudo sed -i "s'HDROOTA'/dev/sda3'g" "${tmpesp}"/syslinux/root.A.cfg + + trap - EXIT + + umount_esp + echo "Generated Image at $outdev." echo "Done" }