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

On Sun, Jul 1, 2012 at 5:28 PM, Michael Mol <mike...@gmail.com> wrote:

> On Wed, Jun 27, 2012 at 10:13 PM, Michael Mol <mike...@gmail.com> wrote:
> > Very rough, and very much a works-for-me thing, but I thought I'd share.
> >
> > https://github.com/mikemol/gentoo-install
> >
> > I wrote it to ease the pain of the "install-configure-build" cycle I
> > was going through to figure out what was breaking glibc.
>
> Just a bit of a followup. I've got most of the bugs worked out, and
> I'm very pleased with it. I've used it to get through most of the
> install sequence for inara, and it's currently on package 113/158 of
> its second pass of 'emerge -e @world'.
>
> If anyone else gets around to trying it, let me know. :)
>
> --
> :wq
>
>

Reply via email to