"modules.img" 6 4M modules_a ext4
"ramdisk.img" 7 4M ramdisk_a ext4
"ramdisk-recovery.img" 8 4M recovery_a ext4
- "hal.img" 10 4M hal ext4
+ "hal.img" 10 4M hal_a ext4
"rootfs.img" 11 4M rootfs_b ext4
"modules.img" 12 4M modules_b ext4
"ramdisk.img" 13 4M ramdisk_b ext4
"ramdisk-recovery.img" 14 4M recovery_b ext4
+ "hal.img" 15 4M hal_b ext4
)
declare -a PART_TABLE_B=(
"rootfs.img" 11 4M rootfs_b ext4
"modules.img" 12 4M modules_b ext4
"ramdisk.img" 13 4M ramdisk_b ext4
"ramdisk-recovery.img" 14 4M recovery_b ext4
+ "hal.img" 15 4M hal_b ext4
)
declare -r -i PART_TABLE_COL=5
fi
if [ $sfdisk_new == 0 ]; then
- echo "$(tput setaf 3)$(tput bold)NOTICE: Your sfidk ${version[0]}.${version[1]} version is too old. It can do unstable behavior!"
- tput sgr 0
- echo ""
-
+ echo "$(tput setaf 3)$(tput bold)NOTICE: Your sfdisk ${version[0]}.${version[1]} version is too old. Update Latest sfdisk!"
+ exit -1
fi
local -r DISK=$DEVICE
local -r RAMDISK_RECOVERY_SZ=32
local -r INFORM_SZ=8
local -r HAL_SZ=256
- local -r RESERVED2_SZ=125
+ local -r RESERVED1_SZ=125
local -r EXTEND_SZ=36
- let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ * 2 - $DATA_SZ - $MODULE_SZ * 2 - $RAMDISK_SZ * 2 - $RAMDISK_RECOVERY_SZ * 2 - $INFORM_SZ - $EXTEND_SZ - $HAL_SZ - $RESERVED2_SZ"
+ let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ * 2 - $DATA_SZ - $MODULE_SZ * 2 - $RAMDISK_SZ * 2 - $RAMDISK_RECOVERY_SZ * 2 - $INFORM_SZ - $EXTEND_SZ - $HAL_SZ * 2 - $RESERVED1_SZ"
local -r BOOT=${PART_TABLE[0 * ${PART_TABLE_COL} + 3]}
local -r ROOTFS_A=${PART_TABLE[1 * ${PART_TABLE_COL} + 3]}
local -r RAMDISK_A=${PART_TABLE[5 * ${PART_TABLE_COL} + 3]}
local -r RAMDISK_RECOVERY_A=${PART_TABLE[6 * ${PART_TABLE_COL} + 3]}
local -r INFORM=inform
- local -r HAL=${PART_TABLE[7 * ${PART_TABLE_COL} + 3]}
+ local -r HAL_A=${PART_TABLE[7 * ${PART_TABLE_COL} + 3]}
local -r ROOTFS_B=${PART_TABLE[8 * ${PART_TABLE_COL} + 3]}
local -r MODULE_B=${PART_TABLE[9 * ${PART_TABLE_COL} + 3]}
local -r RAMDISK_B=${PART_TABLE[10 * ${PART_TABLE_COL} + 3]}
- local -r RAMDISK_RECOVERY_B=${PART_TABLE[10 * ${PART_TABLE_COL} + 3]}
- local -r RESERVED2=reserved2
+ local -r RAMDISK_RECOVERY_B=${PART_TABLE[11 * ${PART_TABLE_COL} + 3]}
+ local -r RESERVED1=reserved1
if [[ $USER_SZ -le 100 ]]
then
- echo "We recommend to use more than 4GB disk"
+ echo "We recommend to use more than 8GB disk"
exit 0
fi
echo " "$RAMDISK_A" " $DISK"7 " $RAMDISK_SZ "MB"
echo " "$RAMDISK_RECOVERY_A" " $DISK"8 " $RAMDISK_RECOVERY_SZ "MB"
echo " "$INFORM" " $DISK"9 " $INFORM_SZ "MB"
- echo " "$HAL" " $DISK"10 " $HAL_SZ "MB"
+ echo " "$HAL_A" " $DISK"10 " $HAL_SZ "MB"
echo " "$ROOTFS_B" " $DISK"11 " $ROOTFS_SZ "MB"
echo " "$MODULE_B" " $DISK"12 " $MODULE_SZ "MB"
echo " "$RAMDISK_B" " $DISK"13 " $RAMDISK_SZ "MB"
echo " "$RAMDISK_RECOVERY_B" " $DISK"14 " $RAMDISK_RECOVERY_SZ "MB"
- echo " "$RESERVED2" " $DISK"15 " $RESERVED2_SZ "MB"
+ echo " "$HAL_B" " $DISK"15 " $HAL_SZ "MB"
+ echo " "$RESERVED1" " $DISK"16 " $RESERVED1_SZ "MB"
local MOUNT_LIST=`mount | grep $DISK | awk '{print $1}'`
for mnt in $MOUNT_LIST
echo "Remove partition table..."
dd if=/dev/zero of=$DISK bs=512 count=32 conv=notrunc
- if [ $sfdisk_new == 1 ]; then
- if [ $support_delete == 1 ]; then
- sfdisk --delete $DISK
- fi
+ if [ $support_delete == 1 ]; then
+ sfdisk --delete $DISK
+ fi
- SCRIPT=""
- for ((idx=0; idx < $PART_TABLE_ROW; idx++)); do
- NR=${PART_TABLE[idx * ${PART_TABLE_COL} + 1]}
- eval "PART_LABEL_NR_${NR}=${PART_TABLE[idx * ${PART_TABLE_COL} + 3]}"
- done
+ SCRIPT=""
+ for ((idx=0; idx < $PART_TABLE_ROW; idx++)); do
+ NR=${PART_TABLE[idx * ${PART_TABLE_COL} + 1]}
+ eval "PART_LABEL_NR_${NR}=${PART_TABLE[idx * ${PART_TABLE_COL} + 3]}"
+ done
+
+ sfdisk $DISK <<-__EOF__
+ label: gpt
+ ${DEVICE}1 : start=4MiB, size=${BOOT_SZ}MiB, type= C12A7328-F81F-11D2-BA4B-00A0C93EC93B, name=${PART_LABEL_NR_1}
+ ${DEVICE}2 : size=${ROOTFS_SZ}MiB, name=${PART_LABEL_NR_2}
+ ${DEVICE}3 : size=${DATA_SZ}MiB, name=${PART_LABEL_NR_3}
+ ${DEVICE}4 : size=${EXTEND_SZ}MiB, name=none
+ ${DEVICE}5 : size=${USER_SZ}MiB, name=${PART_LABEL_NR_5}
+ ${DEVICE}6 : size=${MODULE_SZ}MiB, name=${PART_LABEL_NR_6}
+ ${DEVICE}7 : size=${RAMDISK_SZ}MiB, name=${PART_LABEL_NR_7}
+ ${DEVICE}8 : size=${RAMDISK_RECOVERY_SZ}MiB, name=${PART_LABEL_NR_8}
+ ${DEVICE}9 : size=${INFORM_SZ}MiB, name=inform
+ ${DEVICE}10: size=${HAL_SZ}MiB, name=${PART_LABEL_NR_10}
+ ${DEVICE}11: size=${ROOTFS_SZ}MiB, name=${PART_LABEL_NR_11}
+ ${DEVICE}12: size=${MODULE_SZ}MiB, name=${PART_LABEL_NR_12}
+ ${DEVICE}13: size=${RAMDISK_SZ}MiB, name=${PART_LABEL_NR_13}
+ ${DEVICE}14: size=${RAMDISK_RECOVERY_SZ}MiB, name=${PART_LABEL_NR_14}
+ ${DEVICE}15: size=${HAL_SZ}MiB, name=${PART_LABEL_NR_15}
+ ${DEVICE}16: size=${RESERVED1_SZ}MiB, name=reserved1
+ __EOF__
- sfdisk $DISK <<-__EOF__
- label: gpt
- ${DEVICE}1 : start=4MiB, size=${BOOT_SZ}MiB, type= C12A7328-F81F-11D2-BA4B-00A0C93EC93B, name=${PART_LABEL_NR_1}
- ${DEVICE}2 : size=${ROOTFS_SZ}MiB, name=${PART_LABEL_NR_2}
- ${DEVICE}3 : size=${DATA_SZ}MiB, name=${PART_LABEL_NR_3}
- ${DEVICE}4 : size=${EXTEND_SZ}MiB, name=none
- ${DEVICE}5 : size=${USER_SZ}MiB, name=${PART_LABEL_NR_5}
- ${DEVICE}6 : size=${MODULE_SZ}MiB, name=${PART_LABEL_NR_6}
- ${DEVICE}7 : size=${RAMDISK_SZ}MiB, name=${PART_LABEL_NR_7}
- ${DEVICE}8 : size=${RAMDISK_RECOVERY_SZ}MiB, name=${PART_LABEL_NR_8}
- ${DEVICE}9 : size=${INFORM_SZ}MiB, name=inform
- ${DEVICE}10: size=${HAL_SZ}MiB, name=${PART_LABEL_NR_10}
- ${DEVICE}11: size=${ROOTFS_SZ}MiB, name=${PART_LABEL_NR_11}
- ${DEVICE}12: size=${MODULE_SZ}MiB, name=${PART_LABEL_NR_12}
- ${DEVICE}13: size=${RAMDISK_SZ}MiB, name=${PART_LABEL_NR_13}
- ${DEVICE}14: size=${RAMDISK_RECOVERY_SZ}MiB, name=${PART_LABEL_NR_14}
- ${DEVICE}15: size=${RESERVED2_SZ}MiB, name=reserved2
- __EOF__
- else
- # calculate start positions for alignment for extended partitions
- let "USER_START = 4 + $BOOT_SZ + $ROOTFS_SZ + $DATA_SZ + 1"
- let "MODULE_A_START = $USER_START + $USER_SZ + 1"
- let "RAMDISK_A_START = $MODULE_A_START + $MODULE_SZ + 1"
- let "RAMDISK_RECOVERY_A_START = $RAMDISK_A_START + $RAMDISK_SZ + 1"
- let "INFORM_START = $RAMDISK_RECOVERY_A_START + $RAMDISK_RECOVERY_SZ + 1"
- let "HAL_START = $INFORM_START + $INFORM_SZ + 1"
- let "ROOTFS_B_START = $HAL_START + $HAL_SZ + 1"
- let "MODULE_B_START = $ROOTFS_B_START + $ROOTFS_SZ + 1"
- let "RAMDISK_B_START = $MODULE_B_START + $MODULE_SZ + 1"
- let "RAMDISK_RECOVERY_B_START = $RAMDISK_B_START + $RAMDISK_SZ + 1"
- let "RESERVED2_START = $RAMDISK_RECOVERY_B_START + $RAMDISK_RECOVERY_SZ + 1"
-
- sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
- 4,$BOOT_SZ,0xE,*
- ,$ROOTFS_SZ,,-
- ,$DATA_SZ,,-
- ,,E,-
- $USER_START,$USER_SZ,,-
- $MODULE_A_START,$MODULE_SZ,,-
- $RAMDISK_A_START,$RAMDISK_SZ,,-
- $RAMDISK_RECOVERY_A_START,$RAMDISK_RECOVERY_SZ,,-
- $INFORM_START,$INFORM_SZ,,-
- $HAL_START,$HAL_SZ,,-
- $ROOTFS_B_START,$ROOTFS_SZ,,-
- $MODULE_B_START,$MODULE_SZ,,-
- $RAMDISK_B_START,$RAMDISK_SZ,,-
- $RAMDISK_RECOVERY_B_START,$RAMDISK_RECOVERY_SZ,,-
- $RESERVED2_START,$RESERVED2_SZ,,-
- __EOF__
- fi
for ((idx=0;idx<$PART_TABLE_ROW;idx++)); do
local PART=/dev/`lsblk ${DISK} -o TYPE,KNAME | awk "/^part.*[a-z]${PART_TABLE[$idx * ${PART_TABLE_COL} + 1]}\$/ { print \\\$2 }"`
umount ./mnt_tmp
rmdir mnt_tmp
- local -r PART15=/dev/`lsblk ${DISK} -o TYPE,KNAME | grep part | awk '{ print $2 }' | grep -G "[a-z]15\$"`
- mkfs.ext4 -q ${PART15} -L $RESERVED2 -F
+ local -r PART16=/dev/`lsblk ${DISK} -o TYPE,KNAME | grep part | awk '{ print $2 }' | grep -G "[a-z]16\$"`
+ mkfs.ext4 -q ${PART16} -L $RESERVED1 -F
}
function show_usage () {