Added empty ext3 filesystem initialization for OEM partner partition.

BUG=http://crosbug.com/3828
TEST=When mounted, /dev/sd8 (OEM partition) has a valid empty filesystem on it.

Review URL: http://codereview.chromium.org/2867030
This commit is contained in:
Denis Romanov 2010-06-29 04:23:53 +04:00
parent 5cf288fb1c
commit 110615446e
2 changed files with 48 additions and 6 deletions

View File

@ -97,6 +97,12 @@ if [ ! -s ${STATEFUL_IMG} ]; then
exit 1
fi
OEM_IMG="${IMAGEDIR}/partner_partition.image"
if [[ ! -s ${OEM_IMG} ]]; then
error "Can't find ${OEM_IMG}"
exit 1
fi
ESP_IMG="${IMAGEDIR}/esp.image"
if [ ! -s ${ESP_IMG} ]; then
error "Can't find ${ESP_IMG}"
@ -142,6 +148,9 @@ echo "Copying stateful partition..."
$sudo dd if=${STATEFUL_IMG} of=${OUTDEV} conv=notrunc bs=512 \
seek=${START_STATEFUL}
echo "Copying OEM partition..."
$sudo dd if=${OEM_IMG} of=${OUTDEV} conv=notrunc bs=512 seek=${START_OEM}
echo "Copying kernel..."
$sudo dd if=${KERNEL_IMG} of=${OUTDEV} conv=notrunc bs=512 seek=${START_KERN_A}

View File

@ -111,11 +111,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
@ -187,6 +191,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}"
}
@ -199,6 +208,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
@ -363,14 +376,32 @@ create_base_image() {
STATEFUL_SIZE_BYTES=$((1024 * 1024 * ${FLAGS_statefulfs_size}))
dd if=/dev/zero of="${STATEFUL_FS_IMG}" bs=1 count=1 \
seek=$((STATEFUL_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.
@ -535,6 +566,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}"
# Preserve old images by copying them forward for --preserve.
@ -571,8 +603,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}"