Print this page
Have kayak install full-GPT disks and use BSD Loader

Split Close
Expand all
Collapse all
          --- old/disk_help.sh
          +++ new/disk_help.sh
↓ open down ↓ 83 lines elided ↑ open up ↑
  84   84    EXPECT=$(( $(echo "$1" | sed -e 's/[^,]//g;' | wc -c) + 0))
  85   85    for part in $(echo "$1" | sed -e 's/,/ /g;'); do
  86   86      ListDisks $part
  87   87    done | sort | uniq -c | awk '{if($1=='$EXPECT'){print $2;}}'
  88   88  }
  89   89  ListDisksUnique(){
  90   90    for term in $*; do
  91   91      ListDisksAnd $term
  92   92    done | sort | uniq | xargs
  93   93  }
  94      -SMIboot() {
  95      -  DISK=$1
  96      -  RDSK=/dev/rdsk/${DISK}p0
  97      -  S2=/dev/rdsk/${DISK}s2
  98      -  fdisk -B ${RDSK}
  99      -  disks -C
 100      -  prtvtoc -h ${RDSK} | awk '/./{p=0;} {if($1=="2"){size=$5;p=1;} if($1=="8"){start=$5;p=1;} if(p==1){print $1" "$2" "$3" "$4" "$5;}} END{size=size-start; print "0 2 00 "start" "size;}' | sort -n | fmthard -s /dev/stdin $S2
 101      -  disks -C
 102      -}
 103   94  
 104   95  BuildRpool() {
 105   96    ztype=""
 106   97    ztgt=""
 107   98    disks=`ListDisksUnique $*`
 108   99    log "Disks being used for rpool: $disks"
 109  100    if [[ -z "$disks" ]]; then
 110  101      bomb "No matching disks found to build rpool"
 111  102    fi
      103 +  rm -f /tmp/kayak-disk-list
 112  104    for i in $disks
 113  105    do
 114      -    SMIboot $i
 115  106      if [[ -n "$ztgt" ]]; then
 116  107        ztype="mirror"
 117  108      fi
 118      -    ztgt="$ztgt ${i}s0"
 119      -    INSTALL_GRUB_TGT="$INSTALL_GRUB_TGT /dev/rsdk/${i}s2"
      109 +    ztgt="$ztgt ${i}"
      110 +    # Keep track of disks for later...
      111 +    echo ${i} >> /tmp/kayak-disk-list
 120  112    done
 121  113    log "zpool destroy rpool (just in case we've been run twice)"
 122  114    zpool destroy rpool 2> /dev/null
 123  115    log "Creating rpool with: zpool create -f rpool $ztype $ztgt"
      116 +  # Just let "zpool create" do its thing. We want GPT disks now.
 124  117    zpool create -f rpool $ztype $ztgt || bomb "Failed to create rpool"
 125  118    BuildBE
 126  119  }
 127  120  GetTargetVolSize() {
 128  121      # Aim for 25% of physical memory (minimum 1G)
 129  122      # prtconf always reports in megabytes
 130  123      local mem=`/usr/sbin/prtconf | /bin/awk '/^Memory size/ { print $3 }'`
 131  124      if [[ $mem -lt 4096 ]]; then
 132  125          local vsize=1
 133  126      else
↓ open down ↓ 54 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX