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

Unified Diff: src/scripts/image_to_usb.sh

Issue 848002: Changes to enable dev in stateful partition for usb and startup (Closed)
Patch Set: Add legacy support Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/scripts/file_copy.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/scripts/image_to_usb.sh
diff --git a/src/scripts/image_to_usb.sh b/src/scripts/image_to_usb.sh
index bad72715f70718334112d006411bb931e8e0a148..1724e5ecea92d1692273f0aaf9b6cc64eb912d57 100755
--- a/src/scripts/image_to_usb.sh
+++ b/src/scripts/image_to_usb.sh
@@ -79,6 +79,29 @@ FLAGS_to=`eval readlink -f ${FLAGS_to}`
# Uses this rootfs image as the source image to copy
ROOTFS_IMAGE="${FLAGS_from}/rootfs.image"
+PART_SIZE=$(stat -c%s "${ROOTFS_IMAGE}") # Bytes
+
+# Setup stateful partition variables
+STATEFUL_IMG="${FLAGS_from}/stateful_partition.image"
+STATEFUL_DIR="${FLAGS_from}/stateful_partition"
+
+# TODO(sosa@chromium.org) - Remove legacy support.
+if [ ! -f "${STATEFUL_IMG}" ] ; then
+ echo "WARNING! Stateful partition not found. Creating clean stateful"
+ STATEFUL_LOOP_DEV=$(sudo losetup -f)
+ if [ -z "${STATEFUL_LOOP_DEV}" ] ; then
+ echo "No free loop device. Free up a loop device or reboot. exiting. "
+ exit 1
+ fi
+ set -x
+ dd if=/dev/zero of="${STATEFUL_IMG}" bs=1 count=1 \
+ seek=$(( (${PART_SIZE} - 1) ))
+ set +x
+ sudo losetup "$STATEFUL_LOOP_DEV" "$STATEFUL_IMG"
+ sudo mkfs.ext3 "$STATEFUL_LOOP_DEV"
+ sudo tune2fs -L "C-STATE" -c 0 -i 0 "$STATEFUL_LOOP_DEV"
+ sudo losetup -d "${STATEFUL_LOOP_DEV}"
+fi
# Modifies image for test if requested
if [ ${FLAGS_test_image} -eq ${FLAGS_TRUE} ] ; then
@@ -96,12 +119,18 @@ function do_cleanup {
sudo losetup -d "${LOOP_DEV}"
}
-STATEFUL_DIR=${FLAGS_from}/stateful_partition
-mkdir -p "${STATEFUL_DIR}"
-
function install_autotest {
if [ -d ${AUTOTEST_SRC} ]
then
+ local stateful_loop_dev=$(sudo losetup -f)
+ if [ -z "${stateful_loop_dev}" ]
+ then
+ echo "No free loop device. Free up a loop device or reboot. exiting."
+ exit 1
+ fi
+
+ sudo mount "${stateful_loop_dev}" "${STATEFUL_DIR}"
+
echo -ne "Install autotest into stateful partition..."
local autotest_client="/home/autotest-client"
sudo mkdir -p "${STATEFUL_DIR}${autotest_client}"
@@ -109,8 +138,9 @@ function install_autotest {
"${STATEFUL_DIR}${autotest_client}"
sudo chmod 755 "${STATEFUL_DIR}${autotest_client}"
sudo chown -R 1000:1000 "${STATEFUL_DIR}${autotest_client}"
- echo "Done."
- sudo umount "${STATEFUL_DIR}"
+
+ sudo umount ${STATEFUL_DIR}
+ sudo losetup -d "${stateful_loop_dev}"
else
echo "/usr/local/autotest under ${DEFAULT_CHROOT_DIR} is not installed."
echo "Please call make_autotest.sh inside chroot first."
@@ -157,37 +187,23 @@ then
! sudo umount "$i"
done
sleep 3
-
- PART_SIZE=$(stat -c%s "${ROOTFS_IMAGE}") # Bytes
-
- echo "Copying root fs..."
- sudo "${SCRIPTS_DIR}"/file_copy.py \
- if="${ROOTFS_IMAGE}" \
- of="${FLAGS_to}" bs=4M \
- seek_bytes=$(( (${PART_SIZE} * 2) + 512 ))
-
- # Set up loop device
- LOOP_DEV=$(sudo losetup -f)
- if [ -z "${LOOP_DEV}" ]
- then
- echo "No free loop device. Free up a loop device or reboot. exiting."
- exit 1
- fi
-
- trap do_cleanup EXIT
-
- echo "Creating stateful partition..."
- sudo losetup -o 512 "${LOOP_DEV}" "${FLAGS_to}"
- sudo mkfs.ext3 -F -b 4096 -L C-STATE "${LOOP_DEV}" $(( ${PART_SIZE} / 4096 ))
- if [ ${FLAGS_install_autotest} -eq ${FLAGS_TRUE} ]
- then
- sudo mount "${LOOP_DEV}" "${STATEFUL_DIR}"
+
+ if [ ${FLAGS_install_autotest} -eq ${FLAGS_TRUE} ] ; then
install_autotest
fi
- sync
- sudo losetup -d "${LOOP_DEV}"
- sync
+
+ # Write stateful partition to first partition.
+ echo "Copying stateful partition ..."
+ sudo "${SCRIPTS_DIR}"/file_copy.py \
+ if="${STATEFUL_IMG}" of="${FLAGS_to}" bs=4M \
+ seek_bytes=512
+ # Write root fs to third partition.
+ echo "Copying root fs partition ..."
+ sudo "${SCRIPTS_DIR}"/file_copy.py \
+ if="${ROOTFS_IMAGE}" of="${FLAGS_to}" bs=4M \
+ seek_bytes=$(( (${PART_SIZE} * 2) + 512 ))
+
trap - EXIT
if [ ${FLAGS_copy_kernel} -eq ${FLAGS_TRUE} ]
@@ -209,15 +225,7 @@ else
PART_SIZE=$(stat -c%s "${ROOTFS_IMAGE}")
- echo "Creating empty stateful partition"
- dd if=/dev/zero of="${FLAGS_from}/stateful_partition.image" bs=1 count=1 \
- seek=$((${PART_SIZE} - 1))
- mkfs.ext3 -F -L C-STATE "${FLAGS_from}/stateful_partition.image"
-
- if [ ${FLAGS_install_autotest} -eq ${FLAGS_TRUE} ]
- then
- sudo mount -o loop "${FLAGS_from}/stateful_partition.image" \
- "${STATEFUL_DIR}"
+ if [ ${FLAGS_install_autotest} -eq ${FLAGS_TRUE} ] ; then
install_autotest
fi
« no previous file with comments | « src/scripts/file_copy.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698