diff options
author | Lucas Affonso Xavier de Morais | 2014-08-27 17:42:49 +0200 |
---|---|---|
committer | Michael Pereira Neves | 2014-10-28 14:14:50 +0100 |
commit | a219790a526046004a2f3c0ec66b3158deb3670f (patch) | |
tree | 78f3cdc6e8c56d6a3bb3889001a295653312a54f | |
parent | [partitioner] excluding special cases from the normal mount case. (diff) | |
download | tm-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-x | server/modules/partitioner/opt/openslx/scripts/partitioner | 188 |
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 |