#!/bin/sh if [ "$#" -ne "2" ] && [ "$#" -ne "3" ] ; then echo "make-me-bootable [noaction]" exit 1 fi drivetouse=$2 boot_drv="" boot_part="" root_drv="" root_part="" if [ ! "$LOGFILE" ]; then LOGFILE="/tmp/mondorestore2.log" fi dummy="$3" activepart=`parted2fdisk -l $drivetouse | tr -s '\t' ' ' | grep "$drivetouse" | grep '*' | cut -d' ' -f1` for i in `cat $1 | tr -s '\t' ' ' | cut -d' ' -f1 | grep -vE "/dev/fd|none|#"` ; do # Warning wrong if LVM ! drive=`echo $i | sed -e 's/[0-9]*$//' -e 's/\([0-9]\)p$/\1/'` if [ "$drivetouse" = "$drive" ]; then # We can continue as this is the drive we ned to work on partno=`echo $i | sed -e 's/^.*[^0-9]\([0-9]*\)$/\1/'` mountpt=`grep "$i " $1 | tr -s '\t' ' ' | cut -d' ' -f2` if [ "$mountpt" = "/" ] ; then root_drv=$drive root_part=$partno elif [ "$mountpt" = "/boot" ] ; then boot_drv=$drive boot_part=$partno fi fi done if [ "$boot_drv" ] ; then drive=$boot_drv partno=$boot_part elif [ "$root_drv" ] ; then drive=$root_drv partno=$root_part else driveline=`grep -E '[ ]/boot[ ]' $1` [ ! "$driveline" ] && driveline=`grep -E '[ ]/[ ]' $1` partno=`echo "$driveline" | cut -d' ' -f1 | awk -F "[a-z]" '{print $NF;}'` # echo "driveline=$driveline --> partno=$partno" fi if [ "$drive" ] ; then if [ "$partno" = "0" ] || [ ! "$partno" ] ; then partno="1" fi cmd="" for p in "$activepart"; do # First desactivate active partitions (coming from previous usage) cmd="${cmd}a\n$p\n" if [ "$dummy" != "" ] ; then echo "Will desactivate $p on $drive" >> $LOGFILE fi done # Then activate the one which should if [ "$dummy" != "" ] ; then echo "Would activate $partno on $drive" >> $LOGFILE else echo -en "${cmd}a\n$partno\np\nw\n" | parted2fdisk $drive >> $LOGFILE 2>> $LOGFILE fi fi exit 0