From 8ee0172cdd93fc92e129a23c3acd406608e67375 Mon Sep 17 00:00:00 2001 From: zorro Date: Tue, 21 Sep 2010 14:52:03 +0800 Subject: [PATCH 1/4] modify the usage --- operation/mkTmpfstab.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operation/mkTmpfstab.sh b/operation/mkTmpfstab.sh index 3aa27bc..7064ae6 100755 --- a/operation/mkTmpfstab.sh +++ b/operation/mkTmpfstab.sh @@ -153,7 +153,7 @@ mdfyTmpFstab(){ # Description: print the helped message ########################################################################### usage(){ - echo "Usage: mkraid [-h|--help] <-f|--from oldfstab> <-t|--to tmpfstab>" + echo "Usage: mkTmpfstab.sh [-h|--help] <-f|--from oldfstab> <-t|--to tmpfstab>" echo "This shell is just used to modify a false of mkinitrd, when used UUID to specify a raid device in fstab the mkinitrd always analysis false, not only one devices would be found according to the UUID. So I write this shell for makeinitrd. The shell will take the old fstab(usually is /etc/fstab) to a temp place, then change the UUID to right device name in the temp fstab. The makeinitrd shell should use the temp fstab file to make the initrd and stay the old fstab, after make initrd remove the temp fstab." echo"" echo "ARGUMENT: From 8432cbfbceff52366ff74e9b421de4fa437c756b Mon Sep 17 00:00:00 2001 From: zorro Date: Tue, 21 Sep 2010 17:16:04 +0800 Subject: [PATCH 2/4] add a function in mkTmpfstab.sh for check arguments --- operation/mkTmpfstab.sh | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/operation/mkTmpfstab.sh b/operation/mkTmpfstab.sh index 7064ae6..d26bbd1 100755 --- a/operation/mkTmpfstab.sh +++ b/operation/mkTmpfstab.sh @@ -111,7 +111,7 @@ mdfyTmpFstab(){ local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) for i in $UUIDFROMFSTAB do - blkid -t$i >/tmp/.blkid.tmp + blkid -t$i >/tmp/.blkid.tmp local NAMEFROMUUID=`cut -f 1 -d : /tmp/.blkid.tmp` if [ ! "${NAMEFROMUUID}" ];then echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE @@ -143,7 +143,24 @@ mdfyTmpFstab(){ sed -i s@$i@$LASTNAME@g $1 LASTNAME='' done - rm /tmp/.blkid.tmp + rm /tmp/.blkid.tmp +} + +########################################################################### +# Function Name: checkArgument() +# Input: $PATHFROM $PATHTO +# Return: nothing +# Description: check the arguments +########################################################################### +checkArgument(){ + if [ ! -f $1 ];then + echo "Can not find pathfrom $1" >>$LOGDIR$LOGFILE + exit 1 + fi + if [ ! $2 ];then + echo "pathto argument is empty!!" >>$LOGDIR$LOGFILE + exit 1 + fi } ########################################################################### @@ -153,7 +170,7 @@ mdfyTmpFstab(){ # Description: print the helped message ########################################################################### usage(){ - echo "Usage: mkTmpfstab.sh [-h|--help] <-f|--from oldfstab> <-t|--to tmpfstab>" + echo "Usage: mkraid [-h|--help] <-f|--from oldfstab> <-t|--to tmpfstab>" echo "This shell is just used to modify a false of mkinitrd, when used UUID to specify a raid device in fstab the mkinitrd always analysis false, not only one devices would be found according to the UUID. So I write this shell for makeinitrd. The shell will take the old fstab(usually is /etc/fstab) to a temp place, then change the UUID to right device name in the temp fstab. The makeinitrd shell should use the temp fstab file to make the initrd and stay the old fstab, after make initrd remove the temp fstab." echo"" echo "ARGUMENT: @@ -197,6 +214,7 @@ NOWDATE=`date` echo $NOWDATE >>$LOGDIR$LOGFILE setArgument $@ +checkArgument $PATHFROM $PATHTO cpTmpfstab $PATHFROM $PATHTO mdfyTmpFstab $PATHTO echo "make temp fstab all right" >>$LOGDIR$LOGFILE From d1e025832d738ba4887530b87e909b436a1edffa Mon Sep 17 00:00:00 2001 From: zorro Date: Mon, 27 Sep 2010 15:40:24 +0800 Subject: [PATCH 3/4] do some perfect on mkTmpfstab.sh and mkraidconf.sh --- operation/mkTmpfstab.sh | 94 +++++++++++++++++------------------------ operation/mkraidconf.sh | 12 +----- 2 files changed, 40 insertions(+), 66 deletions(-) diff --git a/operation/mkTmpfstab.sh b/operation/mkTmpfstab.sh index d26bbd1..54aa009 100755 --- a/operation/mkTmpfstab.sh +++ b/operation/mkTmpfstab.sh @@ -40,19 +40,11 @@ setArgument(){ for((i=0; i<${#ARGV_MKFSTAB[@]}; i++)) do case ${ARGV_MKFSTAB[$i]} in - --from) + --from|-f) ((i++)) PATHFROM=${ARGV_MKFSTAB[$i]} ;; - --to) - ((i++)) - PATHTO=${ARGV_MKFSTAB[$i]} - ;; - -f) - ((i++)) - PATHFROM=${ARGV_MKFSTAB[$i]} - ;; - -t) + --to|-t) ((i++)) PATHTO=${ARGV_MKFSTAB[$i]} ;; @@ -77,15 +69,7 @@ setArgument(){ # Description: copy the old fstab to a temp place ########################################################################### cpTmpfstab(){ - local i - local TMPPATH=`echo "$2"|sed -e s/[/]/' '/g` - for i in $TMPPATH - do - continue - done - local PATHTOFILE=$i - local PATHTODIR=`echo "$2"|sed -e s/"$PATHTOFILE"/''/g` - + local PATHTODIR=`dirname $2` mkdir -p $PATHTODIR 2>>$LOGDIR$LOGFILE if [ $? != "0" ];then echo "can not makedir named $PATHTODIR" >>$LOGDIR$LOGFILE @@ -106,44 +90,42 @@ cpTmpfstab(){ ########################################################################### mdfyTmpFstab(){ local i - local j - local LASTNAME='' - local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) - for i in $UUIDFROMFSTAB - do - blkid -t$i >/tmp/.blkid.tmp - local NAMEFROMUUID=`cut -f 1 -d : /tmp/.blkid.tmp` - if [ ! "${NAMEFROMUUID}" ];then - echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE - exit 1 - fi + local j + local LASTNAME='' + local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) + for i in $UUIDFROMFSTAB + do + local NAMEFROMUUID=`blkid -t$i |cut -f 1 -d :` + if [ ! "${NAMEFROMUUID}" ];then + echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE + exit 1 + fi - if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then - LASTNAME=$NAMEFROMUUID - else - for j in $NAMEFROMUUID - do - if [ `echo $j|grep 'md'` ];then - if [ ! $LASTNAME ]; then - LASTNAME=$j - else - echo "too many raid devices be found" >>$LOGDIR$LOGFILE - exit 1 - fi - else - if [ `mdadm -Ds -v|grep -w $j` ];then - continue - else - echo "too many partitions be found" >>$LOGDIR$LOGFILE - exit 1 - fi - fi - done - fi - sed -i s@$i@$LASTNAME@g $1 - LASTNAME='' - done - rm /tmp/.blkid.tmp + if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then + LASTNAME=$NAMEFROMUUID + else + for j in $NAMEFROMUUID + do + if [ `echo $j|grep 'md'` ];then + if [ ! $LASTNAME ]; then + LASTNAME=$j + else + echo "too many raid devices be found" >>$LOGDIR$LOGFILE + exit 1 + fi + else + if [ `mdadm -Ds -v|grep -w $j` ];then + continue + else + echo "too many partitions be found" >>$LOGDIR$LOGFILE + exit 1 + fi + fi + done + fi + sed -i s@$i@$LASTNAME@g $1 + LASTNAME='' + done } ########################################################################### diff --git a/operation/mkraidconf.sh b/operation/mkraidconf.sh index b20ec66..b9cf5ec 100755 --- a/operation/mkraidconf.sh +++ b/operation/mkraidconf.sh @@ -13,15 +13,7 @@ if [ ! $1 ]; then exit 1 fi -CONPATH=`echo $1|sed -e s/[/]/' '/g` -for i in $CONPATH -do - continue -done - -CONFILE=$i -CONDIR=`echo $1|sed -e s/$CONFILE/''/g` - +CONDIR=`dirname $1` if [ ! -d $CONDIR ]; then mkdir -p $CONDIR if [ $? != 0 ]; then @@ -29,5 +21,5 @@ if [ ! -d $CONDIR ]; then exit 1 fi fi -mdadm -Ds -v > $CONDIR$CONFILE +mdadm -Ds -v > $1 From 729459754d079811d14b3fe19178179e07ea29e8 Mon Sep 17 00:00:00 2001 From: zorro Date: Mon, 27 Sep 2010 17:57:08 +0800 Subject: [PATCH 4/4] modify mkTmpfstab.sh for by-id --- operation/mkTmpfstab.sh | 86 ++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 32 deletions(-) diff --git a/operation/mkTmpfstab.sh b/operation/mkTmpfstab.sh index 54aa009..1af61af 100755 --- a/operation/mkTmpfstab.sh +++ b/operation/mkTmpfstab.sh @@ -90,42 +90,57 @@ cpTmpfstab(){ ########################################################################### mdfyTmpFstab(){ local i - local j - local LASTNAME='' - local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) - for i in $UUIDFROMFSTAB - do - local NAMEFROMUUID=`blkid -t$i |cut -f 1 -d :` - if [ ! "${NAMEFROMUUID}" ];then - echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE - exit 1 - fi + local j + local LASTNAME='' - if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then - LASTNAME=$NAMEFROMUUID + #replace UUID in the temp fstab + local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1) + if [ -n "$UUIDFROMFSTAB" ];then + for i in $UUIDFROMFSTAB + do + local NAMEFROMUUID=`blkid -t$i |cut -f 1 -d :` + if [ ! "${NAMEFROMUUID}" ];then + echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE + exit 1 + fi + + if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then + LASTNAME=$NAMEFROMUUID + else + for j in $NAMEFROMUUID + do + if [ `echo $j|grep 'md'` ];then + if [ ! $LASTNAME ]; then + LASTNAME=$j else - for j in $NAMEFROMUUID - do - if [ `echo $j|grep 'md'` ];then - if [ ! $LASTNAME ]; then - LASTNAME=$j - else - echo "too many raid devices be found" >>$LOGDIR$LOGFILE - exit 1 - fi - else - if [ `mdadm -Ds -v|grep -w $j` ];then - continue - else - echo "too many partitions be found" >>$LOGDIR$LOGFILE - exit 1 - fi - fi - done + echo "too many raid devices be found" >>$LOGDIR$LOGFILE + exit 1 fi - sed -i s@$i@$LASTNAME@g $1 - LASTNAME='' + else + if [ `mdadm -Ds -v|grep -w $j` ];then + continue + else + echo "too many partitions be found" >>$LOGDIR$LOGFILE + exit 1 + fi + fi done + fi + sed -i s@$i@$LASTNAME@g $1 + LASTNAME='' + done + fi + + #replace by-id in the temp fstab + local BYIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "by-id") { print $1}}' $1) + if [ -n "$BYIDFROMFSTAB" ];then + for i in $BYIDFROMFSTAB + do + local NAMEFROMBYID=`readlink $BYIDFROMFSTAB` + NAMEFROMBYID="/dev/`basename $NAMEFROMBYID`" + sed -i s@$i@$NAMEFROMBYID@g $1 + done + fi } ########################################################################### @@ -145,6 +160,13 @@ checkArgument(){ fi } +########################################################################### +# Function Name: () +# Input: $PATHFROM $PATHTO +# Return: nothing +# Description: check the arguments +########################################################################### + ########################################################################### # Function Name: usage() # Input: nothing