diff --git a/lib/functions/image/partitioning.sh b/lib/functions/image/partitioning.sh index 68d7ca9ecd..3ef09e1edd 100644 --- a/lib/functions/image/partitioning.sh +++ b/lib/functions/image/partitioning.sh @@ -223,17 +223,22 @@ function prepare_partitions() { # Root filesystem partition if [[ -n "$rootpart" ]]; then # dos: Linux - # gpt: Linux root + # gpt: Linux root (or EFI System for Rockchip UFS: For some reason uboot expects it to be EFI System else the SBC crashes) if [[ "$IMAGE_PARTITION_TABLE" != "gpt" ]]; then local type="83" else - # Linux root has a different Type-UUID for every architecture - # See https://uapi-group.org/specifications/specs/discoverable_partitions_specification/ - # The ${PARTITION_TYPE_UUID_ROOT} variable is defined in each architecture file (e.g. config/sources/arm64.conf) - if [[ -n "${PARTITION_TYPE_UUID_ROOT}" ]]; then - local type="${PARTITION_TYPE_UUID_ROOT}" + # Special case: Use EFI System type for rk35xx with 4096 sector size + if [[ "$BOARDFAMILY" == "rk35xx" && "$SECTOR_SIZE" == "4096" ]]; then + local type="C12A7328-F81F-11D2-BA4B-00A0C93EC93B" # EFI System else - exit_with_error "Missing 'PARTITION_TYPE_UUID_ROOT' variable while partitioning the root filesystem!" + # Linux root has a different Type-UUID for every architecture + # See https://uapi-group.org/specifications/specs/discoverable_partitions_specification/ + # The ${PARTITION_TYPE_UUID_ROOT} variable is defined in each architecture file (e.g. config/sources/arm64.conf) + if [[ -n "${PARTITION_TYPE_UUID_ROOT}" ]]; then + local type="${PARTITION_TYPE_UUID_ROOT}" + else + exit_with_error "Missing 'PARTITION_TYPE_UUID_ROOT' variable while partitioning the root filesystem!" + fi fi fi # No 'size' argument means "expand as much as possible"