Try to fix partitioning
This commit is contained in:
parent
bd22a08a36
commit
38835fe039
4 changed files with 23 additions and 117 deletions
26
build.sh
26
build.sh
|
@ -315,9 +315,29 @@ rm -f "$IMG_FILE"
|
|||
BOOT_SIZE=$(du --apparent-size -s "$ROOTFS_DIR/boot" --block-size=1 | cut -f 1)
|
||||
TOTAL_SIZE=$(du --apparent-size -s "$ROOTFS_DIR" --block-size=1 | cut -f 1)
|
||||
|
||||
ROOT_SIZE=$((TOTAL_SIZE - BOOT_SIZE))
|
||||
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024)))
|
||||
|
||||
$SCRIPTS/prepare-image "$IMG_FILE" $((BOOT_SIZE * 2)) $((ROOT_SIZE + 800 * 1024 * 1024))
|
||||
truncate -s $IMG_SIZE "$IMG_FILE"
|
||||
|
||||
fdisk -H 255 -S 63 "$IMG_FILE" <<EOF
|
||||
o
|
||||
n
|
||||
|
||||
|
||||
8192
|
||||
+$((BOOT_SIZE * 2 / 512))
|
||||
p
|
||||
t
|
||||
c
|
||||
n
|
||||
|
||||
|
||||
8192
|
||||
|
||||
|
||||
p
|
||||
w
|
||||
EOF
|
||||
|
||||
PARTED_OUT=$(parted -s "$IMG_FILE" unit b print)
|
||||
|
||||
|
@ -349,7 +369,7 @@ rsync -aHAXx "$ROOTFS_DIR/" "$MOUNT_DIR/"
|
|||
##
|
||||
# Store file system UUIDs to configuration files.
|
||||
#
|
||||
IMGID=$($SCRIPTS/image-id "$IMG_FILE")
|
||||
IMGID="$(fdisk -l "$IMG_FILE" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')"
|
||||
|
||||
BOOT_PARTUUID="$IMGID-01"
|
||||
ROOT_PARTUUID="$IMGID-02"
|
||||
|
|
1
run
1
run
|
@ -13,7 +13,6 @@ export ROOTFS_DIR="$BASE_DIR/rootfs"
|
|||
export MOUNT_DIR="$BASE_DIR/mnt"
|
||||
export KEYS_DIR="$BASE_DIR/keys"
|
||||
export FILES_DIR="$BASE_DIR/files"
|
||||
export SCRIPTS="$BASE_DIR/scripts"
|
||||
|
||||
export IMG_DATE="$(date +%Y-%m-%d)"
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
IMG_FILE="$1"
|
||||
|
||||
if [ ! -f "$IMG_FILE" ]; then
|
||||
echo >&2 "ERROR: $IMG_FILE is not a file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RESULT="$(fdisk -l "$IMG_FILE" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')"
|
||||
|
||||
if [ -z "$RESULT" ]; then
|
||||
echo >&2 "ERROR: $IMG_FILE is not an image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$RESULT"
|
|
@ -1,96 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
BLOCK_SIZE=512
|
||||
RESERVED_BLOCKS=8192
|
||||
|
||||
IMG_FILE="$1"
|
||||
BOOT_SIZE="$2"
|
||||
ROOT_SIZE="$3"
|
||||
|
||||
if [ -z "$IMG_FILE" ]; then
|
||||
echo >&2 "ERROR: image file is not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$BOOT_SIZE" ]; then
|
||||
echo >&2 "ERROR: boot partition size is not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$(echo "$BOOT_SIZE" | sed 's|[0-9]||g')" ]; then
|
||||
echo >&2 "ERROR: invalid boot partition size '$BOOT_SIZE'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$BOOT_SIZE" -le 0 ]; then
|
||||
echo >&2 "ERROR: invalid boot partition size '$BOOT_SIZE'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$ROOT_SIZE" ]; then
|
||||
echo >&2 "ERROR: root partition size is not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$(echo "$ROOT_SIZE" | sed 's|[0-9]||g')" ]; then
|
||||
echo >&2 "ERROR: invalid root partition size '$ROOT_SIZE'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$ROOT_SIZE" -le 0 ]; then
|
||||
echo >&2 "ERROR: invalid root partition size '$ROOT_SIZE'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -e "$IMG_FILE" ]; then
|
||||
echo >&2 "ERROR: file '$IMG_FILE' already exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Requested boot partition size: $BOOT_SIZE"
|
||||
echo "Requested root partition size: $ROOT_SIZE"
|
||||
|
||||
if [ $((BOOT_SIZE % BLOCK_SIZE)) -ne 0 ]; then
|
||||
BOOT_SIZE=$((BOOT_SIZE + BLOCK_SIZE - BOOT_SIZE % BLOCK_SIZE))
|
||||
fi
|
||||
|
||||
if [ $((ROOT_SIZE % BLOCK_SIZE)) -ne 0 ]; then
|
||||
ROOT_SIZE=$((ROOT_SIZE + BLOCK_SIZE - ROOT_SIZE % BLOCK_SIZE))
|
||||
fi
|
||||
|
||||
echo "Aligned boot partition size: $BOOT_SIZE"
|
||||
echo "Aligned root partition size: $ROOT_SIZE"
|
||||
|
||||
RESERVED_SIZE=$((RESERVED_BLOCKS * BLOCK_SIZE))
|
||||
|
||||
echo "Reserved blocks: $RESERVED_BLOCKS"
|
||||
echo "Reserved blocks size: $RESERVED_SIZE"
|
||||
|
||||
TOTAL_SIZE=$((RESERVED_SIZE + BOOT_SIZE + ROOT_SIZE))
|
||||
|
||||
echo "Total size: $TOTAL_SIZE"
|
||||
|
||||
truncate -s $TOTAL_SIZE "$IMG_FILE"
|
||||
|
||||
BOOT_BLOCKS=$((BOOT_SIZE / BLOCK_SIZE))
|
||||
ROOT_BLOCKS=$((ROOT_SIZE / BLOCK_SIZE))
|
||||
|
||||
echo "Boot partition blocks count: $BOOT_BLOCKS"
|
||||
echo "Root partition blocks count: $ROOT_BLOCKS"
|
||||
|
||||
fdisk -H 255 -S 63 "$IMG_FILE" > /dev/null <<EOF
|
||||
o
|
||||
n
|
||||
p
|
||||
1
|
||||
$RESERVED_BLOCKS
|
||||
+$((BOOT_BLOCKS - 1))
|
||||
t
|
||||
c
|
||||
n
|
||||
p
|
||||
2
|
||||
$((RESERVED_BLOCKS + BOOT_BLOCKS))
|
||||
+$((ROOT_BLOCKS - 1))
|
||||
w
|
||||
EOF
|
Reference in a new issue