Index: build_image |
diff --git a/build_image b/build_image |
index 078ca2d02d54986e60a4caa5fae08bcd49f0a84b..f6f30eaa7bd23e3509742c2068dcfa4e88f84250 100755 |
--- a/build_image |
+++ b/build_image |
@@ -112,11 +112,15 @@ ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" |
STATEFUL_FS_IMG="${OUTPUT_DIR}/stateful_partition.image" |
STATEFUL_FS_DIR="${OUTPUT_DIR}/stateful_partition" |
+OEM_FS_IMG="${OUTPUT_DIR}/partner_partition.image" |
+OEM_FS_DIR="${OUTPUT_DIR}/partner_partition" |
+ |
ESP_FS_IMG=${OUTPUT_DIR}/esp.image |
ESP_FS_DIR=${OUTPUT_DIR}/esp |
LOOP_DEV= |
STATEFUL_LOOP_DEV= |
+OEM_LOOP_DEV= |
ESP_LOOP_DEV= |
# ${DEV_IMAGE_ROOT} specifies the location of where developer packages will |
@@ -185,6 +189,11 @@ cleanup_stateful_fs_loop() { |
sudo umount -d "${STATEFUL_FS_DIR}" |
} |
+cleanup_oem_fs_loop() { |
+ sudo umount -d "${OEM_FS_DIR}" |
+} |
+ |
+ |
cleanup_esp_loop() { |
sudo umount -d "${ESP_FS_DIR}" |
} |
@@ -197,6 +206,10 @@ cleanup() { |
cleanup_stateful_fs_loop |
fi |
+ if [[ -n "${OEM_LOOP_DEV}" ]]; then |
+ cleanup_oem_fs_loop |
+ fi |
+ |
if [[ -n "${LOOP_DEV}" ]]; then |
cleanup_rootfs_loop |
fi |
@@ -350,14 +363,32 @@ create_base_image() { |
exit 1 |
fi |
dd if=/dev/zero of="${STATEFUL_FS_IMG}" bs=1 count=1 seek=$((ROOT_SIZE_BYTES - 1)) |
+ |
+ # Tune and mount the stateful partition. |
+ UUID=$(uuidgen) |
+ DISK_LABEL="C-STATE" |
sudo losetup "${STATEFUL_LOOP_DEV}" "${STATEFUL_FS_IMG}" |
sudo mkfs.ext3 "${STATEFUL_LOOP_DEV}" |
- sudo tune2fs -L "C-STATE" -U "${UUID}" -c 0 -i 0 \ |
- "${STATEFUL_LOOP_DEV}" |
- |
- # Mount the stateful partition. |
+ sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${STATEFUL_LOOP_DEV}" |
sudo mount "${STATEFUL_LOOP_DEV}" "${STATEFUL_FS_DIR}" |
+ # Create OEM partner partition. |
+ OEM_LOOP_DEV=$(sudo losetup -f) |
+ if [ -z "${OEM_LOOP_DEV}" ] ; then |
+ echo "No free loop device. Free up a loop device or reboot. exiting. " |
+ exit 1 |
+ fi |
+ OEM_SIZE_BYTES=$((1024 * 1024 * 16)) |
+ dd if=/dev/zero of="${OEM_FS_IMG}" bs=1 count=1 seek=$((OEM_SIZE_BYTES - 1)) |
+ |
+ # Tune and mount OEM partner partition. |
+ UUID=$(uuidgen) |
+ DISK_LABEL="C-OEM" |
+ sudo losetup "${OEM_LOOP_DEV}" "${OEM_FS_IMG}" |
+ sudo mkfs.ext3 "${OEM_LOOP_DEV}" |
+ sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${OEM_LOOP_DEV}" |
+ sudo mount "${OEM_LOOP_DEV}" "${OEM_FS_DIR}" |
+ |
# Turn root file system into bootable image. |
if [[ "${ARCH}" = "x86" ]]; then |
# Setup extlinux configuration. |
@@ -574,6 +605,7 @@ EOF |
mkdir -p "${OUTPUT_DIR}" |
mkdir -p "${ROOT_FS_DIR}" |
mkdir -p "${STATEFUL_FS_DIR}" |
+mkdir -p "${OEM_FS_DIR}" |
mkdir -p "${ESP_FS_DIR}" |
create_base_image ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME} |
@@ -603,8 +635,9 @@ fi |
# Clean up temporary files. |
rm -f "${ROOT_FS_IMG}" "${STATEFUL_FS_IMG}" "${OUTPUT_DIR}/vmlinuz.image" \ |
"${ESP_FS_IMG}" "${OUTPUT_DIR}/data4_sign8.keyblock" \ |
- "${OUTPUT_DIR}/key_alg4.vbpubk" "${OUTPUT_DIR}/key_alg8.vbpubk" |
-rmdir "${ROOT_FS_DIR}" "${STATEFUL_FS_DIR}" "${ESP_FS_DIR}" |
+ "${OUTPUT_DIR}/key_alg4.vbpubk" "${OUTPUT_DIR}/key_alg8.vbpubk" \ |
+ "${OEM_FS_IMG}" |
+rmdir "${ROOT_FS_DIR}" "${STATEFUL_FS_DIR}" "${OEM_FS_DIR}" "${ESP_FS_DIR}" |
echo "Done. Image created in ${OUTPUT_DIR}" |
echo "Chromium OS image created as ${PRISTINE_IMAGE_NAME}" |