X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=ybin%2Fybin;h=b333e9186920c912187b9a1fc0567c0eddd04f0e;hp=834e6ae6e518352a8b8226371f1b40adc9d798d1;hb=2ad0d7649e5042cad43a16b4a03bf53f39948316;hpb=bad5757ade771cb803eea778f61da9a4ff74b87e diff --git a/ybin/ybin b/ybin/ybin index 834e6ae..b333e91 100755 --- a/ybin/ybin +++ b/ybin/ybin @@ -28,7 +28,7 @@ if [ -n "$PATH_PREFIX" ] ; then fi PRG="${0##*/}" SIGINT="$PRG: Interrupt caught ... exiting" -VERSION=1.3.1 +VERSION=1.3.6 DEBUG=0 VERBOSE=0 TMP="${TMPDIR:-/tmp}" @@ -65,7 +65,11 @@ fi ## defaults usemount=no -fstype=hfs +if (cat /proc/cpuinfo 2> /dev/null | grep ^machine | grep -q 'CHRP IBM') ; then + fstype=raw +else + fstype=hfs +fi hfstype=tbxi hfscreator=UNIX bless=yes @@ -166,19 +170,6 @@ Update/install bootloader onto a bootstrap partition. this is useful of you don't want them to be visible from MacOS. --nonvram do not update the boot-device variable in nvram. - --device yaboot auto configuration: sets the OF boot device - default: hd: - --partition yaboot auto configuration: sets the partition - number of the root partition. default: 3 - --timeout yaboot auto configuration: sets the time yaboot - will wait for user input before booting default - image default: 40 (4 seconds) - --image yaboot auto configuration: sets the path to the - kernel image. default: /vmlinux - --label yaboot auto configuration: sets the image label - default: Linux - --root yaboot auto configuration: sets the root device - default: /dev/hda3 --force don't ever ask for confirmation -v, --verbose make $PRG more verbose --debug print boring junk only useful for debugging @@ -373,6 +364,20 @@ checkconf() fi if [ -n "$magicboot" ] ; then + ## check for bsd loader + if [ -n "$bsd" ] ; then + if [ -f /usr/lib/yaboot/ofwboot -a -r /usr/lib/yaboot/ofwboot ] ; then + BSDLOADER="/usr/lib/yaboot/ofwboot" + elif [ -f /usr/local/lib/yaboot/ofwboot -a -r /usr/local/lib/yaboot/ofwboot ] ; then + BSDLOADER="/usr/local/lib/yaboot/ofwboot" + else + echo 1>&2 "$PRG: /usr/local/lib/yaboot/ofwboot: No such file or directory" + echo 1>&2 "$PRG: With the bsd= option set you must have the bsd boot loader ofwboot" + CONFERR=1 + fi + fi + + ## convert defaultos variable case "$defaultos" in linux|Linux|GNU|Gnu|gnu) defaultos=bootyaboot @@ -757,7 +762,7 @@ util_install() ## if there is a magicboot script to install we will give it the ## hfstype (should be "tbxi") and give yaboot type "boot". - if [ "$magicboot" ] ; then + if [ -n "$magicboot" ] ; then local BTTYPE=boot else local BTTYPE="$hfstype" @@ -827,17 +832,26 @@ util_install() return 1 fi - [ "$VERBOSE" = 1 ] && echo "$PRG: Installing $bootconf to $boot..." + [ "$VERBOSE" = 1 ] && echo "$PRG: Installing $bootconf onto $boot..." hcopy -r "$bootconf" :"$CFFILE" if [ $? != 0 ] ; then echo 1>&2 "$PRG: An error occured while writing to $boot" return 1 fi + if [ -n "$BSDLOADER" ] ; then + [ "$VERBOSE" = 1 ] && echo "$PRG: Installing $BSDLOADER onto $boot..." + hcopy -r "$BSDLOADER" :ofwboot + if [ $? != 0 ] ; then + echo 1>&2 "$PRG: An error occured while writing to $boot" + return 1 + fi + fi + ## set all file's attributes, if a magicboot script exists it ## gets the configured hfstype instead of yaboot (should be ## "tbxi") so it gets booted by OF. - if [ "$magicboot" ] ; then + if [ -n "$magicboot" ] ; then [ "$VERBOSE" = 1 ] && echo "$PRG: Setting attributes on $WRAP..." hattrib -t "$hfstype" -c "$hfscreator" $INVISIBLE $LOCK :ofboot.b if [ $? != 0 ] ; then @@ -860,6 +874,15 @@ util_install() echo 1>&2 "$PRG: This is probably unimportant so we'll ignore it" fi + if [ -n "$BSDLOADER" ] ; then + [ "$VERBOSE" = 1 ] && echo "$PRG: Setting attributes on ofwboot..." + hattrib -t "bsdb" -c "$hfscreator" $INVISIBLE $LOCK :ofwboot + if [ $? != 0 ] ; then + echo 1>&2 "$PRG: Warning: error setting attributes on ofwboot" + echo 1>&2 "$PRG: This is probably unimportant so we'll ignore it" + fi + fi + ## bless the root directory so OF will find the boot file if [ "$bless" = yes ] ; then [ "$VERBOSE" = 1 ] && echo "$PRG: Blessing $boot with Holy Penguin Pee..." @@ -981,7 +1004,7 @@ mnt_install() local CFFILE=yaboot.conf fi - if [ "$magicboot" ] ; then + if [ -n "$magicboot" ] ; then local WRAP="${magicboot##*/}" fi @@ -991,7 +1014,7 @@ mnt_install() ## repoint magicboot as the real first stage loader if using the ## modern automatic generating ofboot.b. - if [ "$FIRST" ] ; then + if [ -n "$FIRST" ] ; then magicboot="$FIRST" [ "$DEBUG" = 1 ] && echo 1>&2 "$PRG: DEBUG: set magicboot to $FIRST" fi @@ -1020,7 +1043,7 @@ mnt_install() fi fi - [ "$VERBOSE" = 1 ] && echo "$INSTALLFIRST" + [ "$VERBOSE" = 1 ] && echo "$INSTALLPRIMARY" cp -f "$install" "$TARGET/$BTFILE" if [ $? != 0 ] ; then echo 1>&2 "$PRG: An error occured while writing to $boot" @@ -1028,7 +1051,7 @@ mnt_install() return 1 fi - [ "$VERBOSE" = 1 ] && echo "$PRG: Installing $bootconf on $boot..." + [ "$VERBOSE" = 1 ] && echo "$PRG: Installing $bootconf onto $boot..." cp -f "$bootconf" "$TARGET/$CFFILE" if [ $? != 0 ] ; then echo 1>&2 "$PRG: An error occured while writing to $boot" @@ -1036,13 +1059,26 @@ mnt_install() return 1 fi + if [ -n "$BSDLOADER" ] ; then + [ "$VERBOSE" = 1 ] && echo "$PRG: Installing $BSDLOADER onto $boot..." + cp -f "$BSDLOADER" "$TARGET/ofwboot" + if [ $? != 0 ] ; then + echo 1>&2 "$PRG: An error occured while writing to $boot" + umnt failure "$TARGET" + return 1 + fi + fi + if [ "$protect" = yes ] ; then [ "$VERBOSE" = 1 ] && echo "$PRG: Setting read-only attributes..." chmod a-w "$TARGET/$BTFILE" chmod a-w "$TARGET/$CFFILE" - if [ "$magicboot" ] ; then + if [ -n "$magicboot" ] ; then chmod a-w "$TARGET/ofboot.b" fi + if [ -n "$BSDLOADER" ] ; then + chmod a-w "$TARGET/ofwboot" + fi fi sync ; sync @@ -1145,7 +1181,7 @@ mkfirststage() ## assign variables for configured menu options. [ "$usemount" = no -a "$bless" = yes ] && local YB="yaboot GNU l $ofboot ,${BS}${BS}yaboot" [ "$usemount" = yes -o "$bless" = no ] && local YB="yaboot GNU l $ofboot ,${OFDIR}yaboot" - [ -n "$bsd" ] && OS="$(($OS + 1))" && local BSD="bsd BSD b $bsd ,${BS}ofwboot.elf" + [ -n "$bsd" ] && OS="$(($OS + 1))" && local BSD="ybsd BSD b $ofboot ,${BS}${BS}ofwboot/$bsd" [ -n "$macos" ] && OS="$(($OS + 1))" && local MAC="macos MacOS m $macos ,${BS}${BS}:tbxi" [ -n "$macosx" ] && OS="$(($OS + 1))" && local MX="macosx MacOSX x $macosx ,${OSXBOOT}" [ -n "$darwin" ] && OS="$(($OS + 1))" && local DW="darwin Darwin d $darwin ,${BS}${BS}:tbxi" @@ -1395,6 +1431,7 @@ if [ $# != 0 ] ; then if [ -n "$2" ] ; then device="$2" bootconf=auto + echo 1>&2 "$PRG: WARNING: Deprecated option --device" shift 2 else echo 1>&2 "$PRG: option requires an argument $1" @@ -1406,6 +1443,7 @@ if [ $# != 0 ] ; then if [ -n "$2" ] ; then timeout="$2" bootconf=auto + echo 1>&2 "$PRG: WARNING: Deprecated option --device" shift 2 else echo 1>&2 "$PRG: option requires an argument $1" @@ -1417,6 +1455,7 @@ if [ $# != 0 ] ; then if [ -n "$2" ] ; then image="$2" bootconf=auto + echo 1>&2 "$PRG: WARNING: Deprecated option --device" shift 2 else echo 1>&2 "$PRG: option requires an argument $1" @@ -1428,6 +1467,7 @@ if [ $# != 0 ] ; then if [ -n "$2" ] ; then label="$2" bootconf=auto + echo 1>&2 "$PRG: WARNING: Deprecated option --device" shift 2 else echo 1>&2 "$PRG: option requires an argument $1" @@ -1439,6 +1479,7 @@ if [ $# != 0 ] ; then if [ -n "$2" ] ; then partition="$2" bootconf=auto + echo 1>&2 "$PRG: WARNING: Deprecated option --device" shift 2 else echo 1>&2 "$PRG: option requires an argument $1" @@ -1450,6 +1491,7 @@ if [ $# != 0 ] ; then if [ -n "$2" ] ; then root="$2" bootconf=auto + echo 1>&2 "$PRG: WARNING: Deprecated option --device" shift 2 else echo 1>&2 "$PRG: option requires an argument $1"