diff options
author | Lucas Affonso Xavier de Morais | 2014-07-09 21:03:25 +0200 |
---|---|---|
committer | Michael Pereira Neves | 2014-10-28 14:14:49 +0100 |
commit | d24bf20175538211fb1c55c733a783ef2250a4bb (patch) | |
tree | c76482d86fd5442e15458a7f8dc334668e173483 /remote/modules | |
parent | [partitioner] using sfdisk to create msdos partitions. fully using the dialog... (diff) | |
download | tm-scripts-d24bf20175538211fb1c55c733a783ef2250a4bb.tar.gz tm-scripts-d24bf20175538211fb1c55c733a783ef2250a4bb.tar.xz tm-scripts-d24bf20175538211fb1c55c733a783ef2250a4bb.zip |
[partitioner] added support to GTP and other few improvements.
Diffstat (limited to 'remote/modules')
-rw-r--r-- | remote/modules/partitioner/config | 1 | ||||
-rwxr-xr-x | remote/modules/partitioner/partitioner.sh | 233 |
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 |