linuxOS_AP06/device/rockchip/common/scripts/gen-extra-parts-config.sh
2025-06-03 12:28:32 +08:00

179 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# Usage: ./gen-part-config.sh <max extra partition num> <default extra partition num>
RK_EXTRA_PARTITION_MAX_NUM=${1:-5}
RK_EXTRA_PARTITION_NUM=${2:-2}
cat <<EOF
# Auto generated by $0${@:+ $@}
comment "Extra partitions depends on rootfs system"
depends on !RK_ROOTFS
menu "Extra partitions (oem, userdata, etc.)"
depends on RK_ROOTFS
if RK_UBI && RK_EXTRA_PARTITION_NUM > 0
config RK_UBI_PAGE_SIZE
hex "ubi image page size (B)"
default "0x800"
config RK_UBI_BLOCK_SIZE
hex "ubi image block size (B)"
default "0x20000"
config RK_FLASH_SIZE
int "size of flash storage (M)"
default "1024"
endif # ubi
config RK_EXTRA_PARTITION_NUM
int "number of extra partitions"
range 0 $RK_EXTRA_PARTITION_MAX_NUM
default $RK_EXTRA_PARTITION_NUM
EOF
unset RK_EXTRA_PARTITIONS
for i in $(seq 1 $RK_EXTRA_PARTITION_MAX_NUM); do
cat <<EOF
menu "Extra partition $i"
depends on RK_EXTRA_PARTITION_NUM > $(( $i - 1 ))
config RK_EXTRA_PARTITION_${i}_NAME
string "partition name"
EOF
case $i in
1)
echo -e "\tdefault \"userdata\" if RK_EXTRA_PARTITION_NUM = 1"
echo -e "\tdefault \"oem\"" ;;
2) echo -e "\tdefault \"userdata\"" ;;
esac
cat <<EOF
config RK_EXTRA_PARTITION_${i}_DEV
string "device identifier"
depends on !RK_EXTRA_PARTITION_${i}_BUILTIN
default "auto"
help
Device identifier, like <device node> or PARTLABEL=<partition name>
or <partition name> or "auto".
config RK_EXTRA_PARTITION_${i}_MOUNTPOINT
string "mountpoint"
default "auto"
help
Mountpoint, set "auto" for "/<name>".
if !RK_EXTRA_PARTITION_${i}_BUILTIN
config RK_EXTRA_PARTITION_${i}_FSTYPE
string
default "ubifs" if RK_EXTRA_PARTITION_${i}_UBIFS
default "ext4" if RK_EXTRA_PARTITION_${i}_EXT4
default "ext2" if RK_EXTRA_PARTITION_${i}_EXT2
default "msdos" if RK_EXTRA_PARTITION_${i}_MSDOS
default "ntfs" if RK_EXTRA_PARTITION_${i}_NTFS
default "btrfs" if RK_EXTRA_PARTITION_${i}_BTRFS
default "f2fs" if RK_EXTRA_PARTITION_${i}_F2FS
default "erofs" if RK_EXTRA_PARTITION_${i}_EROFS
default "squashfs" if RK_EXTRA_PARTITION_${i}_SQUASHFS
default "jffs2" if RK_EXTRA_PARTITION_${i}_JFFS2
choice
prompt "filesystem type"
config RK_EXTRA_PARTITION_${i}_UBIFS
bool "ubifs"
depends on RK_UBI
config RK_EXTRA_PARTITION_${i}_EXT4
bool "ext4"
config RK_EXTRA_PARTITION_${i}_EXT2
bool "ext2"
config RK_EXTRA_PARTITION_${i}_MSDOS
bool "msdos(fat32)"
config RK_EXTRA_PARTITION_${i}_NTFS
bool "ntfs"
config RK_EXTRA_PARTITION_${i}_BTRFS
bool "btrfs"
config RK_EXTRA_PARTITION_${i}_F2FS
bool "f2fs"
config RK_EXTRA_PARTITION_${i}_EROFS
bool "erofs"
config RK_EXTRA_PARTITION_${i}_SQUASHFS
bool "squashfs"
config RK_EXTRA_PARTITION_${i}_JFFS2
bool "jffs2"
endchoice # fstype
config RK_EXTRA_PARTITION_${i}_OPTIONS
string "mount options"
default "defaults"
endif # !builtin
config RK_EXTRA_PARTITION_${i}_SRC
string "source dirs"
EOF
if [ $i -lt 3 ]; then
cat << EOF
default "empty" if RK_CHIP_FAMILY = "rk3308"
default "normal"
help
Source dirs, each of them can be either of absolute path(/<dir>) or
relative to <RK_CHIP_DIR>|<RK_EXTRA_PARTS_DIR> or relative to
(<RK_CHIP_DIR>|<RK_EXTRA_PARTS_DIR>)/<partition name>.
EOF
fi
cat <<EOF
config RK_EXTRA_PARTITION_${i}_SIZE
string "image size (size(M|K)|auto(0)|max)"
default "auto"
help
Size of image.
Set "auto" to auto detect.
Set "max" to use maxium partition size in parameter file.
config RK_EXTRA_PARTITION_${i}_BUILTIN
bool "merged into rootfs"
help
Virtual parition that merged into rootfs.
config RK_EXTRA_PARTITION_${i}_FEATURES
string
default "\${RK_EXTRA_PARTITION_${i}_BUILTIN:+builtin}"
config RK_EXTRA_PARTITION_${i}_STR
string
default "\${RK_EXTRA_PARTITION_${i}_DEV:-auto}:\$RK_EXTRA_PARTITION_${i}_NAME:\$RK_EXTRA_PARTITION_${i}_MOUNTPOINT:\$RK_EXTRA_PARTITION_${i}_FSTYPE:\$RK_EXTRA_PARTITION_${i}_OPTIONS:\${RK_EXTRA_PARTITION_${i}_SRC// /,}:\$RK_EXTRA_PARTITION_${i}_SIZE:\$RK_EXTRA_PARTITION_${i}_FEATURES"
endmenu # Extra partition $i
EOF
RK_EXTRA_PARTITIONS="${RK_EXTRA_PARTITIONS:+${RK_EXTRA_PARTITIONS}@}\$RK_EXTRA_PARTITION_${i}_STR"
done
cat << EOF
config RK_EXTRA_PARTITION_STR
string
default "$RK_EXTRA_PARTITIONS"
endmenu # Extra partitions
EOF