#!/bin/sh # SPDX-License-Identifier: GPL-2.0-only # # Generate GPT image for MSM8916 eMMC (7569408 x 512B sectors). # To read TOT_SECTORS from a live device: # HEX=$(edl printgpt 2>&1 | sed -n 's/.*sectors:\(0x[0-9A-Fa-f]\+\).*/\1/p' | tail -n1) # TOT_SECTORS=$((HEX)) set -e OUTFILE=${1:-gpt_both0.bin} TMPDIR=$(mktemp -d) trap 'rm -rf "$TMPDIR"' EXIT IMG="${TMPDIR}/gpt.img" # Total size in 512B sectors TOT_SECTORS=7569408 # GPT boundaries FIRST_LBA=34 LAST_LBA=$((TOT_SECTORS - 34)) # rootfs: 128 MiB = 262144 sectors ROOTFS_START=348194 ROOTFS_SIZE=262144 ROOTFS_END=$((ROOTFS_START + ROOTFS_SIZE - 1)) # rootfs_data: remaining space ROOTFSDATA_START=$((ROOTFS_END + 1)) ROOTFSDATA_SIZE=$((LAST_LBA - ROOTFSDATA_START + 1)) [ ${ROOTFSDATA_SIZE} -gt 0 ] || { echo "ERROR: No space for rootfs_data"; exit 1; } truncate -s $((TOT_SECTORS * 512)) "${IMG}" sfdisk "${IMG}" <> "${OUTFILE}" dd if="${IMG}" bs=512 skip=$((TOT_SECTORS - 1)) count=1 >> "${OUTFILE}" echo "Generated: ${OUTFILE}"