summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Affonso Xavier de Morais2014-07-07 18:05:07 +0200
committerMichael Pereira Neves2014-10-28 14:14:49 +0100
commitf60013fcfcc58c10d4a0661d14239d39f7c136d1 (patch)
treed3e5d3e830d49545bc89117e68361a25c82aa76c
parent[partitioner] using dialog to print messages. (diff)
downloadtm-scripts-f60013fcfcc58c10d4a0661d14239d39f7c136d1.tar.gz
tm-scripts-f60013fcfcc58c10d4a0661d14239d39f7c136d1.tar.xz
tm-scripts-f60013fcfcc58c10d4a0661d14239d39f7c136d1.zip
[partitioner] using sfdisk to create msdos partitions. fully using the dialog function.
-rwxr-xr-xremote/modules/partitioner/partitioner.sh169
1 files changed, 87 insertions, 82 deletions
diff --git a/remote/modules/partitioner/partitioner.sh b/remote/modules/partitioner/partitioner.sh
index 6c81e13d..ad4becc3 100755
--- a/remote/modules/partitioner/partitioner.sh
+++ b/remote/modules/partitioner/partitioner.sh
@@ -13,7 +13,7 @@ DEFBOOTID=47
test $CHOSENDISK
if [ $? -eq 1 ]; then
DISKS=$(cat $PARTITIONSPATH | tr -s ' ' | cut -d ' ' -f5 | grep -e "[a-z]$")
- test $DISKS
+ test $DISKS 2> /dev/null
if [ $? -eq 1 ]; then
dialog --msgbox "ERROR: Can't find an hard disk." 5 40
return 1
@@ -63,122 +63,127 @@ if [ $? -eq 1 ]; then
fi
fi
+# asking confirmation to create the partitions
DISKSIZE=$(cat $PARTITIONSPATH | grep -e $CHOSENDISK$ | tr -s ' ' | cut -d ' ' -f4)
-echo "The disk $CHOSENDISK has $DISKSIZE Bytes of total."
-echo "The /dev/$CHOSENDISK will be wiped, ok? (y/n)"
-dialog --defaultno --yesno "The disk $CHOSENDISK has $DISKSIZE Bytes ($(echo "scale=2; $DISKSIZE/1024/1024" | bc -l) GB) of total space.\nAll /dev/$CHOSENDISK partitions will be deleted, ok?" 0 0
+GBSIZE=$(echo "scale=2; $DISKSIZE/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)
+ USED=$(($USED+$PARTSIZE))
+ GBSIZE=$(echo "scale=2; $PARTSIZE/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)
+DIALOGSTR=$DIALOGSTR" Used $USED ($GBSIZE GB)\n"
+GBSIZE=$(echo "scale=2; $FREESPACE/1024/1024" | bc -l)
+DIALOGSTR=$DIALOGSTR" Free $FREESPACE ($GBSIZE GB)\n\n"
+DIALOGSTR=$DIALOGSTR"All /dev/$CHOSENDISK partitions will be deleted, ok?"
+
+dialog --defaultno --yesno "$DIALOGSTR" 0 0
if [ $? -eq 1 ]; then
return 1
fi
-DIALOGSTR="Wiping /dev/$CHOSENDISK\n\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 30
-echo "unit: sectors
-/dev/"$CHOSENDISK"1 : start= 0, size= 0, Id= 0
-/dev/"$CHOSENDISK"2 : start= 0, size= 0, Id= 0
-/dev/"$CHOSENDISK"3 : start= 0, size= 0, Id= 0
-/dev/"$CHOSENDISK"4 : start= 0, size= 0, Id= 0
-" > /tmp/emptydisk.tmp
-sfdisk -q /dev/$CHOSENDISK < /tmp/emptydisk.tmp > /dev/null
-rm -f /tmp/emptydisk.tmp
+# pick the size of a sector (usually 512 bytes)
+SECTORSIZE=$(sfdisk /dev/$CHOSENDISK -l -u S 2> /dev/null | grep Units | cut -d ' ' -f5)
-
-DIALOGSTR=$DIALOGSTR"Creating new partitions\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-LASTPARTITION=1 # in megabytes
-
-# SCRATCH
-DIALOGSTR=$DIALOGSTR"SCRATCH\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+# 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
-DIALOGSTR=$DIALOGSTR" ID: $SCRATCHID\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $SCRATCHSIZE
if [ $? -eq 1 ]; then
- GBSIZE=$DEFPARTSIZE
- SCRATCHSIZE=$(($DEFPARTSIZE*1024*1024))
+ SCRATCHSIZEGB=$DEFPARTSIZE
+ SCRATCHSIZE=$(($DEFPARTSIZE*1024*1024*1024))
else
- GBSIZE=$SCRATCHSIZE
- SCRATCHSIZE=$(($SCRATCHSIZE*1024*1024))
+ SCRATCHSIZEGB=$SCRATCHSIZE
+ SCRATCHSIZE=$(($SCRATCHSIZE*1024*1024*1024))
fi
-DIALOGSTR=$DIALOGSTR" Size: $SCRATCHSIZE Bytes ($GBSIZE GB)\n Creating SCRATCH partiton...\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-parted -s /dev/$CHOSENDISK mkpart primary $LASTPARTITION"m" $(($LASTPARTITION+$SCRATCHSIZE/1024))m && LASTPARTITION=$(($LASTPARTITION+$SCRATCHSIZE/1024))
-sfdisk --change-id /dev/$CHOSENDISK 1 $SCRATCHID > /dev/null
-DIALOGSTR=$DIALOGSTR"Done.\n\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-
-# HOME
-DIALOGSTR=$DIALOGSTR"HOME\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $HOMEID
if [ $? -eq 1 ]; then
HOMEID=$DEFHOMEID
fi
-DIALOGSTR=$DIALOGSTR" ID: $HOMEID\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $HOMESIZE
if [ $? -eq 1 ]; then
- GBSIZE=$DEFPARTSIZE
- HOMESIZE=$(($DEFPARTSIZE*1024*1024))
+ HOMESIZEGB=$DEFPARTSIZE
+ HOMESIZE=$(($DEFPARTSIZE*1024*1024*1024))
else
- GBSIZE=$HOMESIZE
- HOMESIZE=$(($HOMESIZE*1024*1024))
+ HOMESIZEGB=$HOMESIZE
+ HOMESIZE=$(($HOMESIZE*1024*1024*1024))
fi
-DIALOGSTR=$DIALOGSTR" Size: $HOMESIZE Bytes ($GBSIZE GB)\n Creating HOME partiton...\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-parted -s /dev/$CHOSENDISK mkpart primary $LASTPARTITION"m" $(($LASTPARTITION+$HOMESIZE/1024))m && LASTPARTITION=$(($LASTPARTITION+$HOMESIZE/1024))
-sfdisk --change-id /dev/$CHOSENDISK 2 $HOMEID > /dev/null
-DIALOGSTR=$DIALOGSTR"Done.\n\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-
-# DNBD3
-DIALOGSTR=$DIALOGSTR"DNBD3\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $DNBD3ID
if [ $? -eq 1 ]; then
DNBD3ID=$DEFDNBD3ID
fi
-DIALOGSTR=$DIALOGSTR" ID: $DNBD3ID\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $DNBD3SIZE
if [ $? -eq 1 ]; then
- GBSIZE=$DEFPARTSIZE
- DNBD3SIZE=$(($DEFPARTSIZE*1024*1024))
+ DNBD3SIZEGB=$DEFPARTSIZE
+ DNBD3SIZE=$(($DEFPARTSIZE*1024*1024*1024))
else
- GBSIZE=$DNBD3SIZE
- DNBD3SIZE=$(($DNBD3SIZE*1024*1024))
+ DNBD3SIZEGB=$DNBD3SIZE
+ DNBD3SIZE=$(($DNBD3SIZE*1024*1024*1024))
fi
-DIALOGSTR=$DIALOGSTR" Size: $DNBD3SIZE Bytes ($GBSIZE GB)\n Creating DNBD3 partiton...\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-parted -s /dev/$CHOSENDISK mkpart primary $LASTPARTITION"m" $(($LASTPARTITION+$DNBD3SIZE/1024))m && LASTPARTITION=$(($LASTPARTITION+$DNBD3SIZE/1024))
-sfdisk --change-id /dev/$CHOSENDISK 3 $DNBD3ID > /dev/null
-DIALOGSTR=$DIALOGSTR"Done.\n\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-
-# BOOT
-DIALOGSTR=$DIALOGSTR"BOOT\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $BOOTID
if [ $? -eq 1 ]; then
BOOTID=$DEFBOOTID
fi
-DIALOGSTR=$DIALOGSTR" ID: $BOOTID\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
+
test $BOOTSIZE
if [ $? -eq 1 ]; then
- GBSIZE=$DEFPARTSIZE
- BOOTSIZE=$(($DEFPARTSIZE*1024*1024))
+ BOOTSIZEGB=$DEFPARTSIZE
+ BOOTSIZE=$(($DEFPARTSIZE*1024*1024*1024))
else
- GBSIZE=$BOOTSIZE
- BOOTSIZE=$(($BOOTSIZE*1024*1024))
+ BOOTSIZEGB=$BOOTSIZE
+ BOOTSIZE=$(($BOOTSIZE*1024*1024*1024))
fi
-DIALOGSTR=$DIALOGSTR" Size: $BOOTSIZE Bytes ($GBSIZE GB)\n Creating BOOT partiton...\n"
-dialog --keep-window --infobox "$DIALOGSTR" 30 50
-parted -s /dev/$CHOSENDISK mkpart primary $LASTPARTITION"m" $(($LASTPARTITION+$BOOTSIZE/1024))m set 4 boot on && LASTPARTITION=$(($LASTPARTITION+$BOOTSIZE/1024))
-sfdisk --change-id /dev/$CHOSENDISK 4 $BOOTID > /dev/null
-DIALOGSTR=$DIALOGSTR"Done.\n\n"
-dialog --and-widget --msgbox "$DIALOGSTR" 30 50 \ No newline at end of file
+
+# constructing the sfdisk input file
+START1=$((1*1024*1024/$SECTORSIZE))
+SIZE1=$(($SCRATCHSIZE/$SECTORSIZE))
+
+START2=$(($START1+$SIZE1))
+SIZE2=$(($HOMESIZE/$SECTORSIZE))
+
+START3=$(($START2+$SIZE2))
+SIZE3=$(($DNBD3SIZE/$SECTORSIZE))
+
+START4=$(($START3+$SIZE3))
+SIZE4=$(($BOOTSIZE/$SECTORSIZE))
+
+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
+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"
+
+dialog --msgbox "$DIALOGSTR" 0 0 \ No newline at end of file