diff options
author | Lucas Affonso Xavier de Morais | 2014-07-11 17:13:19 +0200 |
---|---|---|
committer | Michael Pereira Neves | 2014-10-28 14:14:49 +0100 |
commit | 5e57195dfd036ba97ca05c1145eb592674ea6639 (patch) | |
tree | 72c6fb3a7c195ee69b8d746555fccb1e128c1e1b | |
parent | [partitioner] adapting script to the new config file. not working yet. (diff) | |
download | tm-scripts-5e57195dfd036ba97ca05c1145eb592674ea6639.tar.gz tm-scripts-5e57195dfd036ba97ca05c1145eb592674ea6639.tar.xz tm-scripts-5e57195dfd036ba97ca05c1145eb592674ea6639.zip |
[partitioner] lacking NO_OVERRIDE option and AUTOMATIC_PARTITIONING
-rw-r--r-- | remote/modules/partitioner/config | 19 | ||||
-rwxr-xr-x | remote/modules/partitioner/partitioner.sh | 145 |
2 files changed, 88 insertions, 76 deletions
diff --git a/remote/modules/partitioner/config b/remote/modules/partitioner/config index 2d547e1e..f2e20ca8 100644 --- a/remote/modules/partitioner/config +++ b/remote/modules/partitioner/config @@ -1,10 +1,17 @@ #Partitions -SLX_PARTITION_TYPE={GPT|msdos} #Create GPT or msdos style partition table -SLX_CHOOSEN_DISK={sda} #Choose disk to partition -SLX_AUTOMATIC_PARTITIONING={yes|no} #Don't be interactive, use carefully -SLX_OVERRIDE_PARTITIONS={yes|no} #Override existing partitions -SLX_PARTITION_TABLE=' #Partition table in the format: ID,Size,Mountpoint,Bootable +#SLX_PARTITION_TYPE='GPT' +#SLX_CHOOSEN_DISK='sda' +SLX_AUTOMATIC_PARTITIONING='no' +SLX_OVERRIDE_PARTITIONS='no' +SLX_PARTITION_TABLE=' 44,10G,/tmp 43,10G,/boot,bootable 42,10G,/cache -41,10G,/home'
\ No newline at end of file +41,10G,/home +40,5G,/teste' + +#Create GPT or msdos style partition table +#Choose disk to partition +#Don't be interactive, use carefully +#Override existing partitions +#Partition table in the format: ID,Size,Mountpoint,Bootable
\ No newline at end of file diff --git a/remote/modules/partitioner/partitioner.sh b/remote/modules/partitioner/partitioner.sh index 6f0a76e1..f03a8b76 100755 --- a/remote/modules/partitioner/partitioner.sh +++ b/remote/modules/partitioner/partitioner.sh @@ -1,4 +1,6 @@ -#!/bin/sh +#!/bin/bash + +set -e PARTITIONSPATH="/proc/partitions" CONFIGPATH="./config" @@ -9,24 +11,6 @@ BLOCKSIZE=1024 . $CONFIGPATH # testing if the sizes and ID's of the disk is defined in the config file -declare -A PARTTBL -COUNTER=1 -if [ -n "$SLX_PARTITION_TABLE" ]; then - for PARTITION in $SLX_PARTITION_TABLE; do - IFS=, - set $PARTITION - if [ $COUNTER -eq 4 ]; then - COUNTER=$((COUNTER+1)) - 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 - PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=$4 - COUNTER=$(($COUNTER+1)) - done -fi - -NPARTS=$(($COUNTER-1)) # picking disk that will be used DISKS=$(cat $PARTITIONSPATH | tr -s ' ' | cut -d ' ' -f5 | grep -e "[a-z]$") @@ -82,14 +66,37 @@ if [ -z "$SLX_CHOOSEN_DISK" ]; then fi fi +declare -A PARTTBL +COUNTER=1 +if [ -n "$SLX_PARTITION_TABLE" ]; then + for PARTITION in $SLX_PARTITION_TABLE; do + IFS=, + set $PARTITION + if [ $COUNTER -eq 4 ]; then + COUNTER=$(($COUNTER+1)) + 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 + PARTTBL["$SLX_CHOOSEN_DISK$COUNTER/bootable"]=1 + fi + COUNTER=$(($COUNTER+1)) + done +fi +unset IFS + + DISKSIZE=$(($(cat $PARTITIONSPATH | grep -e $SLX_CHOOSEN_DISK$ | tr -s ' ' | cut -d ' ' -f4)*$BLOCKSIZE)) PARTSSIZE=0 -for (( i = 1; i <= $NPARTS; i++ )); do - PARTSSIZE=$PARTSSIZE+$PARTTBL["$SLX_CHOOSEN_DISK$i/size"] +for (( i = 1; i < $COUNTER; i++ )); do + PARTSSIZE=$PARTSSIZE+${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]} done -echo "$DISKSIZE -lt $(($PARTSSIZE*1024*1024*1024+$NPARTS*1024*1024))" -if [ $DISKSIZE -lt $(($PARTSSIZE*1024*1024*1024+$NPARTS*1024*1024)) ]; then +echo "$DISKSIZE -lt $(($PARTSSIZE*1024*1024*1024+$COUNTER*1024*1024))" +if [ $DISKSIZE -lt $(($PARTSSIZE*1024*1024*1024+$COUNTER*1024*1024)) ]; then dialog --msgbox "ERROR: Insufficient space in disk /dev/$SLX_CHOOSEN_DISK." 6 40 return 1 fi @@ -140,73 +147,71 @@ SECTORSIZE=512 # delete partition table if [ $SLX_OVERRIDE_PARTITIONS = "yes" ]; then - sgdisk -Z /dev/$SLX_CHOOSEN_DISK > /dev/null 2> /dev/null + : + # sgdisk -Z /dev/$SLX_CHOOSEN_DISK > /dev/null 2> /dev/null fi # constructing the sfdisk input file -START2=$(($START1+$SIZE1)) -SIZE2=$(($HOMESIZE/$SECTORSIZE)) - echo "unit: sectors - "> /tmp/partitiontable.tmp START=$((1*1024*1024/$SECTORSIZE)) -for (( i = 1; i < $NPARTS; i++ )); do +for (( i = 1; i < $COUNTER; i++ )); do if [ $i -ne 4 ]; then SIZE=$((${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]}*1024*1024*1024/$SECTORSIZE)) - ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/size"]} - if [ -n ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} ]; then - echo "/dev/"$SLX_CHOOSEN_DISK$i" : start= "$START", size= "$SIZE", Id= "$ID", bootable - " >> /tmp/partitiontable.tmp + ID=${PARTTBL["$SLX_CHOOSEN_DISK$i/id"]} + if [ ${PARTTBL["$SLX_CHOOSEN_DISK$i/bootable"]} -eq 1 ]; then + echo "/dev/"$SLX_CHOOSEN_DISK$i" : start= "$START", size= "$SIZE", Id= "$ID", bootable " >> /tmp/partitiontable.tmp else - echo "/dev/"$SLX_CHOOSEN_DISK$i" : start= "$START", size= "$SIZE", Id= "$ID" - " >> /tmp/partitiontable.tmp + echo "/dev/"$SLX_CHOOSEN_DISK$i" : start= "$START", size= "$SIZE", Id= "$ID >> /tmp/partitiontable.tmp fi START=$(($START+$SIZE+1*1024*1024/$SECTORSIZE)) else - echo "/dev/"$SLX_CHOOSEN_DISK$i" : start= "$START", size= "$(($DISKSIZE/$SECTORSIZE-1))", Id= "5" - " >> /tmp/partitiontable.tmp + echo "/dev/"$SLX_CHOOSEN_DISK$i" : start= "$START", size= "$(($DISKSIZE/$SECTORSIZE-1))", Id= 5" >> /tmp/partitiontable.tmp START=$(($START+1*1024*1024/$SECTORSIZE)) fi done -sfdisk -q -f /dev/$SLX_CHOOSEN_DISK < /tmp/partitiontable.tmp > /dev/null +# sfdisk -q -f /dev/$SLX_CHOOSEN_DISK < /tmp/partitiontable.tmp > /dev/null rm -f /tmp/partitiontable.tmp +DIALOGSTR="New partitions created:\n\n" if [ $SLX_PARTITION_TYPE = GPT ]; then - sgdisk -g /dev/$SLX_CHOOSEN_DISK\ - -t 1:"$SCRATCHID"000000-0000-0000-0000-000000000000\ - -t 2:"$HOMEID"000000-0000-0000-0000-000000000000\ - -t 3:"$DNBD3ID"000000-0000-0000-0000-000000000000\ - -t 4:"$BOOTID"000000-0000-0000-0000-000000000000 > /dev/null - - DIALOGSTR="New partitions created:\n\n" - DIALOGSTR=$DIALOGSTR"SCRATCH ("/dev/$SLX_CHOOSEN_DISK"1)\n" - DIALOGSTR=$DIALOGSTR" GUID: "$SCRATCHID"000000-0000-0000-0000-000000000000\n" - DIALOGSTR=$DIALOGSTR" Size: $SCRATCHSIZE Bytes ($SCRATCHSIZEGB GB)\n" - DIALOGSTR=$DIALOGSTR"HOME ("/dev/$SLX_CHOOSEN_DISK"2)\n" - DIALOGSTR=$DIALOGSTR" GUID: "$HOMEID"000000-0000-0000-0000-000000000000\n" - DIALOGSTR=$DIALOGSTR" Size: $HOMESIZE Bytes ($HOMESIZEGB GB)\n" - DIALOGSTR=$DIALOGSTR"DNBD3 ("/dev/$SLX_CHOOSEN_DISK"3)\n" - DIALOGSTR=$DIALOGSTR" GUID: "$DNBD3ID"000000-0000-0000-0000-000000000000\n" - DIALOGSTR=$DIALOGSTR" Size: $DNBD3SIZE Bytes ($DNBD3SIZEGB GB)\n" - DIALOGSTR=$DIALOGSTR"BOOT ("/dev/$SLX_CHOOSEN_DISK"4)\n" - DIALOGSTR=$DIALOGSTR" GUID: "$BOOTID"000000-0000-0000-0000-000000000000\n" - DIALOGSTR=$DIALOGSTR" Size: $BOOTSIZE Bytes ($BOOTSIZEGB GB)\n" + # sgdisk -g /dev/$SLX_CHOOSEN_DISK\ + # -t 1:"$SCRATCHID"000000-0000-0000-0000-000000000000\ + # -t 2:"$HOMEID"000000-0000-0000-0000-000000000000\ + # -t 3:"$DNBD3ID"000000-0000-0000-0000-000000000000\ + # -t 4:"$BOOTID"000000-0000-0000-0000-000000000000 > /dev/null + + 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 - DIALOGSTR="New partitions created:\n\n" - DIALOGSTR=$DIALOGSTR"SCRATCH ("/dev/$SLX_CHOOSEN_DISK"1)\n" - DIALOGSTR=$DIALOGSTR" ID: $SCRATCHID\n" - DIALOGSTR=$DIALOGSTR" Size: $SCRATCHSIZE Bytes ($SCRATCHSIZEGB GB)\n" - DIALOGSTR=$DIALOGSTR"HOME ("/dev/$SLX_CHOOSEN_DISK"2)\n" - DIALOGSTR=$DIALOGSTR" ID: $HOMEID\n" - DIALOGSTR=$DIALOGSTR" Size: $HOMESIZE Bytes ($HOMESIZEGB GB)\n" - DIALOGSTR=$DIALOGSTR"DNBD3 ("/dev/$SLX_CHOOSEN_DISK"3)\n" - DIALOGSTR=$DIALOGSTR" ID: $DNBD3ID\n" - DIALOGSTR=$DIALOGSTR" Size: $DNBD3SIZE Bytes ($DNBD3SIZEGB GB)\n" - DIALOGSTR=$DIALOGSTR"BOOT ("/dev/$SLX_CHOOSEN_DISK"4)\n" - DIALOGSTR=$DIALOGSTR" ID: $BOOTID\n" - DIALOGSTR=$DIALOGSTR" Size: $BOOTSIZE Bytes ($BOOTSIZEGB GB)\n" + 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
\ No newline at end of file |