1
0
mirror of https://github.com/home-assistant/operating-system.git synced 2026-04-20 00:39:48 +01:00

Allow easy move data partition (#651)

* Allow easy move data partition

* Cleanup handling systemd

* Improve handling

* fix pipeline

* pipeline

* fix shell handling

* fix scripts

* Add bin folder

* fix lint

* Fix service handling

* Fix loading

* hide output

* Fix handling
This commit is contained in:
Pascal Vizeli
2020-05-06 00:00:28 +02:00
committed by GitHub
parent ba9d1bac1e
commit b3530d1ce1
49 changed files with 185 additions and 44 deletions

View File

@@ -0,0 +1,68 @@
#!/bin/sh
# shellcheck disable=SC2039
# ==============================================================================
# HassOS data partition handler
# ==============================================================================
set -e
OPTION_FILE=/mnt/overlay/data.opt
# New data partition exits
if ! [ -e "${OPTION_FILE}" ]; then
echo "[INFO] No data option found"
exit 0
else
NEW_DEVICE_ROOT="$(cat ${OPTION_FILE})"
rm ${OPTION_FILE}
fi
# Get device information
OLD_DEVICE_CHILD="$(findfs LABEL="hassos-data")"
OLD_DEVICE_ROOT="/dev/$(lsblk -no pkname "${OLD_DEVICE_CHILD}")"
OLD_PART_NUM="${OLD_DEVICE_CHILD: -1}"
# Create new partition
echo "[INFO] Create new hassos-data partition"
sgdisk -o "${NEW_DEVICE_ROOT}"
sgdisk \
-n "0:0:0" \
-c "0:hassos-data" \
-t "0:0FC63DAF-8483-4772-8E79-3D69D8477DE4" \
-u "0:a52a4597-fa3a-4851-aefd-2fbe9f849079" \
"${NEW_DEVICE_ROOT}"
sgdisk -v "${NEW_DEVICE_ROOT}"
partx -u "${NEW_DEVICE_ROOT}"
NEW_DEVICE_CHILD="$(fdisk -l "${NEW_DEVICE_ROOT}" | grep '^/dev' | cut -d' ' -f1 | head -n 1)"
echo "[INFO] Move hassos-data from ${OLD_DEVICE_CHILD} to ${NEW_DEVICE_CHILD}"
if ! dd if="${OLD_DEVICE_CHILD}" of="${NEW_DEVICE_CHILD}" status=none; then
echo "[ERROR] Data copy fails!"
# Reset new data partition
sgdisk -o "${NEW_DEVICE_ROOT}"
partx -u "${NEW_DEVICE_ROOT}"
exit 1
fi
echo "[INFO] Remove old hassos-data partition ${OLD_PART_NUM} / ${OLD_DEVICE_ROOT}"
if sfdisk -dq "${OLD_DEVICE_ROOT}" | grep -q 'label: gpt'; then
sgdisk -d "${OLD_PART_NUM}" "${OLD_DEVICE_ROOT}"
sgdisk -v "${OLD_DEVICE_ROOT}"
else
sfdisk --delete "${OLD_PART_NUM}" "${OLD_DEVICE_ROOT}" --force
sfdisk -V "${OLD_DEVICE_ROOT}"
fi
echo "[INFO] fix filesystem & layout"
# Fix filesystem
e2fsck -y "${NEW_DEVICE_CHILD}"
resize2fs -f "${NEW_DEVICE_CHILD}"
# Fix partition layout
partx -d "${OLD_DEVICE_CHILD}"
partx -u "${NEW_DEVICE_ROOT}"
echo "[INFO] Finish hassos data movement"