summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Affonso Xavier de Morais2014-07-09 21:03:25 +0200
committerMichael Pereira Neves2014-10-28 14:14:49 +0100
commitd24bf20175538211fb1c55c733a783ef2250a4bb (patch)
treec76482d86fd5442e15458a7f8dc334668e173483
parent[partitioner] using sfdisk to create msdos partitions. fully using the dialog... (diff)
downloadtm-scripts-d24bf20175538211fb1c55c733a783ef2250a4bb.tar.gz
tm-scripts-d24bf20175538211fb1c55c733a783ef2250a4bb.tar.xz
tm-scripts-d24bf20175538211fb1c55c733a783ef2250a4bb.zip
[partitioner] added support to GTP and other few improvements.
-rw-r--r--remote/modules/partitioner/config1
-rwxr-xr-xremote/modules/partitioner/partitioner.sh233
2 files changed, 141 insertions, 93 deletions
diff --git a/remote/modules/partitioner/config b/remote/modules/partitioner/config
index e8a31fe2..bb69d43e 100644
--- a/remote/modules/partitioner/config
+++ b/remote/modules/partitioner/config
@@ -1,5 +1,6 @@
#PARTITIONER
+PARTITIONTYPE=GPT
CHOSENDISK=sda
SCRATCHID=44
diff --git a/remote/modules/partitioner/partitioner.sh b/remote/modules/partitioner/partitioner.sh
index ad4becc3..19d594a1 100755
--- a/remote/modules/partitioner/partitioner.sh
+++ b/remote/modules/partitioner/partitioner.sh
@@ -2,40 +2,96 @@
PARTITIONSPATH="/proc/partitions"
CONFIGPATH="./config"
-DEFPARTSIZE=5 #in GB
+DEFPARTSIZE=2 #in GB
DEFSCRATCHID=44
DEFHOMEID=45
DEFDNBD3ID=46
DEFBOOTID=47
+# BLOCKSIZE=$(sfdisk -l /dev/$CHOSENDISK | grep -o -e "blocks of [0-9]* bytes" | cut -d ' ' -f3)
+BLOCKSIZE=1024
+
. $CONFIGPATH
+# testing if the sizes and ID's of the disk is defined in the config file
+test $SCRATCHID
+if [ $? -eq 1 ]; then
+ SCRATCHID=$DEFSCRATCHID
+fi
+test $SCRATCHSIZE
+if [ $? -eq 1 ]; then
+ SCRATCHSIZEGB=$DEFPARTSIZE
+ SCRATCHSIZE=$(($DEFPARTSIZE*1024*1024*1024))
+else
+ SCRATCHSIZEGB=$SCRATCHSIZE
+ SCRATCHSIZE=$(($SCRATCHSIZE*1024*1024*1024))
+fi
+
+test $HOMEID
+if [ $? -eq 1 ]; then
+ HOMEID=$DEFHOMEID
+fi
+test $HOMESIZE
+if [ $? -eq 1 ]; then
+ HOMESIZEGB=$DEFPARTSIZE
+ HOMESIZE=$(($DEFPARTSIZE*1024*1024*1024))
+else
+ HOMESIZEGB=$HOMESIZE
+ HOMESIZE=$(($HOMESIZE*1024*1024*1024))
+fi
+
+test $DNBD3ID
+if [ $? -eq 1 ]; then
+ DNBD3ID=$DEFDNBD3ID
+fi
+test $DNBD3SIZE
+if [ $? -eq 1 ]; then
+ DNBD3SIZEGB=$DEFPARTSIZE
+ DNBD3SIZE=$(($DEFPARTSIZE*1024*1024*1024))
+else
+ DNBD3SIZEGB=$DNBD3SIZE
+ DNBD3SIZE=$(($DNBD3SIZE*1024*1024*1024))
+fi
+
+test $BOOTID
+if [ $? -eq 1 ]; then
+ BOOTID=$DEFBOOTID
+fi
+test $BOOTSIZE
+if [ $? -eq 1 ]; then
+ BOOTSIZEGB=$DEFPARTSIZE
+ BOOTSIZE=$(($DEFPARTSIZE*1024*1024*1024))
+else
+ BOOTSIZEGB=$BOOTSIZE
+ BOOTSIZE=$(($BOOTSIZE*1024*1024*1024))
+fi
+
# picking disk that will be used
+DISKS=$(cat $PARTITIONSPATH | tr -s ' ' | cut -d ' ' -f5 | grep -e "[a-z]$")
+test $DISKS 2> /dev/null
+if [ $? -eq 1 ]; then
+ dialog --msgbox "ERROR: Can't find an hard disk." 5 40
+ return 1
+fi
test $CHOSENDISK
if [ $? -eq 1 ]; then
- DISKS=$(cat $PARTITIONSPATH | tr -s ' ' | cut -d ' ' -f5 | grep -e "[a-z]$")
- test $DISKS 2> /dev/null
- if [ $? -eq 1 ]; then
- dialog --msgbox "ERROR: Can't find an hard disk." 5 40
- return 1
- fi
DIALOGSTR="This computer has the following partitions:\n"
for disk in $DISKS; do
- DISKSIZE=$(cat $PARTITIONSPATH | grep -e $disk$ | tr -s ' ' | cut -d ' ' -f4)
+ DISKSIZE=$(($(cat $PARTITIONSPATH | grep -e $disk$ | tr -s ' ' | cut -d ' ' -f4)*$BLOCKSIZE))
PARTS=$(cat $PARTITIONSPATH | grep -e $disk[0-9] | tr -s ' ' | cut -d ' ' -f5)
- GBSIZE=$(echo "scale=2; $DISKSIZE/1024/1024" | bc -l)
+ GBSIZE=$(echo "scale=2; $DISKSIZE/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR"$disk $DISKSIZE Bytes ($GBSIZE GB)\n"
USED=0
for PART in $PARTS; do
- PARTSIZE=$(cat $PARTITIONSPATH | grep -e $PART$ | tr -s ' ' | cut -d ' ' -f4)
+ PARTSIZE=$(($(cat $PARTITIONSPATH | grep -e $PART$ | tr -s ' ' | cut -d ' ' -f4)*1024))
USED=$(($USED+$PARTSIZE))
- GBSIZE=$(echo "scale=2; $PARTSIZE/1024/1024" | bc -l)
+ GBSIZE=$(echo "scale=2; $PARTSIZE/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR" $PART $PARTSIZE ($GBSIZE GB)\n"
done
DIALOGSTR=$DIALOGSTR" ----------\n"
FREESPACE=$(($DISKSIZE-$USED))
- GBSIZE=$(echo "scale=2; $USED/1024/1024" | bc -l)
+ GBSIZE=$(echo "scale=2; $USED/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR" Used $USED ($GBSIZE GB)\n"
- GBSIZE=$(echo "scale=2; $FREESPACE/1024/1024" | bc -l)
+ GBSIZE=$(echo "scale=2; $FREESPACE/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR" Free $FREESPACE ($GBSIZE GB)\n\n"
done
@@ -63,23 +119,43 @@ if [ $? -eq 1 ]; then
fi
fi
+DISKSIZE=$(($(cat $PARTITIONSPATH | grep -e $CHOSENDISK$ | tr -s ' ' | cut -d ' ' -f4)*$BLOCKSIZE))
+echo "$DISKSIZE -lt $(($SCRATCHSIZE+$HOMESIZE+$DNBD3SIZE+$BOOTSIZE+4*1024*1024))"
+if [ $DISKSIZE -lt $(($SCRATCHSIZE+$HOMESIZE+$DNBD3SIZE+$BOOTSIZE+4*1024*1024)) ]; then
+ dialog --msgbox "ERROR: Insufficient space in disk /dev/$CHOSENDISK." 6 40
+ return 1
+fi
+
+# choosing the partition type (MSDOS or GPT) if it wasn't set in config file
+test $PARTITIONTYPE
+if [ $? -eq 1 ]; then
+ ANS=$(dialog --no-tags --menu "Choose the partitions type" 0 0 0 "1" " MSDOS " "2" " GPT " 3>&1 1>&2 2>&3)
+ if [ $? -eq 1 ]; then
+ return 1
+ fi
+ if [ $ANS -eq 1 ]; then
+ PARTITIONTYPE=MSDOS
+ else
+ PARTITIONTYPE=GPT
+ fi
+fi
+
# asking confirmation to create the partitions
-DISKSIZE=$(cat $PARTITIONSPATH | grep -e $CHOSENDISK$ | tr -s ' ' | cut -d ' ' -f4)
-GBSIZE=$(echo "scale=2; $DISKSIZE/1024/1024" | bc -l)
+GBSIZE=$(echo "scale=2; $DISKSIZE/1024/1024/1024" | bc -l)
DIALOGSTR="$CHOSENDISK $DISKSIZE Bytes ($GBSIZE GB)\n"
PARTS=$(cat $PARTITIONSPATH | grep -e $CHOSENDISK[0-9] | tr -s ' ' | cut -d ' ' -f5)
USED=0
for PART in $PARTS; do
- PARTSIZE=$(cat $PARTITIONSPATH | grep -e $PART$ | tr -s ' ' | cut -d ' ' -f4)
+ PARTSIZE=$(($(cat $PARTITIONSPATH | grep -e $PART$ | tr -s ' ' | cut -d ' ' -f4)*$BLOCKSIZE))
USED=$(($USED+$PARTSIZE))
- GBSIZE=$(echo "scale=2; $PARTSIZE/1024/1024" | bc -l)
+ GBSIZE=$(echo "scale=2; $PARTSIZE/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR" $PART $PARTSIZE ($GBSIZE GB)\n"
done
DIALOGSTR=$DIALOGSTR" ----------\n"
FREESPACE=$(($DISKSIZE-$USED))
-GBSIZE=$(echo "scale=2; $USED/1024/1024" | bc -l)
+GBSIZE=$(echo "scale=2; $USED/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR" Used $USED ($GBSIZE GB)\n"
-GBSIZE=$(echo "scale=2; $FREESPACE/1024/1024" | bc -l)
+GBSIZE=$(echo "scale=2; $FREESPACE/1024/1024/1024" | bc -l)
DIALOGSTR=$DIALOGSTR" Free $FREESPACE ($GBSIZE GB)\n\n"
DIALOGSTR=$DIALOGSTR"All /dev/$CHOSENDISK partitions will be deleted, ok?"
@@ -89,64 +165,12 @@ if [ $? -eq 1 ]; then
fi
# pick the size of a sector (usually 512 bytes)
-SECTORSIZE=$(sfdisk /dev/$CHOSENDISK -l -u S 2> /dev/null | grep Units | cut -d ' ' -f5)
+# SECTORSIZE=$(sfdisk /dev/$CHOSENDISK -l -u S 2> /dev/null | grep Units | cut -d ' ' -f5)
+SECTORSIZE=512
-# testing if the sizes and ID's of the disk is defined in the config file
-test $SCRATCHID
-if [ $? -eq 1 ]; then
- SCRATCHID=$DEFSCRATCHID
-fi
-
-test $SCRATCHSIZE
-if [ $? -eq 1 ]; then
- SCRATCHSIZEGB=$DEFPARTSIZE
- SCRATCHSIZE=$(($DEFPARTSIZE*1024*1024*1024))
-else
- SCRATCHSIZEGB=$SCRATCHSIZE
- SCRATCHSIZE=$(($SCRATCHSIZE*1024*1024*1024))
-fi
-
-test $HOMEID
-if [ $? -eq 1 ]; then
- HOMEID=$DEFHOMEID
-fi
-
-test $HOMESIZE
-if [ $? -eq 1 ]; then
- HOMESIZEGB=$DEFPARTSIZE
- HOMESIZE=$(($DEFPARTSIZE*1024*1024*1024))
-else
- HOMESIZEGB=$HOMESIZE
- HOMESIZE=$(($HOMESIZE*1024*1024*1024))
-fi
-
-test $DNBD3ID
-if [ $? -eq 1 ]; then
- DNBD3ID=$DEFDNBD3ID
-fi
-
-test $DNBD3SIZE
-if [ $? -eq 1 ]; then
- DNBD3SIZEGB=$DEFPARTSIZE
- DNBD3SIZE=$(($DEFPARTSIZE*1024*1024*1024))
-else
- DNBD3SIZEGB=$DNBD3SIZE
- DNBD3SIZE=$(($DNBD3SIZE*1024*1024*1024))
-fi
-
-test $BOOTID
-if [ $? -eq 1 ]; then
- BOOTID=$DEFBOOTID
-fi
-
-test $BOOTSIZE
-if [ $? -eq 1 ]; then
- BOOTSIZEGB=$DEFPARTSIZE
- BOOTSIZE=$(($DEFPARTSIZE*1024*1024*1024))
-else
- BOOTSIZEGB=$BOOTSIZE
- BOOTSIZE=$(($BOOTSIZE*1024*1024*1024))
-fi
+# delete partition table
+echo "apaga"
+sgdisk -Z /dev/$CHOSENDISK > /dev/null 2> /dev/null
# constructing the sfdisk input file
START1=$((1*1024*1024/$SECTORSIZE))
@@ -161,29 +185,52 @@ SIZE3=$(($DNBD3SIZE/$SECTORSIZE))
START4=$(($START3+$SIZE3))
SIZE4=$(($BOOTSIZE/$SECTORSIZE))
+echo "cria sfdisk"
echo "unit: sectors
/dev/"$CHOSENDISK"1 : start= "$START1", size= "$SIZE1", Id= "$SCRATCHID"
/dev/"$CHOSENDISK"2 : start= "$START2", size= "$SIZE2", Id= "$HOMEID"
/dev/"$CHOSENDISK"3 : start= "$START3", size= "$SIZE3", Id= "$DNBD3ID"
-/dev/"$CHOSENDISK"4 : start= "$START4", size= "$SIZE4", Id= "$BOOTID, bootable"
-" > /tmp/emptydisk.tmp
-sfdisk -q /dev/$CHOSENDISK < /tmp/emptydisk.tmp > /dev/null
+/dev/"$CHOSENDISK"4 : start= "$START4", size= "$SIZE4", Id= "$BOOTID," bootable
+ "> /tmp/emptydisk.tmp
+sfdisk -q -f /dev/$CHOSENDISK < /tmp/emptydisk.tmp > /dev/null
rm -f /tmp/emptydisk.tmp
-# constructing dialog message
-DIALOGSTR="New partitions created:\n\n"
-DIALOGSTR=$DIALOGSTR"SCRATCH ("/dev/$CHOSENDISK"1)\n"
-DIALOGSTR=$DIALOGSTR" ID: $SCRATCHID\n"
-DIALOGSTR=$DIALOGSTR" Size: $SCRATCHSIZE Bytes ($SCRATCHSIZEGB GB)\n"
-DIALOGSTR=$DIALOGSTR"HOME ("/dev/$CHOSENDISK"2)\n"
-DIALOGSTR=$DIALOGSTR" ID: $HOMEID\n"
-DIALOGSTR=$DIALOGSTR" Size: $HOMESIZE Bytes ($HOMESIZEGB GB)\n"
-DIALOGSTR=$DIALOGSTR"DNBD3 ("/dev/$CHOSENDISK"3)\n"
-DIALOGSTR=$DIALOGSTR" ID: $DNBD3ID\n"
-DIALOGSTR=$DIALOGSTR" Size: $DNBD3SIZE Bytes ($DNBD3SIZEGB GB)\n"
-DIALOGSTR=$DIALOGSTR"BOOT ("/dev/$CHOSENDISK"4)\n"
-DIALOGSTR=$DIALOGSTR" ID: $BOOTID\n"
-DIALOGSTR=$DIALOGSTR" Size: $BOOTSIZE Bytes ($BOOTSIZEGB GB)\n"
+if [ $PARTITIONTYPE = GPT ]; then
+ echo "converte e aplica GUID"
+ sgdisk -g /dev/$CHOSENDISK\
+ -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/$CHOSENDISK"1)\n"
+ DIALOGSTR=$DIALOGSTR" GUID: "$SCRATCHID"000000-0000-0000-0000-000000000000\n"
+ DIALOGSTR=$DIALOGSTR" Size: $SCRATCHSIZE Bytes ($SCRATCHSIZEGB GB)\n"
+ DIALOGSTR=$DIALOGSTR"HOME ("/dev/$CHOSENDISK"2)\n"
+ DIALOGSTR=$DIALOGSTR" GUID: "$HOMEID"000000-0000-0000-0000-000000000000\n"
+ DIALOGSTR=$DIALOGSTR" Size: $HOMESIZE Bytes ($HOMESIZEGB GB)\n"
+ DIALOGSTR=$DIALOGSTR"DNBD3 ("/dev/$CHOSENDISK"3)\n"
+ DIALOGSTR=$DIALOGSTR" GUID: "$DNBD3ID"000000-0000-0000-0000-000000000000\n"
+ DIALOGSTR=$DIALOGSTR" Size: $DNBD3SIZE Bytes ($DNBD3SIZEGB GB)\n"
+ DIALOGSTR=$DIALOGSTR"BOOT ("/dev/$CHOSENDISK"4)\n"
+ DIALOGSTR=$DIALOGSTR" GUID: "$BOOTID"000000-0000-0000-0000-000000000000\n"
+ DIALOGSTR=$DIALOGSTR" Size: $BOOTSIZE Bytes ($BOOTSIZEGB GB)\n"
+else
+ DIALOGSTR="New partitions created:\n\n"
+ DIALOGSTR=$DIALOGSTR"SCRATCH ("/dev/$CHOSENDISK"1)\n"
+ DIALOGSTR=$DIALOGSTR" ID: $SCRATCHID\n"
+ DIALOGSTR=$DIALOGSTR" Size: $SCRATCHSIZE Bytes ($SCRATCHSIZEGB GB)\n"
+ DIALOGSTR=$DIALOGSTR"HOME ("/dev/$CHOSENDISK"2)\n"
+ DIALOGSTR=$DIALOGSTR" ID: $HOMEID\n"
+ DIALOGSTR=$DIALOGSTR" Size: $HOMESIZE Bytes ($HOMESIZEGB GB)\n"
+ DIALOGSTR=$DIALOGSTR"DNBD3 ("/dev/$CHOSENDISK"3)\n"
+ DIALOGSTR=$DIALOGSTR" ID: $DNBD3ID\n"
+ DIALOGSTR=$DIALOGSTR" Size: $DNBD3SIZE Bytes ($DNBD3SIZEGB GB)\n"
+ DIALOGSTR=$DIALOGSTR"BOOT ("/dev/$CHOSENDISK"4)\n"
+ DIALOGSTR=$DIALOGSTR" ID: $BOOTID\n"
+ DIALOGSTR=$DIALOGSTR" Size: $BOOTSIZE Bytes ($BOOTSIZEGB GB)\n"
+fi
dialog --msgbox "$DIALOGSTR" 0 0 \ No newline at end of file