summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Affonso Xavier de Morais2014-08-27 17:42:49 +0200
committerMichael Pereira Neves2014-10-28 14:14:50 +0100
commita219790a526046004a2f3c0ec66b3158deb3670f (patch)
tree78f3cdc6e8c56d6a3bb3889001a295653312a54f
parent[partitioner] excluding special cases from the normal mount case. (diff)
downloadtm-scripts-a219790a526046004a2f3c0ec66b3158deb3670f.tar.gz
tm-scripts-a219790a526046004a2f3c0ec66b3158deb3670f.tar.xz
tm-scripts-a219790a526046004a2f3c0ec66b3158deb3670f.zip
[partitioner] SLX_DELETE_PARTITION_TABLE='no' working for GPT partition table type.
-rwxr-xr-xserver/modules/partitioner/opt/openslx/scripts/partitioner188
1 files changed, 121 insertions, 67 deletions
diff --git a/server/modules/partitioner/opt/openslx/scripts/partitioner b/server/modules/partitioner/opt/openslx/scripts/partitioner
index 03b30442..8eaf48a7 100755
--- a/server/modules/partitioner/opt/openslx/scripts/partitioner
+++ b/server/modules/partitioner/opt/openslx/scripts/partitioner
@@ -6,7 +6,7 @@ PARTITIONSPATH="/proc/partitions"
CONFIGPATH="./config"
# CONFIGPATH="/opt/openslx/config"
-# BLOCKSIZE=$(sfdisk -l /dev/$CHOSENDISK | grep -o -e "blocks of [0-9]* bytes" | cut -d ' ' -f3)
+# BLOCKSIZE=$(sfdisk -l /dev/$SLX_CHOOSEN_DISK | grep -o -e "blocks of [0-9]* bytes" | cut -d ' ' -f3)
BLOCKSIZE=1024
. $CONFIGPATH
@@ -90,11 +90,13 @@ for PARTITION in $SLX_PARTITION_TABLE; do
fi
PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/id"]=$1
PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/size"]=$(echo $2 | egrep -o "[0-9]*")
- PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/mountpoint"]=$3
- if [ -e $4 ]; then
- PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=0
- else
+ if [ -n $3 ]; then
+ PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/mountpoint"]=$3
+ fi
+ if [ -n $4 ]; then
PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=1
+ else
+ PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=0
fi
# set the partitions to non-existents
PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/exists"]=0
@@ -194,30 +196,129 @@ if [ $SLX_DELETE_PARTITION_TABLE = "yes" ]; then
done
sfdisk -q -f /dev/$SLX_CHOOSEN_DISK < /tmp/partitiontable.tmp > /dev/null
# rm -f /tmp/partitiontable.tmp
-elif [ $(sfdisk -d /dev/$SLX_CHOOSEN_DISK 2> /dev/null | grep $SLX_CHOOSEN_DISK'1' | tr -s ' ' | cut -d ' ' -f7 | cut -d '=' -f2) = 'ee' ]; then
-# finding existent partitions in GPT
- echo 'GPT'
- for PART in $PARTS; do
+ #------
+ DIALOGSTR="New partitions created:\n\n"
+ if [ $SLX_PARTITION_TYPE = 'GPT' ]; then
+ # create the command (CMD) that will convert the MSDOS type to GPT, change the unique GUIDs and set the bootable flags.
+ CMD="sgdisk -g /dev/$SLX_CHOOSEN_DISK"
for (( i = 1; i < $COUNTER; i++ )); do
if [ $i -ne 4 ]; then
- if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]} = 0 ]; then
- sgdisk /dev/$SLX_CHOOSEN_DISK -i ${PART:3} 2> /dev/null | grep ${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}"000000-0000-0000-0000-000000000000" > /dev/null
- if [ $? -eq 0 ]; then
- echo "the partition $PART is the ${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]} partition."
- PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]=$PART
- NEEDED_SPACE=$(($NEEDED_SPACE-${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
- break
- fi
+ if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" != "82" ] && [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" != "83" ]; then
+ CMD=$CMD" -t "$i":"${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}"000000-0000-0000-0000-000000000000"
+ CMD=$CMD" -c "$i":\""${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}"\""
+ fi
+ if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} -eq 1 ]; then
+ CMD=$CMD" -A "$i":set:2"
+ fi
+ fi
+ done
+ CMD=$CMD" > /dev/null 2> /dev/null"
+ $CMD
+ for (( i = 1; i < $COUNTER; i++ )); do
+ if [ $i -ne 4 ]; then
+ SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
+ ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
+ MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
+ DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"$SLX_CHOOSEN_DISK$i")\n"
+ if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "82" ]; then
+ DIALOGSTR=$DIALOGSTR" GUID: 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F\n"
+ elif [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "83" ]; then
+ DIALOGSTR=$DIALOGSTR" GUID: 0FC63DAF-8483-4772-8E79-3D69D8477DE4\n"
+ else
+ DIALOGSTR=$DIALOGSTR" GUID: "$ID"000000-0000-0000-0000-000000000000\n"
fi
+ DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
fi
done
+ else
+ for (( i = 1; i < $COUNTER; i++ )); do
+ if [ $i -lt 4 ]; then
+ SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
+ ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
+ MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
+ DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"$SLX_CHOOSEN_DISK$i")\n"
+ DIALOGSTR=$DIALOGSTR" Type: Primary\n"
+ DIALOGSTR=$DIALOGSTR" ID: "$ID"\n"
+ DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
+ elif [ $i -gt 4 ]; then
+ SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
+ ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
+ MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
+ DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"$SLX_CHOOSEN_DISK$i")\n"
+ DIALOGSTR=$DIALOGSTR" Type: Logical\n"
+ DIALOGSTR=$DIALOGSTR" ID: "$ID"\n"
+ DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
+ fi
+ done
+ fi
+elif [ $(sfdisk -d /dev/$SLX_CHOOSEN_DISK 2> /dev/null | grep $SLX_CHOOSEN_DISK'1' | tr -s ' ' | cut -d ' ' -f7 | cut -d '=' -f2) = 'ee' ]; then
+# finding existent partitions in GPT
+ echo 'GPT'
+ NONEXISTENT_PARTITIONS="false"
+ for (( i = 1; i < $COUNTER; i++ )); do
+ if [ $i -ne 4 ]; then
+ for PART in $PARTS; do
+ if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "82" ]; then
+ sgdisk /dev/$SLX_CHOOSEN_DISK -i ${PART:3} 2> /dev/null | grep "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F" > /dev/null
+ elif [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "83" ]; then
+ sgdisk /dev/$SLX_CHOOSEN_DISK -i ${PART:3} 2> /dev/null | grep "0FC63DAF-8483-4772-8E79-3D69D8477DE4" > /dev/null
+ else
+ sgdisk /dev/$SLX_CHOOSEN_DISK -i ${PART:3} 2> /dev/null | grep ${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}"000000-0000-0000-0000-000000000000" > /dev/null
+ fi
+ if [ $? -eq 0 ]; then
+ PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]=$PART
+ NEEDED_SPACE=$(($NEEDED_SPACE-${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
+ break
+ fi
+ done
+ if [[ ${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]} = "0" ]]; then
+ NONEXISTENT_PARTITIONS="true"
+ fi
+ fi
done
- echo "FREESPACE="$FREESPACE
- echo "NEEDED_SPACE="$NEEDED_SPACE
+ # checking if there's sufficient space for the new partitions.
if [[ $FREESPACE -lt $NEEDED_SPACE ]]; then
dialog --msgbox "ERROR: Insufficient free space in disk /dev/$SLX_CHOOSEN_DISK." 6 40
exit 1
fi
+ if [[ $NONEXISTENT_PARTITIONS = "false" ]]; then
+ DIALOGSTR="All your requested partitions already exists.\n\n"
+ DIALOGSTR=$DIALOGSTR"Partition ID\n"
+ for (( i = 1; i < $COUNTER; i++ )); do
+ if [[ $i -ne 4 ]]; then
+ DIALOGSTR=$DIALOGSTR"${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]} ${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}\n"
+ fi
+ done
+ else
+ DIALOGSTR="New partitions created:\n\n"
+ for (( i = 1; i < $COUNTER; i++ )); do
+ j=1
+ if [[ "${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]}" = "0" ]]; then
+ sgdisk /dev/$SLX_CHOOSEN_DISK -n $j:0:+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}G 2> /dev/null > /dev/null
+ while [[ $? -eq 4 ]]; do
+ j=$(($j+1))
+ sgdisk /dev/$SLX_CHOOSEN_DISK -n $j:0:+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}G 2> /dev/null > /dev/null
+ done
+ PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]=$SLX_CHOOSEN_DISK$j
+ SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
+ ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
+ MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
+ DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]}")\n"
+ if [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "82" ]; then
+ DIALOGSTR=$DIALOGSTR" GUID: 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F\n"
+ elif [ "${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}" = "83" ]; then
+ DIALOGSTR=$DIALOGSTR" GUID: 0FC63DAF-8483-4772-8E79-3D69D8477DE4\n"
+ else
+ sgdisk /dev/$SLX_CHOOSEN_DISK -t $j:$ID"000000-0000-0000-0000-000000000000" -c $j:$MOUNTPOINT
+ DIALOGSTR=$DIALOGSTR" GUID: "$ID"000000-0000-0000-0000-000000000000\n"
+ fi
+ DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
+ fi
+ if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} -eq 1 ]; then
+ sgdisk /dev/$SLX_CHOOSEN_DISK -A $j:set:2
+ fi
+ done
+ fi
else
# finding existent partitions in MS-DOS
echo 'MSDOS'
@@ -244,51 +345,4 @@ else
fi
fi
-DIALOGSTR="New partitions created:\n\n"
-if [ $SLX_PARTITION_TYPE = 'GPT' ]; then
- # create the command (CMD) that will convert the MSDOS type to GPT and change the unique GUIDs
- CMD="sgdisk -g /dev/$SLX_CHOOSEN_DISK"
- for (( i = 1; i < $COUNTER; i++ )); do
- if [ $i -ne 4 ]; then
- if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/exists"]} = 0 ]; then
- CMD=$CMD" -t "$i":"${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}"000000-0000-0000-0000-000000000000"
- fi
- CMD=$CMD" -c "$i":\""${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}"\""
- fi
- done
- CMD=$CMD" > /dev/null 2> /dev/null"
- $CMD
-
- for (( i = 1; i < $COUNTER; i++ )); do
- if [ $i -ne 4 ]; then
- SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
- ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
- MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
- DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"$SLX_CHOOSEN_DISK$i")\n"
- DIALOGSTR=$DIALOGSTR" GUID: "$ID"000000-0000-0000-0000-000000000000\n"
- DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
- fi
- done
-else
- for (( i = 1; i < $COUNTER; i++ )); do
- if [ $i -lt 4 ]; then
- SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
- ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
- MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
- DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"$SLX_CHOOSEN_DISK$i")\n"
- DIALOGSTR=$DIALOGSTR" Type: Primary\n"
- DIALOGSTR=$DIALOGSTR" ID: "$ID"\n"
- DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
- elif [ $i -gt 4 ]; then
- SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024))
- ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]}
- MOUNTPOINT=${PARTTBL["$SLX_CHOOSEN_DISK$i/mountpoint"]}
- DIALOGSTR=$DIALOGSTR$MOUNTPOINT" (/dev/"$SLX_CHOOSEN_DISK$i")\n"
- DIALOGSTR=$DIALOGSTR" Type: Logical\n"
- DIALOGSTR=$DIALOGSTR" ID: "$ID"\n"
- DIALOGSTR=$DIALOGSTR" Size: "$SIZE" Bytes ("${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}" GB)\n"
- fi
- done
-fi
-
-dialog --msgbox "$DIALOGSTR" 0 0
+dialog --msgbox "$DIALOGSTR" 0 0 \ No newline at end of file