On Wed, Jul 4, 2012 at 1:20 AM, Kaddeh <[email protected]> wrote:
> Very well done, reminded me of some code that I wrote (poorly, I might add)
> but, I dug it up and found some changes that you might be able to implement
> instead of lines and lines of static configs.  That being said, take some of
> these changes into consideration.
>
> Dynamic detection of drives and partitions:
>
> # Get Existing Drives
> existing_drives=$(fdisk -l | grep /dev | grep -i disk | cut -c11-13)
>
> # Set default drive
> default_drive=$(fdisk -l | grep --max-count=1 /dev | cut -c11-13)
>
> echo -e "What drive do you want to partition? [$existing_drives]: \c"
> read drive
>
> and then creating the partition table later:
>
> # Make Drive Selection
> if [ "$drive" == "" ]
> then
>       selected_drive=$default_drive
> else
>       # Verify Drive Exists
>       does_exist=$(fdisk -l | grep --max-count=1 -ci $drive)
>
>       if [ "$does_exist" == "1" ]
>       then
>               selected_drive=$drive
>       else
>               echo -e "The selected drive" $drive "does not exist.  Using"
> $default_drive "instead."
>               selected_drive=$default_drive
>       fi
> fi
>
> num_partitions=$(fdisk -l | grep ^/dev | grep -ic $selected_drive)
>
> echo "There are" $num_partitions "partitions on" $selected_drive
>
> partitions=1
>
> # Clear existing partition file
> rm -rf partition_table
> touch partition_table
>
> while [ "$partitions" -le "$num_partitions" ]
> do
>       # Find partition numbers
>       edit_partitions=$(fdisk -l | grep ^/dev/$selected_drive | cut -c9)
>       
>       # Parse out extra partitons
>       if [ "$partitions" == "1" ]
>       then
>               work_partition=$(echo -e $edit_partitions | cut -c$partitions)
>               # Write to partition_table file
>               echo -e "d\n$work_partition" >> partition_table
>       else
>               if [ "$partitions_cut" == "" ]
>               then
>                       # If First Partition after partition 1, cut off 
> $partitions + 1
>                       partitions_cut=$(($partitions+1))
>               else
>                       partitions_cut=$(($partitions_cut+1))
>               fi
>               work_partition=$(echo -e $edit_partitions | cut 
> -c$partitions_cut)
>               # Write to partition_table file
>               echo -e "d\n$work_partition" >> partition_table
>               ((partitions_cut += 1))
>       fi
>       ((partitions += 1))
>       
> done
>
> # build the rest of the table
> # Get Total System Memory
> total_mem=$(cat /proc/meminfo | grep -i memtotal | cut -c16- | sed s/\ // |
> sed s/kB//)
> swap_space=$(expr $(expr $total_mem + $total_mem) / 1024)
>
> # Write first partition to file
> echo -e "n\np\n1\n\n+100M\n" >> partition_table
>
> # Write Swap Space (double system memory)
> echo -e "n\np\n2\n\n+"$swap_space"M\n">> partition_table
>
> # Write / partition to file
> echo -e "n\np\n3\n\n\n" >> partition_table
>
> # Write partition setting to file and drive write
> echo -e "a\n1\nt\n2\n82\nw\n" >> partition_table
>
> # Set drive number variables
> boot_drive=$(echo $selected_drive"1")
> swap_drive=$(echo $selected_drive"2")
> root_drive=$(echo $selected_drive"3")
>
> # KEEP THIS COMMENTED OUT BELLOW HERE
> fdisk /dev/$selected_drive < partition_table
>
> Mainly due to the fact that you statically set the UUIDs of the drive that
> you want to use.
>
> Cheers,
> Kad

Thank you very much.

I'd gladly entertain a pull request if you'd like to integrate it. I'm
not doing much in the way of active development on the script until I
have either (or both) of my machines operational again; they're almost
there, but I'm a sticking point with the 3.3.8 kernel, got past that,
and have now discovered that stable genkernel and stable
gentoo-sources don't play well together. (Because stable genkernel is
using a slightly older version of busybox which doesn't know about
some moved kernel header files). That stuff is slowly moving on b.g.o,
and I'm slowly working around at home. It's only a matter of time, of
which nobody seems to have enough...

-- 
:wq

Reply via email to