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

