diff options
author | Lucas Affonso Xavier de Morais | 2014-07-07 18:05:07 +0200 |
---|---|---|
committer | Michael Pereira Neves | 2014-10-28 14:14:49 +0100 |
commit | f60013fcfcc58c10d4a0661d14239d39f7c136d1 (patch) | |
tree | d3e5d3e830d49545bc89117e68361a25c82aa76c /remote/modules | |
parent | [partitioner] using dialog to print messages. (diff) | |
download | tm-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.
Diffstat (limited to 'remote/modules')
-rwxr-xr-x | remote/modules/partitioner/partitioner.sh | 169 |
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 |