12118f387SNathan Whitehorn#!/bin/sh 22118f387SNathan Whitehorn#- 32118f387SNathan Whitehorn# Copyright (c) 2011 Nathan Whitehorn 4f0c98fdeSDevin Teske# Copyright (c) 2013-2018 Devin Teske 52118f387SNathan Whitehorn# All rights reserved. 62118f387SNathan Whitehorn# 72118f387SNathan Whitehorn# Redistribution and use in source and binary forms, with or without 82118f387SNathan Whitehorn# modification, are permitted provided that the following conditions 92118f387SNathan Whitehorn# are met: 102118f387SNathan Whitehorn# 1. Redistributions of source code must retain the above copyright 112118f387SNathan Whitehorn# notice, this list of conditions and the following disclaimer. 122118f387SNathan Whitehorn# 2. Redistributions in binary form must reproduce the above copyright 132118f387SNathan Whitehorn# notice, this list of conditions and the following disclaimer in the 142118f387SNathan Whitehorn# documentation and/or other materials provided with the distribution. 152118f387SNathan Whitehorn# 162118f387SNathan Whitehorn# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 172118f387SNathan Whitehorn# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 182118f387SNathan Whitehorn# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 192118f387SNathan Whitehorn# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 202118f387SNathan Whitehorn# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 212118f387SNathan Whitehorn# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 222118f387SNathan Whitehorn# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 232118f387SNathan Whitehorn# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 242118f387SNathan Whitehorn# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 252118f387SNathan Whitehorn# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 262118f387SNathan Whitehorn# SUCH DAMAGE. 272118f387SNathan Whitehorn# 28bc4a673fSDevin Teske# 29bc4a673fSDevin Teske############################################################ INCLUDES 302118f387SNathan Whitehorn 31bc4a673fSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig" 32bc4a673fSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1 337059fa6fSAllan Judef_include $BSDCFG_SHARE/dialog.subr 34bc4a673fSDevin Teske 35f0c98fdeSDevin Teske############################################################ GLOBALS 362118f387SNathan Whitehorn 37f0c98fdeSDevin Teske# 38f0c98fdeSDevin Teske# Strings that should be moved to an i18n file and loaded with f_include_lang() 39f0c98fdeSDevin Teske# 407059fa6fSAllan Judehline_arrows_tab_enter="Press arrows, TAB or ENTER" 41f0c98fdeSDevin Teskehline_arrows_tab_space_enter="Press arrows, TAB, SPACE or ENTER" 42f0c98fdeSDevin Teskemsg_abort="Abort" 43595373ddSBen Woodsmsg_an_installation_step_has_been_aborted="An installation step has been aborted. Would you like\nto restart the installation or exit the installer?" 44595373ddSBen Woodsmsg_auto_ufs="Auto (UFS)" 45595373ddSBen Woodsmsg_auto_ufs_desc="Guided UFS Disk Setup" 46595373ddSBen Woodsmsg_auto_ufs_help="Menu options help choose which disk to setup using UFS and standard partitions" 47595373ddSBen Woodsmsg_auto_zfs="Auto (ZFS)" 48595373ddSBen Woodsmsg_auto_zfs_desc="Guided Root-on-ZFS" 49595373ddSBen Woodsmsg_auto_zfs_help="To use ZFS with less than 8GB RAM, see https://wiki.freebsd.org/ZFSTuningGuide" 50f0c98fdeSDevin Teskemsg_exit="Exit" 51cc42ef53SBrad Davismsg_freebsd_installer="$OSNAME Installer" 52a7d5d8d9SAllan Judemsg_gpt_active_fix="Your hardware is known to have issues booting in CSM/Legacy/BIOS mode from GPT partitions that are not set active. Would you like the installer to apply this workaround for you?" 537059fa6fSAllan Judemsg_lenovo_fix="Your model of Lenovo is known to have a BIOS bug that prevents it booting from GPT partitions without UEFI. Would you like the installer to apply a workaround for you?" 54595373ddSBen Woodsmsg_manual="Manual" 55595373ddSBen Woodsmsg_manual_desc="Manual Disk Setup (experts)" 56595373ddSBen Woodsmsg_manual_help="Create customized partitions from menu options" 577059fa6fSAllan Judemsg_no="NO" 58f0c98fdeSDevin Teskemsg_restart="Restart" 59595373ddSBen Woodsmsg_shell="Shell" 60595373ddSBen Woodsmsg_shell_desc="Open a shell and partition by hand" 61595373ddSBen Woodsmsg_shell_help="Create customized partitions using command-line utilities" 627059fa6fSAllan Judemsg_yes="YES" 637059fa6fSAllan Jude 64f0c98fdeSDevin Teske############################################################ FUNCTIONS 65f0c98fdeSDevin Teske 66f0c98fdeSDevin Teske# error [$msg] 67f0c98fdeSDevin Teske# 68f0c98fdeSDevin Teske# Display generic error message when a script fails. An optional message 69f0c98fdeSDevin Teske# argument can preceed the generic message. User is given the choice of 70f0c98fdeSDevin Teske# restarting the installer or exiting. 71f0c98fdeSDevin Teske# 72f0c98fdeSDevin Teskeerror() 73f0c98fdeSDevin Teske{ 74f0c98fdeSDevin Teske local title="$msg_abort" 75f0c98fdeSDevin Teske local btitle="$msg_freebsd_installer" 76f0c98fdeSDevin Teske local prompt="${1:+$1\n\n}$msg_an_installation_step_has_been_aborted" 77f0c98fdeSDevin Teske local hline="$hline_arrows_tab_space_enter" 78f0c98fdeSDevin Teske 79f0c98fdeSDevin Teske [ -f "$PATH_FSTAB" ] && bsdinstall umount 80f0c98fdeSDevin Teske 81f0c98fdeSDevin Teske local height width 82f0c98fdeSDevin Teske f_dialog_buttonbox_size height width \ 83f0c98fdeSDevin Teske "$title" "$btitle" "$prompt" "$hline" 84f0c98fdeSDevin Teske 85f0c98fdeSDevin Teske if $DIALOG \ 86f0c98fdeSDevin Teske --title "$title" \ 87f0c98fdeSDevin Teske --backtitle "$btitle" \ 88f0c98fdeSDevin Teske --hline "$hline" \ 89f0c98fdeSDevin Teske --no-label "$msg_exit" \ 90f0c98fdeSDevin Teske --yes-label "$msg_restart" \ 91f0c98fdeSDevin Teske --yesno "$prompt" $height $width 92f0c98fdeSDevin Teske then 93f0c98fdeSDevin Teske exec $0 94f0c98fdeSDevin Teske # NOTREACHED 95f0c98fdeSDevin Teske fi 96f0c98fdeSDevin Teske exit 1 97f0c98fdeSDevin Teske} 98f0c98fdeSDevin Teske 997059fa6fSAllan Jude# dialog_workaround 1007059fa6fSAllan Jude# 1017059fa6fSAllan Jude# Ask the user if they wish to apply a workaround 1027059fa6fSAllan Jude# 1037059fa6fSAllan Judedialog_workaround() 1047059fa6fSAllan Jude{ 1057059fa6fSAllan Jude local passed_msg="$1" 1067059fa6fSAllan Jude local title="$DIALOG_TITLE" 1077059fa6fSAllan Jude local btitle="$DIALOG_BACKTITLE" 1087059fa6fSAllan Jude local prompt # Calculated below 1097059fa6fSAllan Jude local hline="$hline_arrows_tab_enter" 1107059fa6fSAllan Jude 1117059fa6fSAllan Jude local height=8 width=50 prefix=" " 1127059fa6fSAllan Jude local plen=${#prefix} list= line= 1137059fa6fSAllan Jude local max_width=$(( $width - 3 - $plen )) 1147059fa6fSAllan Jude 1157059fa6fSAllan Jude local yes no defaultno extra_args format 1167059fa6fSAllan Jude if [ "$USE_XDIALOG" ]; then 1177059fa6fSAllan Jude yes=ok no=cancel defaultno=default-no 1187059fa6fSAllan Jude extra_args="--wrap --left" 1197059fa6fSAllan Jude format="$passed_msg" 1207059fa6fSAllan Jude else 1217059fa6fSAllan Jude yes=yes no=no defaultno=defaultno 1227059fa6fSAllan Jude extra_args="--cr-wrap" 1237059fa6fSAllan Jude format="$passed_msg" 1247059fa6fSAllan Jude fi 1257059fa6fSAllan Jude 1267059fa6fSAllan Jude # Add height for Xdialog(1) 1277059fa6fSAllan Jude [ "$USE_XDIALOG" ] && height=$(( $height + $height / 5 + 3 )) 1287059fa6fSAllan Jude 1297059fa6fSAllan Jude prompt=$( printf "$format" ) 1307059fa6fSAllan Jude f_dprintf "%s: Workaround prompt" "$0" 1317059fa6fSAllan Jude $DIALOG \ 1327059fa6fSAllan Jude --title "$title" \ 1337059fa6fSAllan Jude --backtitle "$btitle" \ 1347059fa6fSAllan Jude --hline "$hline" \ 1357059fa6fSAllan Jude --$yes-label "$msg_yes" \ 1367059fa6fSAllan Jude --$no-label "$msg_no" \ 1377059fa6fSAllan Jude $extra_args \ 1387059fa6fSAllan Jude --yesno "$prompt" $height $width 1397059fa6fSAllan Jude} 1407059fa6fSAllan Jude 141bc4a673fSDevin Teske############################################################ MAIN 142bc4a673fSDevin Teske 143bc4a673fSDevin Teskef_dprintf "Began Installation at %s" "$( date )" 1442118f387SNathan Whitehorn 1452118f387SNathan Whitehornrm -rf $BSDINSTALL_TMPETC 1462118f387SNathan Whitehornmkdir $BSDINSTALL_TMPETC 1472118f387SNathan Whitehorn 14803d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-everything ] && f_dprintf "Running local.pre-everything" && sh /usr/libexec/bsdinstall/local.pre-everything "$BSDINSTALL_CHROOT" 14903d66186SBrad Davis 1502118f387SNathan Whitehorntrap true SIGINT # This section is optional 15117f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_KEYMAP" ] && bsdinstall keymap 1522118f387SNathan Whitehorn 1532118f387SNathan Whitehorntrap error SIGINT # Catch cntrl-C here 15417f4ded5SBrad Davisif [ -z "$BSDINSTALL_SKIP_HOSTNAME" ]; then bsdinstall hostname || error "Set hostname failed"; fi 1552118f387SNathan Whitehorn 1563bcd2612SBrad Davisexport DISTRIBUTIONS="${DISTRIBUTIONS:-base.txz kernel.txz}" 157b70047d4SNathan Whitehornif [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then 15888343186SGlen Barber DISTMENU=`awk -F'\t' '!/^(kernel\.txz|base\.txz)/{print $1,$5,$6}' $BSDINSTALL_DISTDIR/MANIFEST` 15988343186SGlen Barber DISTMENU="$(echo ${DISTMENU} | sed -E 's/\.txz//g')" 160addc19a4SNathan Whitehorn 16195f0da5bSRenato Botelho if [ -n "$DISTMENU" ]; then 162*c0e249d3SLars Kellogg-Stedman exec 5>&1 1634ca6fb65SDevin Teske EXTRA_DISTS=$( eval dialog \ 164cc42ef53SBrad Davis --backtitle \"$OSNAME Installer\" \ 1654ca6fb65SDevin Teske --title \"Distribution Select\" --nocancel --separate-output \ 1664ca6fb65SDevin Teske --checklist \"Choose optional system components to install:\" \ 1674ca6fb65SDevin Teske 0 0 0 $DISTMENU \ 168*c0e249d3SLars Kellogg-Stedman 2>&1 1>&5 ) 169addc19a4SNathan Whitehorn for dist in $EXTRA_DISTS; do 170addc19a4SNathan Whitehorn export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz" 171addc19a4SNathan Whitehorn done 172b70047d4SNathan Whitehorn fi 17395f0da5bSRenato Botelhofi 174addc19a4SNathan Whitehorn 1752118f387SNathan WhitehornFETCH_DISTRIBUTIONS="" 1762118f387SNathan Whitehornfor dist in $DISTRIBUTIONS; do 1772118f387SNathan Whitehorn if [ ! -f $BSDINSTALL_DISTDIR/$dist ]; then 1782118f387SNathan Whitehorn FETCH_DISTRIBUTIONS="$FETCH_DISTRIBUTIONS $dist" 1792118f387SNathan Whitehorn fi 1802118f387SNathan Whitehorndone 1812118f387SNathan Whitehorn 1826dcef0cfSNathan Whitehornif [ -n "$FETCH_DISTRIBUTIONS" -a -n "$BSDINSTALL_CONFIGCURRENT" ]; then 183cc42ef53SBrad Davis dialog --backtitle "$OSNAME Installer" --title "Network Installation" --msgbox "Some installation files were not found on the boot volume. The next few screens will allow you to configure networking so that they can be downloaded from the Internet." 0 0 1842118f387SNathan Whitehorn bsdinstall netconfig || error 1852118f387SNathan Whitehorn NETCONFIG_DONE=yes 1862118f387SNathan Whitehornfi 1872118f387SNathan Whitehorn 1882d5cf580SDevin Teskerm -f $PATH_FSTAB 1892118f387SNathan Whitehorntouch $PATH_FSTAB 1902118f387SNathan Whitehorn 19103d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-partition ] && f_dprintf "Running local.pre-partition" && sh /usr/libexec/bsdinstall/local.pre-partition "$BSDINSTALL_CHROOT" 19203d66186SBrad Davis 1937059fa6fSAllan Jude# 1947059fa6fSAllan Jude# Try to detect known broken platforms and apply their workarounds 1957059fa6fSAllan Jude# 1967059fa6fSAllan Jude 1977059fa6fSAllan Judeif f_interactive; then 1987059fa6fSAllan Jude sys_maker=$( kenv -q smbios.system.maker ) 1997059fa6fSAllan Jude f_dprintf "smbios.system.maker=[%s]" "$sys_maker" 2007059fa6fSAllan Jude sys_model=$( kenv -q smbios.system.product ) 2017059fa6fSAllan Jude f_dprintf "smbios.system.product=[%s]" "$sys_model" 2027059fa6fSAllan Jude sys_version=$( kenv -q smbios.system.version ) 2037059fa6fSAllan Jude f_dprintf "smbios.system.version=[%s]" "$sys_version" 204a7d5d8d9SAllan Jude sys_mb_maker=$( kenv -q smbios.planar.maker ) 205a7d5d8d9SAllan Jude f_dprintf "smbios.planar.maker=[%s]" "$sys_mb_maker" 206a7d5d8d9SAllan Jude sys_mb_product=$( kenv -q smbios.planar.product ) 207a7d5d8d9SAllan Jude f_dprintf "smbios.planar.product=[%s]" "$sys_mb_product" 208a7d5d8d9SAllan Jude 209a7d5d8d9SAllan Jude # 210a7d5d8d9SAllan Jude # Laptop Models 211a7d5d8d9SAllan Jude # 2127059fa6fSAllan Jude case "$sys_maker" in 2137059fa6fSAllan Jude "LENOVO") 2147059fa6fSAllan Jude case "$sys_version" in 215229c92e7SAllan Jude "ThinkPad X220"|"ThinkPad T420"|"ThinkPad T520"|"ThinkPad W520"|"ThinkPad X1") 2167059fa6fSAllan Jude dialog_workaround "$msg_lenovo_fix" 2177059fa6fSAllan Jude retval=$? 2187059fa6fSAllan Jude f_dprintf "lenovofix_prompt=[%s]" "$retval" 2197059fa6fSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2207059fa6fSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Lenovo Fix" 2217059fa6fSAllan Jude export WORKAROUND_LENOVO=1 2227059fa6fSAllan Jude fi 2237059fa6fSAllan Jude ;; 2247059fa6fSAllan Jude esac 2257059fa6fSAllan Jude ;; 2267059fa6fSAllan Jude "Dell Inc.") 2277059fa6fSAllan Jude case "$sys_model" in 228e3026446SAllan Jude "Latitude E6330"|"Latitude E7440"|"Latitude E7240"|"Precision Tower 5810") 229a7d5d8d9SAllan Jude dialog_workaround "$msg_gpt_active_fix" 230a7d5d8d9SAllan Jude retval=$? 231a7d5d8d9SAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 232a7d5d8d9SAllan Jude if [ $retval -eq $DIALOG_OK ]; then 233a7d5d8d9SAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 234a7d5d8d9SAllan Jude export WORKAROUND_GPTACTIVE=1 235a7d5d8d9SAllan Jude fi 236a7d5d8d9SAllan Jude ;; 237a7d5d8d9SAllan Jude esac 238a7d5d8d9SAllan Jude ;; 2394c95e76aSAllan Jude "Hewlett-Packard") 2404c95e76aSAllan Jude case "$sys_model" in 2414c95e76aSAllan Jude "HP ProBook 4330s") 2424c95e76aSAllan Jude dialog_workaround "$msg_gpt_active_fix" 2434c95e76aSAllan Jude retval=$? 2444c95e76aSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 2454c95e76aSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2464c95e76aSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 2474c95e76aSAllan Jude export WORKAROUND_GPTACTIVE=1 2484c95e76aSAllan Jude fi 2494c95e76aSAllan Jude ;; 2504c95e76aSAllan Jude esac 2514c95e76aSAllan Jude ;; 252a7d5d8d9SAllan Jude esac 253a7d5d8d9SAllan Jude # 254a7d5d8d9SAllan Jude # Motherboard Models 255a7d5d8d9SAllan Jude # 256a7d5d8d9SAllan Jude case "$sys_mb_maker" in 257a7d5d8d9SAllan Jude "Intel Corporation") 258a7d5d8d9SAllan Jude case "$sys_mb_product" in 2594c95e76aSAllan Jude "DP965LT"|"D510MO") 2604c95e76aSAllan Jude dialog_workaround "$msg_gpt_active_fix" 2614c95e76aSAllan Jude retval=$? 2624c95e76aSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 2634c95e76aSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2644c95e76aSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 2654c95e76aSAllan Jude export WORKAROUND_GPTACTIVE=1 2664c95e76aSAllan Jude fi 2674c95e76aSAllan Jude ;; 2684c95e76aSAllan Jude esac 2694c95e76aSAllan Jude ;; 2704c95e76aSAllan Jude "Acer") 2714c95e76aSAllan Jude case "$sys_mb_product" in 2724c95e76aSAllan Jude "Veriton M6630G") 2737059fa6fSAllan Jude dialog_workaround "$msg_gpt_active_fix" 2747059fa6fSAllan Jude retval=$? 2757059fa6fSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 2767059fa6fSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2777059fa6fSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 2787059fa6fSAllan Jude export WORKAROUND_GPTACTIVE=1 2797059fa6fSAllan Jude fi 2807059fa6fSAllan Jude ;; 2817059fa6fSAllan Jude esac 2827059fa6fSAllan Jude ;; 2837059fa6fSAllan Jude esac 2847059fa6fSAllan Judefi 2857059fa6fSAllan Jude 286595373ddSBen WoodsPMODES=" 287595373ddSBen Woods '$msg_auto_ufs' '$msg_auto_ufs_desc' '$msg_auto_ufs_help' 288595373ddSBen Woods '$msg_manual' '$msg_manual_desc' '$msg_manual_help' 289595373ddSBen Woods '$msg_shell' '$msg_shell_desc' '$msg_shell_help' 290595373ddSBen Woods" # END-QUOTE 2912118f387SNathan Whitehorn 292cd88b886SDevin TeskeCURARCH=$( uname -m ) 293cd88b886SDevin Teskecase $CURARCH in 2947b08a307SMitchell Horne amd64|arm64|i386|riscv) # Booting ZFS Supported 295595373ddSBen Woods PMODES=" 296595373ddSBen Woods '$msg_auto_zfs' '$msg_auto_zfs_desc' '$msg_auto_zfs_help' 297595373ddSBen Woods $PMODES 298595373ddSBen Woods " # END-QUOTE 299cd88b886SDevin Teske ;; 300595373ddSBen Woods *) # Booting ZFS Unsupported 301cd88b886SDevin Teske ;; 302cd88b886SDevin Teskeesac 303cd88b886SDevin Teske 304*c0e249d3SLars Kellogg-Stedmanexec 5>&1 305cc42ef53SBrad DavisPARTMODE=`echo $PMODES | xargs dialog --backtitle "$OSNAME Installer" \ 306cd88b886SDevin Teske --title "Partitioning" \ 307595373ddSBen Woods --item-help \ 308cd88b886SDevin Teske --menu "How would you like to partition your disk?" \ 309*c0e249d3SLars Kellogg-Stedman 0 0 0 2>&1 1>&5` || exit 1 310*c0e249d3SLars Kellogg-Stedmanexec 5>&- 311cd88b886SDevin Teske 312cd88b886SDevin Teskecase "$PARTMODE" in 313595373ddSBen Woods"$msg_auto_zfs") # ZFS 314d512033eSBen Woods bsdinstall zfsboot || error "ZFS setup failed" 315d512033eSBen Woods bsdinstall mount || error "Failed to mount filesystem" 316d512033eSBen Woods ;; 317595373ddSBen Woods"$msg_auto_ufs") # Guided UFS 3187041a67eSAndrew Thompson bsdinstall autopart || error "Partitioning error" 3197041a67eSAndrew Thompson bsdinstall mount || error "Failed to mount filesystem" 3202118f387SNathan Whitehorn ;; 321595373ddSBen Woods"$msg_shell") # Shell 3222118f387SNathan Whitehorn clear 3232118f387SNathan Whitehorn echo "Use this shell to set up partitions for the new system. When finished, mount the system at $BSDINSTALL_CHROOT and place an fstab file for the new system at $PATH_FSTAB. Then type 'exit'. You can also enter the partition editor at any time by entering 'bsdinstall partedit'." 324809685bcSNathan Whitehorn sh 2>&1 3252118f387SNathan Whitehorn ;; 326595373ddSBen Woods"$msg_manual") # Manual 327bc4a673fSDevin Teske if f_isset debugFile; then 328bc4a673fSDevin Teske # Give partedit the path to our logfile so it can append 3297041a67eSAndrew Thompson BSDINSTALL_LOG="${debugFile#+}" bsdinstall partedit || error "Partitioning error" 330bc4a673fSDevin Teske else 3317041a67eSAndrew Thompson bsdinstall partedit || error "Partitioning error" 332bc4a673fSDevin Teske fi 3337041a67eSAndrew Thompson bsdinstall mount || error "Failed to mount filesystem" 3342118f387SNathan Whitehorn ;; 3352118f387SNathan Whitehorn*) 3367041a67eSAndrew Thompson error "Unknown partitioning mode" 3372118f387SNathan Whitehorn ;; 3382118f387SNathan Whitehornesac 3392118f387SNathan Whitehorn 34003d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-fetch ] && f_dprintf "Running local.pre-fetch" && sh /usr/libexec/bsdinstall/local.pre-fetch "$BSDINSTALL_CHROOT" 34103d66186SBrad Davis 34240923b0cSNathan Whitehornif [ -n "$FETCH_DISTRIBUTIONS" ]; then 343*c0e249d3SLars Kellogg-Stedman exec 5>&1 344*c0e249d3SLars Kellogg-Stedman export BSDINSTALL_DISTDIR=$(`dirname $0`/fetchmissingdists 2>&1 1>&5) 34540923b0cSNathan Whitehorn FETCH_RESULT=$? 346*c0e249d3SLars Kellogg-Stedman exec 5>&- 3472118f387SNathan Whitehorn 34840923b0cSNathan Whitehorn [ $FETCH_RESULT -ne 0 ] && error "Could not fetch remote distributions" 3492118f387SNathan Whitehornfi 3507041a67eSAndrew Thompsonbsdinstall checksum || error "Distribution checksum failed" 3517041a67eSAndrew Thompsonbsdinstall distextract || error "Distribution extract failed" 3528befcf7bSNathan Whitehorn 3538befcf7bSNathan Whitehorn# Set up boot loader 3548befcf7bSNathan Whitehornbsdinstall bootconfig || error "Failed to configure bootloader" 3558befcf7bSNathan Whitehorn 35603d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-configure ] && f_dprintf "Running local.pre-configure" && sh /usr/libexec/bsdinstall/local.pre-configure "$BSDINSTALL_CHROOT" 35703d66186SBrad Davis 3587041a67eSAndrew Thompsonbsdinstall rootpass || error "Could not set root password" 3592118f387SNathan Whitehorn 3602118f387SNathan Whitehorntrap true SIGINT # This section is optional 3612118f387SNathan Whitehornif [ "$NETCONFIG_DONE" != yes ]; then 3622118f387SNathan Whitehorn bsdinstall netconfig # Don't check for errors -- the user may cancel 3632118f387SNathan Whitehornfi 36417f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_TIME" ] && bsdinstall time 36517f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_SERVICES" ] && bsdinstall services 36617f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_HARDENING" ] && bsdinstall hardening 3672118f387SNathan Whitehorn 36817f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_USERS" ] && dialog --backtitle "$OSNAME Installer" \ 36917f4ded5SBrad Davis --title "Add User Accounts" --yesno \ 3702118f387SNathan Whitehorn "Would you like to add users to the installed system now?" 0 0 && \ 3712118f387SNathan Whitehorn bsdinstall adduser 3722118f387SNathan Whitehorn 3732118f387SNathan Whitehornfinalconfig() { 374*c0e249d3SLars Kellogg-Stedman exec 5>&1 375cc42ef53SBrad Davis REVISIT=$(dialog --backtitle "$OSNAME Installer" \ 3762118f387SNathan Whitehorn --title "Final Configuration" --no-cancel --menu \ 377cc42ef53SBrad Davis "Setup of your $OSNAME system is nearly complete. You can now modify your configuration choices. After this screen, you will have an opportunity to make more complex changes using a shell." 0 0 0 \ 37822a84ec9SKen Smith "Exit" "Apply configuration and exit installer" \ 3792118f387SNathan Whitehorn "Add User" "Add a user to the system" \ 3802118f387SNathan Whitehorn "Root Password" "Change root password" \ 3812118f387SNathan Whitehorn "Hostname" "Set system hostname" \ 3822118f387SNathan Whitehorn "Network" "Networking configuration" \ 3832118f387SNathan Whitehorn "Services" "Set daemons to run on startup" \ 3840e3f233fSBartek Rutkowski "System Hardening" "Set security options" \ 3852118f387SNathan Whitehorn "Time Zone" "Set system timezone" \ 386*c0e249d3SLars Kellogg-Stedman "Handbook" "Install $OSNAME Handbook (requires network)" 2>&1 1>&5) 387*c0e249d3SLars Kellogg-Stedman exec 5>&- 3882118f387SNathan Whitehorn 3892118f387SNathan Whitehorn case "$REVISIT" in 3902118f387SNathan Whitehorn "Add User") 3912118f387SNathan Whitehorn bsdinstall adduser 3922118f387SNathan Whitehorn finalconfig 3932118f387SNathan Whitehorn ;; 3942118f387SNathan Whitehorn "Root Password") 3952118f387SNathan Whitehorn bsdinstall rootpass 3962118f387SNathan Whitehorn finalconfig 3972118f387SNathan Whitehorn ;; 3982118f387SNathan Whitehorn "Hostname") 3992118f387SNathan Whitehorn bsdinstall hostname 4002118f387SNathan Whitehorn finalconfig 4012118f387SNathan Whitehorn ;; 4022118f387SNathan Whitehorn "Network") 4032118f387SNathan Whitehorn bsdinstall netconfig 4042118f387SNathan Whitehorn finalconfig 4052118f387SNathan Whitehorn ;; 4062118f387SNathan Whitehorn "Services") 4072118f387SNathan Whitehorn bsdinstall services 4082118f387SNathan Whitehorn finalconfig 4092118f387SNathan Whitehorn ;; 4100e3f233fSBartek Rutkowski "System Hardening") 4110e3f233fSBartek Rutkowski bsdinstall hardening 4120e3f233fSBartek Rutkowski finalconfig 4130e3f233fSBartek Rutkowski ;; 4142118f387SNathan Whitehorn "Time Zone") 4152118f387SNathan Whitehorn bsdinstall time 4162118f387SNathan Whitehorn finalconfig 4172118f387SNathan Whitehorn ;; 418bfc3bab8SNathan Whitehorn "Handbook") 419bfc3bab8SNathan Whitehorn bsdinstall docsinstall 420bfc3bab8SNathan Whitehorn finalconfig 421bfc3bab8SNathan Whitehorn ;; 4222118f387SNathan Whitehorn esac 4232118f387SNathan Whitehorn} 4242118f387SNathan Whitehorn 4252118f387SNathan Whitehorn# Allow user to change his mind 42617f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_FINALCONFIG" ] && finalconfig 4272118f387SNathan Whitehorn 4282118f387SNathan Whitehorntrap error SIGINT # SIGINT is bad again 4297041a67eSAndrew Thompsonbsdinstall config || error "Failed to save config" 4302118f387SNathan Whitehorn 4312118f387SNathan Whitehornif [ ! -z "$BSDINSTALL_FETCHDEST" ]; then 4322118f387SNathan Whitehorn rm -rf "$BSDINSTALL_FETCHDEST" 4332118f387SNathan Whitehornfi 4342118f387SNathan Whitehorn 43503d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.post-configure ] && f_dprintf "Running local.post-configure" && sh /usr/libexec/bsdinstall/local.post-configure "$BSDINSTALL_CHROOT" 43603d66186SBrad Davis 43717f4ded5SBrad Davisif [ -z "$BSDINSTALL_SKIP_MANUAL" ]; then 438cc42ef53SBrad Davis dialog --backtitle "$OSNAME Installer" --title "Manual Configuration" \ 43944a25dd6SNathan Whitehorn --default-button no --yesno \ 44044a25dd6SNathan Whitehorn "The installation is now finished. Before exiting the installer, would you like to open a shell in the new system to make any final manual modifications?" 0 0 4416081c922SNathan Whitehorn if [ $? -eq 0 ]; then 4426081c922SNathan Whitehorn clear 4436081c922SNathan Whitehorn echo This shell is operating in a chroot in the new system. \ 4446081c922SNathan Whitehorn When finished making configuration changes, type \"exit\". 4456081c922SNathan Whitehorn chroot "$BSDINSTALL_CHROOT" /bin/sh 2>&1 4466081c922SNathan Whitehorn fi 44717f4ded5SBrad Davisfi 4486081c922SNathan Whitehorn 449dfc23ba5SDag-Erling Smørgravbsdinstall entropy 450dfc23ba5SDag-Erling Smørgravbsdinstall umount 451dfc23ba5SDag-Erling Smørgrav 452bc4a673fSDevin Teskef_dprintf "Installation Completed at %s" "$( date )" 4532118f387SNathan Whitehorn 454bc4a673fSDevin Teske################################################################################ 455bc4a673fSDevin Teske# END 456bc4a673fSDevin Teske################################################################################ 457