1
0
Fork 0

Try to fix partitioning

This commit is contained in:
Braiden Vasco 2017-09-24 17:54:28 +00:00
parent bd22a08a36
commit 38835fe039
4 changed files with 23 additions and 117 deletions

View file

@ -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
View file

@ -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)"

View file

@ -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"

View file

@ -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