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

Unified Diff: image_to_vm.sh

Issue 3189018: Clean up cros_make_image_bootable and image_to_vm (Closed) Base URL: http://src.chromium.org/git/crosutils.git
Patch Set: make sure unverified syslinux gets the root updated too Created 10 years, 4 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
« no previous file with comments | « bin/cros_make_image_bootable ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: image_to_vm.sh
diff --git a/image_to_vm.sh b/image_to_vm.sh
index f1b977705b23449c58e9e6af27a65b07d2311797..cf665959e82165cde0f2c6a86d9b22b75cec0fe1 100755
--- a/image_to_vm.sh
+++ b/image_to_vm.sh
@@ -115,8 +115,7 @@ fi
# Memory units are in MBs
DEFAULT_MEM="1024"
-TEMP_IMAGE="${IMAGES_DIR}/temp_image.img"
-
+TEMP_IMG="$(dirname ${SRC_IMAGE})/vm_temp_image.bin"
# If we're not building for VMWare, don't build the vmx
if [ "${FLAGS_format}" != "vmware" ]; then
@@ -189,43 +188,18 @@ else
sudo python ./fixup_image_for_qemu.py --mounted_dir="${TEMP_MNT}" \
--enable_tablet=false
fi
-# Remount read-only so that when we call setimage, it will recreate correct
-# boot hashes for verifying the rootfs integrity. This is a bit of a cheat
-# but it will have to do. We don't assume legacy bootloaders are secure so
-# we update the hash too, but the hash in part_2 doesn't change which would
-# cause failures on a Chrome OS boot (without re-running build_kernel_image).
-sudo mount -o remount,ro "${TEMP_MNT}"
-sync
-
-# Check if the current image was build with --enable_rootfs_verification
-enable_rootfs_verification=
-if grep -qE '^chromeos-v' "${TEMP_ESP_MNT}"/syslinux/default.cfg; then
- enable_rootfs_verification=--enable_rootfs_verification
-fi
-# Update the bootloader and verified hashes for the given rootfs in the
-# vm and fixup changes.
-DST_DEV=/dev/sda
-BOOT_SLOT=A
-syslinux_cfg="${TEMP_MNT}/boot/syslinux/root.${BOOT_SLOT}.cfg"
-grub_cfg="${TEMP_MNT}/boot/efi/boot/grub.cfg"
-sudo "${TEMP_MNT}"/usr/sbin/chromeos-setimage ${BOOT_SLOT} \
- --dst=${DST_DEV} --run_as_root \
- --update_syslinux_cfg="${syslinux_cfg}" \
- --update_grub_cfg="${grub_cfg}" \
- --rootfs_image="${TEMP_ROOTFS}" \
- --esp_mounted_at="${TEMP_ESP_MNT}" \
- --kernel_image="${TEMP_KERN}" \
- --update_vmlinuz=${TEMP_MNT}/boot/vmlinuz \
- ${enable_rootfs_verification}
+# Modify the unverified usb template which uses a default usb_disk of sdb3
+sudo sed -i -e 's/sdb3/sda3/g' "${TEMP_MNT}/boot/syslinux/usb.A.cfg"
+# Unmount everything prior to building a final image
+sync
trap - INT TERM EXIT
cleanup
# Make 3 GiB output image
-TEMP_IMG=$(mktemp)
# TOOD(adlr): pick a size that will for sure accomodate the partitions
-sudo dd if=/dev/zero of="${TEMP_IMG}" bs=1 count=1 \
+dd if=/dev/zero of="${TEMP_IMG}" bs=1 count=1 \
seek=$((${FLAGS_vdisk_size} * 1024 * 1024 - 1))
# Set up the partition table
@@ -242,6 +216,14 @@ dd if="${TEMP_KERN}" of="${TEMP_IMG}" conv=notrunc bs=512 \
dd if="${TEMP_ESP}" of="${TEMP_IMG}" conv=notrunc bs=512 \
seek="${START_ESP}"
+# Make the built-image bootable and ensure that the legacy default usb boot
+# uses /dev/sda instead of /dev/sdb3.
+# NOTE: The TEMP_IMG must live in the same image dir as the original image
+# to operate automatically below.
+${SCRIPTS_DIR}/bin/cros_make_image_bootable $(dirname "${TEMP_IMG}") \
+ $(basename "${TEMP_IMG}") \
+ --usb_disk /dev/sda3
+
echo Creating final image
# Convert image to output format
if [ "${FLAGS_format}" = "virtualbox" -o "${FLAGS_format}" = "qemu" ]; then
« no previous file with comments | « bin/cros_make_image_bootable ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698