1 #
   2 # ident "%Z%%M% %I%     %E% SMI"
   3 #
   4 # Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
   5 # Use is subject to license terms.
   6 #
   7 # CDDL HEADER START
   8 #
   9 # The contents of this file are subject to the terms of the
  10 # Common Development and Distribution License, Version 1.0 only
  11 # (the "License").  You may not use this file except in compliance
  12 # with the License.
  13 #
  14 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  15 # or http://www.opensolaris.org/os/licensing.
  16 # See the License for the specific language governing permissions
  17 # and limitations under the License.
  18 #
  19 # When distributing Covered Code, include this CDDL HEADER in each
  20 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  21 # If applicable, add the following below this CDDL HEADER, with the
  22 # fields enclosed by brackets "[]" replaced with your own identifying
  23 # information: Portions Copyright [yyyy] [name of copyright owner]
  24 #
  25 # CDDL HEADER END
  26 #
  27 # initial properties, set during installation
  28 # NOTICE: bootpath and boot-args should be set by this point.
  29 #================================================================
  30 getprop bootpath bp
  31 getprop boot-args bootargs
  32 if .streq ( "${bootargs}"X , kernel/unixX )
  33         set bootargs
  34 endif
  35 
  36 set ba0 bogus_response
  37 set cmd_err 0
  38 
  39 # display current defaults
  40 echo "                     <<< Current Boot Parameters >>>
  41 Boot path: ${bp}
  42 Boot args: ${bootargs}"
  43 
  44 #comment out following line if auto booting is not desired
  45 set boot_timeout 5
  46 
  47 # display initial boot prompt
  48 echo '
  49 Type    b [file-name] [boot-flags] <ENTER>      to boot with options
  50 or      i <ENTER>                               to enter boot interpreter
  51 or      <ENTER>                                 to boot with defaults'
  52 
  53 if ! .streq ( ${boot_timeout}X , X )
  54         echo "
  55                   <<< timeout in ${boot_timeout} seconds >>>"
  56 endif
  57 
  58 echo -n '
  59 Select (b)oot or (i)nterpreter: '
  60 
  61 # read response to boot prompt
  62 if .streq ( ${boot_timeout}X , X )
  63         read  ba0 ba1 ba2 ba3 ba4 ba5 ba6 ba7 ba8
  64 else
  65         readt ${boot_timeout} ba0 ba1 ba2 ba3 ba4 ba5 ba6 ba7 ba8
  66 endif
  67 
  68 # process response to boot prompt
  69 # i command
  70 if .streq ( ${ba0}X , iX )
  71         echo 'Entering boot interpreter - type ctrl-d to resume boot'
  72         console
  73         if .streq ( ${bootfile}X , X )          # if bootfile not set
  74                 set bootfile $def_bootfile      # set to default
  75         endif
  76 
  77 # b command
  78 elseif .streq ( ${ba0}X , bX ) || .streq ( ${ba0}X , bootX )
  79         if .strneq ( ${ba1}X , \\- , 1 )        # if first arg is a flag
  80                                                 # save it in bootargs
  81                 set bootargs "$ba1 $ba2 $ba3 $ba4 $ba5 $ba6 $ba7 $ba8"
  82                 set bootfile $def_bootfile      # set default boot file
  83         elseif ! .streq ( ${ba1}X , X )         # else if first arg is present
  84                 set bootfile $ba1               # set bootfile to it
  85                 set bootargs "$ba2 $ba3 $ba4 $ba5 $ba6 $ba7 $ba8"
  86         else                                    # else
  87                 set bootfile $def_bootfile      # set default boot file
  88         endif
  89         setprop boot-args "$bootargs"
  90 
  91 # anything else
  92 else                                            # no command
  93         if ! .streq ( ${ba0}X , X )
  94                 echo "invalid response: \"${ba0}\""
  95                 set cmd_err 1                   # user entered invalid response
  96         endif
  97         if .streq ( ${bootfile}X , X )          # if bootfile not set
  98                 set bootfile $def_bootfile      # set to default
  99         endif
 100 endif
 101 
 102 # other stuff
 103 
 104 setprop whoami $bootfile
 105 
 106 # 'b', 'i', or <ENTER> are the only valid responses
 107 if ( ${cmd_err} == 1 )
 108         source /etc/bootrc
 109 else
 110         run $bootfile
 111         echo "could not run ${bootfile}"
 112         set bootfile
 113         source /etc/bootrc
 114 endif