1 #!/usr/bin/bash
   2 
   3 #
   4 # This file and its contents are supplied under the terms of the
   5 # Common Development and Distribution License ("CDDL"), version 1.0.
   6 # You may only use this file in accordance with the terms of version
   7 # 1.0 of the CDDL.
   8 #
   9 # A full copy of the text of the CDDL should have accompanied this
  10 # source.  A copy of the CDDL is also available via the Internet at
  11 # http://www.illumos.org/license/CDDL.
  12 #
  13 
  14 #
  15 # Copyright 2017 OmniTI Computer Consulting, Inc. All rights reserved.
  16 #
  17 
  18 RPOOL=${1:-rpool}
  19 ZFS_IMAGE=/root/*.zfs.bz2
  20 keyboard_layout=${2:-US-English}
  21 
  22 zpool list $RPOOL >& /dev/null
  23 if [[ $? != 0 ]]; then
  24    echo "Cannot find root pool $RPOOL"
  25    echo "Press RETURN to exit"
  26    read
  27    exit 1
  28 fi
  29 
  30 echo "Installing from ZFS image $ZFS_IMAGE"
  31 
  32 
  33 . /kayak/disk_help.sh
  34 . /kayak/install_help.sh
  35 
  36 reality_check() {
  37     # Make sure $1 (hostname) is a legit one.
  38     echo $1 | egrep '^[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]$' > /dev/null
  39     if [[ $? != 0 ]]; then
  40         echo "[$1] is not a legitimate hostname."
  41         return -1
  42     fi
  43     return 0
  44 }
  45 
  46 # Select a host name
  47 NEWHOST="unknown"
  48 until [[ $NEWHOST == "" ]]; do
  49     HOSTNAME=$NEWHOST
  50     echo -n "Please enter a hostname or press RETURN if you want [$HOSTNAME]: "
  51     read NEWHOST
  52     if [[ $NEWHOST != "" ]]; then
  53         reality_check $NEWHOST
  54         if [[ $? != 0 ]]; then
  55             NEWHOST=$HOSTNAME
  56         fi
  57     fi
  58 done
  59 
  60 # Select a timezone.
  61 NEWTZ=$TZ
  62 until [[ $NEWTZ == "" ]]; do
  63     TZ=$NEWTZ
  64     echo "Current timezone is [$TZ]:  " `TZ=$TZ date`
  65     echo "(NOTE: If time/date above looks wrong, the timezone name doesn't exist.)"
  66     echo -n "Enter a new timezone, or just hit RETURN to accept [$TZ]: "
  67     read NEWTZ
  68 done
  69 
  70 # Because of kayak's small miniroot, just use C as the language for now.
  71 LANG=C
  72 
  73 BuildBE $RPOOL $ZFS_IMAGE
  74 ApplyChanges $HOSTNAME $TZ $LANG $keyboard_layout
  75 MakeBootable $RPOOL
  76 zpool list -v $RPOOL
  77 echo ""
  78 beadm list
  79 echo ""
  80 echo "$RPOOL now has a working and mounted boot environment, per above."
  81 echo "Once back at the main menu, you can reboot from there, or"
  82 echo "re-enter the shell to modify your new BE before its first boot."
  83 echo -n "Press RETURN to go back to the menu: "
  84 read