Ignore:
Timestamp:
10/26/13 17:42:00 (9 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, 9.2-release, releng/10.0, releng/10.0.1, releng/10.0.2
Children:
38938e0
Parents:
7aa6eec
Message:

Update pc-textinstall.sh, add options to change ZFS dataset layout / options

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src-sh/pc-installdialog/pc-installdialog.sh

    rd34bc77 r59f05558  
    1717# Default ZFS layout 
    1818ZFSLAYOUT="/,/root,/tmp(compress=lz4),/usr(canmount=off),/usr/home,/usr/jails,/usr/obj(compress=lz4),/usr/pbi,/usr/ports(compress=lz4),/usr/ports/distfiles(compress=off),/usr/src(compress=lz4),/var(canmount=off),/var/audit(compress=lz4),/var/log(compress=lz4),/var/tmp(compress=lz4)" 
     19 
     20change_zfs() 
     21{ 
     22  get_zfs_layout 
     23  gen_pc-sysinstall_cfg 
     24} 
     25 
     26get_zfs_layout() 
     27{ 
     28  while : 
     29  do 
     30    dOpts="done \"Exit dataset menu\" add \"New ZFS dataset\"" 
     31    for z in `echo $ZFSLAYOUT | sed 's|,| |g'` 
     32    do 
     33       d=`echo $z | cut -d '(' -f 1` 
     34       echo "$z" | grep -q '(' 
     35       if [ $? -eq 0 ] ; then 
     36         desc="(`echo $z | cut -d '(' -f 2`" 
     37       else 
     38         desc="" 
     39       fi 
     40       dOpts="$dOpts $d \"$desc\"" 
     41    done 
     42    get_dlg_ans "--menu \"Select dataset to edit\" 22 78 15 ${dOpts}" 
     43    if [ -z "$ANS" ] ; then 
     44       exit_err "Invalid dataset selected!" 
     45    fi 
     46    case $ANS in 
     47       done) break ;; 
     48        add) add_dataset ;; 
     49          *) edit_dataset "$ANS" ;; 
     50    esac 
     51  done 
     52} 
     53 
     54edit_dataset() 
     55{ 
     56    # Ask what to do on this dataset 
     57    get_dlg_ans "--menu \"What to do on this dataset?\" 22 50 15 edit 'Set ZFS options' delete 'Remove the dataset' cancel 'Cancel'" 
     58    if [ -z "$ANS" ] ; then 
     59       exit_err "Invalid dataset selected!" 
     60    fi 
     61    case $ANS in 
     62      cancel) return ;; 
     63        edit) get_dlg_ans "--inputbox 'Enter ZFS option flags, using a | seperator.' 8 40" 
     64              NEWLAYOUT="" 
     65              for z in `echo $ZFSLAYOUT | sed 's|,| |g'` 
     66              do 
     67                 d=`echo $z | cut -d '(' -f 1` 
     68                 if [ "$d" = "$1" ] ; then  
     69                   opt="" 
     70                   if [ -n "$ANS" ] ; then opt="($ANS)"; fi 
     71                   if [ -z "$NEWLAYOUT" ] ; then 
     72                     NEWLAYOUT="${d}${opt}" 
     73                   else 
     74                     NEWLAYOUT="$NEWLAYOUT,${d}${opt}" 
     75                   fi 
     76                 else 
     77                   if [ -z "$NEWLAYOUT" ] ; then 
     78                     NEWLAYOUT="${z}" 
     79                   else 
     80                     NEWLAYOUT="$NEWLAYOUT,${z}" 
     81                   fi 
     82                 fi 
     83              done 
     84              ZFSLAYOUT="$NEWLAYOUT" 
     85              ;; 
     86      delete) NEWLAYOUT="" 
     87              for z in `echo $ZFSLAYOUT | sed 's|,| |g'` 
     88              do 
     89                 d=`echo $z | cut -d '(' -f 1`   
     90                 if [ "$d" = "$1" ] ; then continue ; fi 
     91                 if [ -z "$NEWLAYOUT" ] ; then 
     92                   NEWLAYOUT="${z}" 
     93                 else 
     94                   NEWLAYOUT="$NEWLAYOUT,${z}" 
     95                 fi 
     96              done 
     97              ZFSLAYOUT="$NEWLAYOUT" 
     98             ;; 
     99    esac 
     100} 
     101 
     102add_dataset() 
     103{ 
     104    get_dlg_ans "--inputbox 'Enter dataset mountpoint' 8 40" 
     105    if [ -z "$ANS" ] ; then 
     106       exit_err "Invalid dataset entered!" 
     107    fi 
     108 
     109    # Make sure it starts with a / 
     110    echo $ANS | grep -q "^/"  
     111    if [ $? -ne 0 ] ; then 
     112       return 
     113    fi 
     114 
     115    # Check for duplicates 
     116    for z in `echo $ZFSLAYOUT | sed 's|,| |g'` 
     117    do 
     118       d=`echo $z | cut -d '(' -f 1` 
     119       if [ "$d" = "$ANS" ] ; then 
     120          echo "Error, this dataset already exists!" 
     121          rtn 
     122          return 
     123       fi 
     124    done 
     125 
     126    # Save the dataset 
     127    ZFSLAYOUT="$ZFSLAYOUT,$ANS" 
     128} 
    19129 
    20130get_dlg_ans() 
     
    396506  while : 
    397507  do 
    398     dialog --title "PC-BSD Text Install" --menu "Please select from the following options:" 15 40 10 wizard "Run install wizard" disk "Change disk ($SYSDISK)" network "Change networking" view "View install script" edit "Edit install script" install "Start the installation" quit "Quit install wizard" 2>/tmp/answer 
     508    dialog --title "PC-BSD Text Install" --menu "Please select from the following options:" 18 40 10 wizard "Run install wizard" disk "Change disk ($SYSDISK)" zfs "Change ZFS layout" network "Change networking" view "View install script" edit "Edit install script" install "Start the installation" quit "Quit install wizard" 2>/tmp/answer 
    399509    if [ $? -ne 0 ] ; then break ; fi 
    400510 
     
    409519             ;; 
    410520    network) change_networking  
     521             ;; 
     522        zfs) change_zfs 
    411523             ;; 
    412524       view) more ${CFGFILE} 
Note: See TracChangeset for help on using the changeset viewer.