This commit is contained in:
Miguel Fuertes committed 2025-10-07 11:52:57 +02:00
1 parent 75efb4ee67
commit 15a0f730b0
1 file changed
+28 -30
+28 -30
View File
@@ -1,7 +1,6 @@
#!/bin/sh -e
# mk_gpt_both0.sh
# - Usa TOT_SECTORS=7569408 (sectores lógicos de 512B) para fijar last-lba y el header GPT de respaldo.
# - Para obtener TOT_SECTORS automáticamente desde EDL:
# Creates GPT table with fixed TOT_SECTORS=7569408 (512B logical sectors)
# To get TOT_SECTORS automatically from EDL:
# HEX=$(edl printgpt 2>&1 | sed -n 's/.*sectors:\(0x[0-9A-Fa-f]\+\).*/\1/p' | tail -n1)
# TOT_SECTORS=$((HEX))
@@ -9,29 +8,29 @@ OUTFILE=${1:-gpt_both0.bin}
TMPDIR=$(mktemp -d)
IMG="${TMPDIR}/gpt.img"
# Tamaño total en sectores de 512B (aportado)
# Total size in 512B sectors
TOT_SECTORS=7569408
# GPT: first-lba y last-lba
# GPT boundaries
FIRST_LBA=34
LAST_LBA=$((TOT_SECTORS - 34))
# rootfs 128 MiB -> 128*1024*1024/512 = 262144 sectores
# rootfs: 128 MiB = 262144 sectors
ROOTFS_START=348194
ROOTFS_SIZE=262144
ROOTFS_END=$((ROOTFS_START + ROOTFS_SIZE - 1))
# rootfs_data ocupa el resto hasta last-lba
# rootfs_data: remaining space
ROOTFSDATA_START=$((ROOTFS_END + 1))
ROOTFSDATA_SIZE=$((LAST_LBA - ROOTFSDATA_START + 1))
# Comprobaciones básicas
[ ${ROOTFSDATA_SIZE} -gt 0 ] || { echo "ERROR: No hay espacio para rootfs_data"; exit 1; }
# Validation
[ ${ROOTFSDATA_SIZE} -gt 0 ] || { echo "ERROR: No space for rootfs_data"; exit 1; }
# Crear imagen con el tamaño exacto
# Create image with exact size
truncate -s $((TOT_SECTORS * 512)) "${IMG}"
# Tabla GPT vía heredoc directa a sfdisk
# Generate GPT table
sfdisk "${IMG}" <<EOF
label: gpt
label-id: DB708ACF-2E04-8DE2-BAFE-30C9B26444C5
@@ -40,29 +39,28 @@ first-lba: ${FIRST_LBA}
last-lba: ${LAST_LBA}
sector-size: 512
gpt.img1 : start= 4096, size= 2, type=57B90A16-22C9-E33B-8F5D-0E81686A68CB, name="fsc"
gpt.img2 : start= 4098, size= 3072, type=638FF8E2-22C9-E33B-8F5D-0E81686A68CB, name="fsg"
gpt.img3 : start= 7170, size= 131072, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="modem"
gpt.img4 : start= 138242, size= 3072, type=EBBEADAF-22C9-E33B-8F5D-0E81686A68CB, name="modemst1"
gpt.img5 : start= 141314, size= 3072, type=0A288B1F-22C9-E33B-8F5D-0E81686A68CB, name="modemst2"
gpt.img6 : start= 144386, size= 65536, type=6C95E238-E343-4BA8-B489-8681ED22AD0B, name="persist"
gpt.img7 : start= 209922, size= 32, type=303E6AC3-AF15-4C54-9E9B-D9A8FBECF401, name="sec"
gpt.img8 : start= 209954, size= 1024, type=E1A6A689-0C8D-4CC6-B4E8-55A4320FBD8A, name="hyp"
gpt.img9 : start= 210978, size= 1024, type=098DF793-D712-413D-9D4E-89D711772228, name="rpm"
gpt.img10 : start= 212002, size= 1024, type=DEA0BA2C-CBDD-4805-B4F9-F428251C3E98, name="sbl1"
gpt.img11 : start= 213026, size= 2048, type=A053AA7F-40B8-4B1C-BA08-2F68AC71A4F4, name="tz"
gpt.img12 : start= 215074, size= 2048, type=400FFDCD-22E0-47E7-9A23-F16ED9382388, name="aboot"
gpt.img13 : start= 217122, size= 131072, type=20117F86-E985-4357-B9EE-374BC1D8487D, name="boot"
# rootfs 128 MiB fijo
gpt.img1 : start=4096, size=2, type=57B90A16-22C9-E33B-8F5D-0E81686A68CB, name="fsc"
gpt.img2 : start=4098, size=3072, type=638FF8E2-22C9-E33B-8F5D-0E81686A68CB, name="fsg"
gpt.img3 : start=7170, size=131072, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="modem"
gpt.img4 : start=138242, size=3072, type=EBBEADAF-22C9-E33B-8F5D-0E81686A68CB, name="modemst1"
gpt.img5 : start=141314, size=3072, type=0A288B1F-22C9-E33B-8F5D-0E81686A68CB, name="modemst2"
gpt.img6 : start=144386, size=65536, type=6C95E238-E343-4BA8-B489-8681ED22AD0B, name="persist"
gpt.img7 : start=209922, size=32, type=303E6AC3-AF15-4C54-9E9B-D9A8FBECF401, name="sec"
gpt.img8 : start=209954, size=1024, type=E1A6A689-0C8D-4CC6-B4E8-55A4320FBD8A, name="hyp"
gpt.img9 : start=210978, size=1024, type=098DF793-D712-413D-9D4E-89D711772228, name="rpm"
gpt.img10 : start=212002, size=1024, type=DEA0BA2C-CBDD-4805-B4F9-F428251C3E98, name="sbl1"
gpt.img11 : start=213026, size=2048, type=A053AA7F-40B8-4B1C-BA08-2F68AC71A4F4, name="tz"
gpt.img12 : start=215074, size=2048, type=400FFDCD-22E0-47E7-9A23-F16ED9382388, name="aboot"
gpt.img13 : start=217122, size=131072, type=20117F86-E985-4357-B9EE-374BC1D8487D, name="boot"
gpt.img14 : start=${ROOTFS_START}, size=${ROOTFS_SIZE}, type=1B81E7E6-F50D-419B-A739-2AEEF8DA3335, name="rootfs"
# rootfs_data consume el resto útil hasta last-lba
gpt.img15 : start=${ROOTFSDATA_START}, size=${ROOTFSDATA_SIZE}, type=1B81E7E6-F50D-419B-A739-2AEEF8DA3335, name="rootfs_data"
gpt.img15 : start=${ROOTFSDATA_START}, type=1B81E7E6-F50D-419B-A739-2AEEF8DA3335, name="rootfs_data"
EOF
# Construir gpt_both0.bin (primario + entradas + header GPT de respaldo)
# size=${ROOTFSDATA_SIZE},
# Build gpt_both0.bin (primary + entries + backup header)
dd if="${IMG}" of="${OUTFILE}" bs=512 count=34
dd if="${IMG}" bs=512 skip=2 count=32 >> "${OUTFILE}"
dd if="${IMG}" bs=512 skip=$((TOT_SECTORS - 1)) count=1 >> "${OUTFILE}"
echo "OK -> ${OUTFILE}"
echo "Generated: ${OUTFILE}"