X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=ybin%2Fybin;h=70c0bcbea48112aae077acb7eebc2385725af2a2;hp=19ee2aab580188abb50821a02dccd06d84b9d83f;hb=HEAD;hpb=ac8fbd5ad52b43b820973f1828a29f85bed13a1d diff --git a/ybin/ybin b/ybin/ybin index 19ee2aa..70c0bcb 100755 --- a/ybin/ybin +++ b/ybin/ybin @@ -29,7 +29,7 @@ fi PRG="${0##*/}" ABSPRG="$0" SIGINT="$PRG: Interrupt caught ... exiting" -VERSION=1.3.14 +VERSION=1.3.17 DEBUG=0 VERBOSE=0 TMP="${TMPDIR:-/tmp}" @@ -73,7 +73,9 @@ fi ## defaults usemount=no -if (cat /proc/cpuinfo 2> /dev/null | grep ^machine | grep -q 'CHRP IBM') ; then +if (cat /proc/cpuinfo 2> /dev/null | grep ^platform | grep -q 'pSeries') ; then + fstype=raw +elif (cat /proc/cpuinfo 2> /dev/null | grep ^platform | grep -q 'PowerNV') ; then fstype=raw else fstype=hfs @@ -436,22 +438,21 @@ checkconf() fi if [ "$nonvram" = 0 ] ; then - ## see if nvsetenv or nvram exists and is executable - for program in nvsetenv nvram ; do - if (command -v $program > /dev/null 2>&1) && [ -x `command -v $program` ] ; then - NVRAM_PROG=$program - break - fi - done - if [ -z "$NVRAM_PROG" ] ; then - nonvram=1 - echo 1>&2 "$PRG: Warning: \`nvsetenv' and \`nvram' could not be found, nvram will not be updated" - fi + ## see if nvsetenv exists and is executable + if (command -v nvsetenv > /dev/null 2>&1) ; then + [ -x `command -v nvsetenv` ] || MISSING=1 ; else MISSING=1 fi if [ "$nonvram" = 0 ] ; then ## if nvsetenv exists see if its the old broken version - if [ "$NVRAM_PROG" = "nvsetenv" ] && ! nvsetenv --version > /dev/null 2>&1 ; then + if [ "$MISSING" != 1 ] ; then + nvsetenv --version > /dev/null 2>&1 || OLD=1 + else + nonvram=1 + echo 1>&2 "$PRG: Warning: \`nvsetenv' could not be found, nvram will not be updated" + fi + + if [ "$OLD" = 1 ] ; then ## i check this myself to avoid misleading error ## messages. nvsetenv should REALLY support --version. if [ ! -e /dev/nvram ] ; then @@ -505,7 +506,11 @@ checkconf() echo 1>&2 [ "$nonvram" = 0 ] && echo 1>&2 "$PRG: OldWorld PowerMac, nvram will not be updated" nonvram=1 - elif (cat /proc/cpuinfo 2> /dev/null | grep ^machine | grep -q 'CHRP IBM') ; then + elif (cat /proc/cpuinfo 2> /dev/null | grep ^platform | grep -q 'pSeries') ; then + ## IBM hardware does not need nvram update AFAICT + nonvram=1 + ADDNOTE=yes + elif (cat /proc/cpuinfo 2> /dev/null | grep ^platform | grep -q 'PowerNV') ; then ## IBM hardware does not need nvram update AFAICT nonvram=1 ADDNOTE=yes @@ -927,11 +932,7 @@ util_install() if [ "$nonvram" = 0 ] ; then [ "$VERBOSE" = 1 ] && echo "$PRG: Updating OpenFirmware boot-device variable in nvram..." [ "$DEBUG" = 1 ] && echo 1>&2 "$PRG: DEBUG: boot-device=${ofboot},${OFFILE}" - if [ "$NVRAM_PROG" = "nvsetenv" ] ; then - nvsetenv boot-device "${ofboot},${OFFILE}" - else - nvram -p common --update-config boot-device="${ofboot},${OFFILE}" - fi + nvsetenv boot-device "${ofboot},${OFFILE}" if [ $? != 0 ] ; then echo 1>&2 "$PRG: An error occured while updating nvram, we'll ignore it" fi @@ -1117,11 +1118,7 @@ mnt_install() if [ "$nonvram" = 0 ] ; then [ "$VERBOSE" = 1 ] && echo "$PRG: Updating OpenFirmware boot-device variable in nvram..." [ "$DEBUG" = 1 ] && echo 1>&2 "$PRG: DEBUG: boot-device=${ofboot},${OFFILE}" - if [ "$NVRAM_PROG" = "nvsetenv" ] ; then - nvsetenv boot-device "${ofboot},${OFFILE}" - else - nvram -p common --update-config boot-device="${ofboot},${OFFILE}" - fi + nvsetenv boot-device "${ofboot},${OFFILE}" if [ $? != 0 ] ; then echo 1>&2 "$PRG: An error occured while updating nvram, we'll ignore it" fi @@ -1161,6 +1158,7 @@ raw_install() fi sync ; sync [ "$VERBOSE" = 1 ] && echo "$PRG: Installation successful" + return 0 } ## make sure the first stage ofboot generator is compatible. @@ -1667,14 +1665,15 @@ checkconf || exit 1 if [ "x$bootonce" != "x" ]; then foundlabel=`sed s/\#.*// $bootconf | grep "label=$bootonce$" | wc -l` - if [ "$nonvram" = 0 ]; then + if [ "$nonvram" = 1 ]; then echo 1>&2 "$PRG: --bootonce specified, but nvsetenv not available." exit 1 fi if [ "$foundlabel" = 1 ]; then nvsetenv boot-once "$bootonce" foundlabel=`nvsetenv boot-once` - if [ "$foundlabel" != "boot-once=$bootonce" ]; then + if [ "$foundlabel" != "boot-once=$bootonce" -a \ + "$foundlabel" != "$bootonce" ]; then echo 1>&2 "$PRG: Could not nvsetenv boot-once $bootonce" exit 1 fi