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# 282118f387SNathan Whitehorn# $FreeBSD$ 29bc4a673fSDevin Teske# 30bc4a673fSDevin Teske############################################################ INCLUDES 312118f387SNathan Whitehorn 32bc4a673fSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig" 33bc4a673fSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1 347059fa6fSAllan Judef_include $BSDCFG_SHARE/dialog.subr 35bc4a673fSDevin Teske 36f0c98fdeSDevin Teske############################################################ GLOBALS 372118f387SNathan Whitehorn 38f0c98fdeSDevin Teske# 39f0c98fdeSDevin Teske# Strings that should be moved to an i18n file and loaded with f_include_lang() 40f0c98fdeSDevin Teske# 417059fa6fSAllan Judehline_arrows_tab_enter="Press arrows, TAB or ENTER" 42f0c98fdeSDevin Teskehline_arrows_tab_space_enter="Press arrows, TAB, SPACE or ENTER" 43f0c98fdeSDevin Teskemsg_abort="Abort" 44595373ddSBen Woodsmsg_an_installation_step_has_been_aborted="An installation step has been aborted. Would you like\nto restart the installation or exit the installer?" 45595373ddSBen Woodsmsg_auto_ufs="Auto (UFS)" 46595373ddSBen Woodsmsg_auto_ufs_desc="Guided UFS Disk Setup" 47595373ddSBen Woodsmsg_auto_ufs_help="Menu options help choose which disk to setup using UFS and standard partitions" 48595373ddSBen Woodsmsg_auto_zfs="Auto (ZFS)" 49595373ddSBen Woodsmsg_auto_zfs_desc="Guided Root-on-ZFS" 50595373ddSBen Woodsmsg_auto_zfs_help="To use ZFS with less than 8GB RAM, see https://wiki.freebsd.org/ZFSTuningGuide" 51f0c98fdeSDevin Teskemsg_exit="Exit" 52f0c98fdeSDevin Teskemsg_freebsd_installer="FreeBSD Installer" 53a7d5d8d9SAllan 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?" 547059fa6fSAllan 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?" 55595373ddSBen Woodsmsg_manual="Manual" 56595373ddSBen Woodsmsg_manual_desc="Manual Disk Setup (experts)" 57595373ddSBen Woodsmsg_manual_help="Create customized partitions from menu options" 587059fa6fSAllan Judemsg_no="NO" 59f0c98fdeSDevin Teskemsg_restart="Restart" 60595373ddSBen Woodsmsg_shell="Shell" 61595373ddSBen Woodsmsg_shell_desc="Open a shell and partition by hand" 62595373ddSBen Woodsmsg_shell_help="Create customized partitions using command-line utilities" 637059fa6fSAllan Judemsg_yes="YES" 647059fa6fSAllan Jude 65f0c98fdeSDevin Teske############################################################ FUNCTIONS 66f0c98fdeSDevin Teske 67f0c98fdeSDevin Teske# error [$msg] 68f0c98fdeSDevin Teske# 69f0c98fdeSDevin Teske# Display generic error message when a script fails. An optional message 70f0c98fdeSDevin Teske# argument can preceed the generic message. User is given the choice of 71f0c98fdeSDevin Teske# restarting the installer or exiting. 72f0c98fdeSDevin Teske# 73f0c98fdeSDevin Teskeerror() 74f0c98fdeSDevin Teske{ 75f0c98fdeSDevin Teske local title="$msg_abort" 76f0c98fdeSDevin Teske local btitle="$msg_freebsd_installer" 77f0c98fdeSDevin Teske local prompt="${1:+$1\n\n}$msg_an_installation_step_has_been_aborted" 78f0c98fdeSDevin Teske local hline="$hline_arrows_tab_space_enter" 79f0c98fdeSDevin Teske 80f0c98fdeSDevin Teske [ -f "$PATH_FSTAB" ] && bsdinstall umount 81f0c98fdeSDevin Teske 82f0c98fdeSDevin Teske local height width 83f0c98fdeSDevin Teske f_dialog_buttonbox_size height width \ 84f0c98fdeSDevin Teske "$title" "$btitle" "$prompt" "$hline" 85f0c98fdeSDevin Teske 86f0c98fdeSDevin Teske if $DIALOG \ 87f0c98fdeSDevin Teske --title "$title" \ 88f0c98fdeSDevin Teske --backtitle "$btitle" \ 89f0c98fdeSDevin Teske --hline "$hline" \ 90f0c98fdeSDevin Teske --no-label "$msg_exit" \ 91f0c98fdeSDevin Teske --yes-label "$msg_restart" \ 92f0c98fdeSDevin Teske --yesno "$prompt" $height $width 93f0c98fdeSDevin Teske then 94f0c98fdeSDevin Teske exec $0 95f0c98fdeSDevin Teske # NOTREACHED 96f0c98fdeSDevin Teske fi 97f0c98fdeSDevin Teske exit 1 98f0c98fdeSDevin Teske} 99f0c98fdeSDevin Teske 1007059fa6fSAllan Jude# dialog_workaround 1017059fa6fSAllan Jude# 1027059fa6fSAllan Jude# Ask the user if they wish to apply a workaround 1037059fa6fSAllan Jude# 1047059fa6fSAllan Judedialog_workaround() 1057059fa6fSAllan Jude{ 1067059fa6fSAllan Jude local passed_msg="$1" 1077059fa6fSAllan Jude local title="$DIALOG_TITLE" 1087059fa6fSAllan Jude local btitle="$DIALOG_BACKTITLE" 1097059fa6fSAllan Jude local prompt # Calculated below 1107059fa6fSAllan Jude local hline="$hline_arrows_tab_enter" 1117059fa6fSAllan Jude 1127059fa6fSAllan Jude local height=8 width=50 prefix=" " 1137059fa6fSAllan Jude local plen=${#prefix} list= line= 1147059fa6fSAllan Jude local max_width=$(( $width - 3 - $plen )) 1157059fa6fSAllan Jude 1167059fa6fSAllan Jude local yes no defaultno extra_args format 1177059fa6fSAllan Jude if [ "$USE_XDIALOG" ]; then 1187059fa6fSAllan Jude yes=ok no=cancel defaultno=default-no 1197059fa6fSAllan Jude extra_args="--wrap --left" 1207059fa6fSAllan Jude format="$passed_msg" 1217059fa6fSAllan Jude else 1227059fa6fSAllan Jude yes=yes no=no defaultno=defaultno 1237059fa6fSAllan Jude extra_args="--cr-wrap" 1247059fa6fSAllan Jude format="$passed_msg" 1257059fa6fSAllan Jude fi 1267059fa6fSAllan Jude 1277059fa6fSAllan Jude # Add height for Xdialog(1) 1287059fa6fSAllan Jude [ "$USE_XDIALOG" ] && height=$(( $height + $height / 5 + 3 )) 1297059fa6fSAllan Jude 1307059fa6fSAllan Jude prompt=$( printf "$format" ) 1317059fa6fSAllan Jude f_dprintf "%s: Workaround prompt" "$0" 1327059fa6fSAllan Jude $DIALOG \ 1337059fa6fSAllan Jude --title "$title" \ 1347059fa6fSAllan Jude --backtitle "$btitle" \ 1357059fa6fSAllan Jude --hline "$hline" \ 1367059fa6fSAllan Jude --$yes-label "$msg_yes" \ 1377059fa6fSAllan Jude --$no-label "$msg_no" \ 1387059fa6fSAllan Jude $extra_args \ 1397059fa6fSAllan Jude --yesno "$prompt" $height $width 1407059fa6fSAllan Jude} 1417059fa6fSAllan Jude 142bc4a673fSDevin Teske############################################################ MAIN 143bc4a673fSDevin Teske 144bc4a673fSDevin Teskef_dprintf "Began Installation at %s" "$( date )" 1452118f387SNathan Whitehorn 1462118f387SNathan Whitehornrm -rf $BSDINSTALL_TMPETC 1472118f387SNathan Whitehornmkdir $BSDINSTALL_TMPETC 1482118f387SNathan Whitehorn 1492118f387SNathan Whitehorntrap true SIGINT # This section is optional 1502118f387SNathan Whitehornbsdinstall keymap 1512118f387SNathan Whitehorn 1522118f387SNathan Whitehorntrap error SIGINT # Catch cntrl-C here 1537041a67eSAndrew Thompsonbsdinstall hostname || error "Set hostname failed" 1542118f387SNathan Whitehorn 155b70047d4SNathan Whitehornexport DISTRIBUTIONS="base.txz kernel.txz" 156b70047d4SNathan Whitehornif [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then 15788343186SGlen Barber DISTMENU=`awk -F'\t' '!/^(kernel\.txz|base\.txz)/{print $1,$5,$6}' $BSDINSTALL_DISTDIR/MANIFEST` 15888343186SGlen Barber DISTMENU="$(echo ${DISTMENU} | sed -E 's/\.txz//g')" 159addc19a4SNathan Whitehorn 160*c3c458ceSRenato Botelho if [ -n "$DISTMENU" ]; then 161addc19a4SNathan Whitehorn exec 3>&1 1624ca6fb65SDevin Teske EXTRA_DISTS=$( eval dialog \ 1634ca6fb65SDevin Teske --backtitle \"FreeBSD Installer\" \ 1644ca6fb65SDevin Teske --title \"Distribution Select\" --nocancel --separate-output \ 1654ca6fb65SDevin Teske --checklist \"Choose optional system components to install:\" \ 1664ca6fb65SDevin Teske 0 0 0 $DISTMENU \ 167addc19a4SNathan Whitehorn 2>&1 1>&3 ) 168addc19a4SNathan Whitehorn for dist in $EXTRA_DISTS; do 169addc19a4SNathan Whitehorn export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz" 170addc19a4SNathan Whitehorn done 171b70047d4SNathan Whitehorn fi 172*c3c458ceSRenato Botelhofi 173addc19a4SNathan Whitehorn 1742118f387SNathan WhitehornFETCH_DISTRIBUTIONS="" 1752118f387SNathan Whitehornfor dist in $DISTRIBUTIONS; do 1762118f387SNathan Whitehorn if [ ! -f $BSDINSTALL_DISTDIR/$dist ]; then 1772118f387SNathan Whitehorn FETCH_DISTRIBUTIONS="$FETCH_DISTRIBUTIONS $dist" 1782118f387SNathan Whitehorn fi 1792118f387SNathan Whitehorndone 1802118f387SNathan Whitehorn 1816dcef0cfSNathan Whitehornif [ -n "$FETCH_DISTRIBUTIONS" -a -n "$BSDINSTALL_CONFIGCURRENT" ]; then 18288343186SGlen Barber dialog --backtitle "FreeBSD 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 1832118f387SNathan Whitehorn bsdinstall netconfig || error 1842118f387SNathan Whitehorn NETCONFIG_DONE=yes 1852118f387SNathan Whitehornfi 1862118f387SNathan Whitehorn 1872d5cf580SDevin Teskerm -f $PATH_FSTAB 1882118f387SNathan Whitehorntouch $PATH_FSTAB 1892118f387SNathan Whitehorn 1907059fa6fSAllan Jude# 1917059fa6fSAllan Jude# Try to detect known broken platforms and apply their workarounds 1927059fa6fSAllan Jude# 1937059fa6fSAllan Jude 1947059fa6fSAllan Judeif f_interactive; then 1957059fa6fSAllan Jude sys_maker=$( kenv -q smbios.system.maker ) 1967059fa6fSAllan Jude f_dprintf "smbios.system.maker=[%s]" "$sys_maker" 1977059fa6fSAllan Jude sys_model=$( kenv -q smbios.system.product ) 1987059fa6fSAllan Jude f_dprintf "smbios.system.product=[%s]" "$sys_model" 1997059fa6fSAllan Jude sys_version=$( kenv -q smbios.system.version ) 2007059fa6fSAllan Jude f_dprintf "smbios.system.version=[%s]" "$sys_version" 201a7d5d8d9SAllan Jude sys_mb_maker=$( kenv -q smbios.planar.maker ) 202a7d5d8d9SAllan Jude f_dprintf "smbios.planar.maker=[%s]" "$sys_mb_maker" 203a7d5d8d9SAllan Jude sys_mb_product=$( kenv -q smbios.planar.product ) 204a7d5d8d9SAllan Jude f_dprintf "smbios.planar.product=[%s]" "$sys_mb_product" 205a7d5d8d9SAllan Jude 206a7d5d8d9SAllan Jude # 207a7d5d8d9SAllan Jude # Laptop Models 208a7d5d8d9SAllan Jude # 2097059fa6fSAllan Jude case "$sys_maker" in 2107059fa6fSAllan Jude "LENOVO") 2117059fa6fSAllan Jude case "$sys_version" in 212229c92e7SAllan Jude "ThinkPad X220"|"ThinkPad T420"|"ThinkPad T520"|"ThinkPad W520"|"ThinkPad X1") 2137059fa6fSAllan Jude dialog_workaround "$msg_lenovo_fix" 2147059fa6fSAllan Jude retval=$? 2157059fa6fSAllan Jude f_dprintf "lenovofix_prompt=[%s]" "$retval" 2167059fa6fSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2177059fa6fSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Lenovo Fix" 2187059fa6fSAllan Jude export WORKAROUND_LENOVO=1 2197059fa6fSAllan Jude fi 2207059fa6fSAllan Jude ;; 2217059fa6fSAllan Jude esac 2227059fa6fSAllan Jude ;; 2237059fa6fSAllan Jude "Dell Inc.") 2247059fa6fSAllan Jude case "$sys_model" in 225e3026446SAllan Jude "Latitude E6330"|"Latitude E7440"|"Latitude E7240"|"Precision Tower 5810") 226a7d5d8d9SAllan Jude dialog_workaround "$msg_gpt_active_fix" 227a7d5d8d9SAllan Jude retval=$? 228a7d5d8d9SAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 229a7d5d8d9SAllan Jude if [ $retval -eq $DIALOG_OK ]; then 230a7d5d8d9SAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 231a7d5d8d9SAllan Jude export WORKAROUND_GPTACTIVE=1 232a7d5d8d9SAllan Jude fi 233a7d5d8d9SAllan Jude ;; 234a7d5d8d9SAllan Jude esac 235a7d5d8d9SAllan Jude ;; 2364c95e76aSAllan Jude "Hewlett-Packard") 2374c95e76aSAllan Jude case "$sys_model" in 2384c95e76aSAllan Jude "HP ProBook 4330s") 2394c95e76aSAllan Jude dialog_workaround "$msg_gpt_active_fix" 2404c95e76aSAllan Jude retval=$? 2414c95e76aSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 2424c95e76aSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2434c95e76aSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 2444c95e76aSAllan Jude export WORKAROUND_GPTACTIVE=1 2454c95e76aSAllan Jude fi 2464c95e76aSAllan Jude ;; 2474c95e76aSAllan Jude esac 2484c95e76aSAllan Jude ;; 249a7d5d8d9SAllan Jude esac 250a7d5d8d9SAllan Jude # 251a7d5d8d9SAllan Jude # Motherboard Models 252a7d5d8d9SAllan Jude # 253a7d5d8d9SAllan Jude case "$sys_mb_maker" in 254a7d5d8d9SAllan Jude "Intel Corporation") 255a7d5d8d9SAllan Jude case "$sys_mb_product" in 2564c95e76aSAllan Jude "DP965LT"|"D510MO") 2574c95e76aSAllan Jude dialog_workaround "$msg_gpt_active_fix" 2584c95e76aSAllan Jude retval=$? 2594c95e76aSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 2604c95e76aSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2614c95e76aSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 2624c95e76aSAllan Jude export WORKAROUND_GPTACTIVE=1 2634c95e76aSAllan Jude fi 2644c95e76aSAllan Jude ;; 2654c95e76aSAllan Jude esac 2664c95e76aSAllan Jude ;; 2674c95e76aSAllan Jude "Acer") 2684c95e76aSAllan Jude case "$sys_mb_product" in 2694c95e76aSAllan Jude "Veriton M6630G") 2707059fa6fSAllan Jude dialog_workaround "$msg_gpt_active_fix" 2717059fa6fSAllan Jude retval=$? 2727059fa6fSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 2737059fa6fSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2747059fa6fSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 2757059fa6fSAllan Jude export WORKAROUND_GPTACTIVE=1 2767059fa6fSAllan Jude fi 2777059fa6fSAllan Jude ;; 2787059fa6fSAllan Jude esac 2797059fa6fSAllan Jude ;; 2807059fa6fSAllan Jude esac 2817059fa6fSAllan Judefi 2827059fa6fSAllan Jude 283595373ddSBen WoodsPMODES=" 284595373ddSBen Woods '$msg_auto_ufs' '$msg_auto_ufs_desc' '$msg_auto_ufs_help' 285595373ddSBen Woods '$msg_manual' '$msg_manual_desc' '$msg_manual_help' 286595373ddSBen Woods '$msg_shell' '$msg_shell_desc' '$msg_shell_help' 287595373ddSBen Woods" # END-QUOTE 2882118f387SNathan Whitehorn 289cd88b886SDevin TeskeCURARCH=$( uname -m ) 290cd88b886SDevin Teskecase $CURARCH in 291c415d0dfSMitchell Horne amd64|arm64|i386|riscv) # Booting ZFS Supported 292595373ddSBen Woods PMODES=" 293595373ddSBen Woods '$msg_auto_zfs' '$msg_auto_zfs_desc' '$msg_auto_zfs_help' 294595373ddSBen Woods $PMODES 295595373ddSBen Woods " # END-QUOTE 296cd88b886SDevin Teske ;; 297595373ddSBen Woods *) # Booting ZFS Unsupported 298cd88b886SDevin Teske ;; 299cd88b886SDevin Teskeesac 300cd88b886SDevin Teske 301cd88b886SDevin Teskeexec 3>&1 302cd88b886SDevin TeskePARTMODE=`echo $PMODES | xargs dialog --backtitle "FreeBSD Installer" \ 303cd88b886SDevin Teske --title "Partitioning" \ 304595373ddSBen Woods --item-help \ 305cd88b886SDevin Teske --menu "How would you like to partition your disk?" \ 30631a0cf13SDevin Teske 0 0 0 2>&1 1>&3` || exit 1 307cd88b886SDevin Teskeexec 3>&- 308cd88b886SDevin Teske 309cd88b886SDevin Teskecase "$PARTMODE" in 310595373ddSBen Woods"$msg_auto_zfs") # ZFS 311d512033eSBen Woods bsdinstall zfsboot || error "ZFS setup failed" 312d512033eSBen Woods bsdinstall mount || error "Failed to mount filesystem" 313d512033eSBen Woods ;; 314595373ddSBen Woods"$msg_auto_ufs") # Guided UFS 3157041a67eSAndrew Thompson bsdinstall autopart || error "Partitioning error" 3167041a67eSAndrew Thompson bsdinstall mount || error "Failed to mount filesystem" 3172118f387SNathan Whitehorn ;; 318595373ddSBen Woods"$msg_shell") # Shell 3192118f387SNathan Whitehorn clear 3202118f387SNathan 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'." 321809685bcSNathan Whitehorn sh 2>&1 3222118f387SNathan Whitehorn ;; 323595373ddSBen Woods"$msg_manual") # Manual 324bc4a673fSDevin Teske if f_isset debugFile; then 325bc4a673fSDevin Teske # Give partedit the path to our logfile so it can append 3267041a67eSAndrew Thompson BSDINSTALL_LOG="${debugFile#+}" bsdinstall partedit || error "Partitioning error" 327bc4a673fSDevin Teske else 3287041a67eSAndrew Thompson bsdinstall partedit || error "Partitioning error" 329bc4a673fSDevin Teske fi 3307041a67eSAndrew Thompson bsdinstall mount || error "Failed to mount filesystem" 3312118f387SNathan Whitehorn ;; 3322118f387SNathan Whitehorn*) 3337041a67eSAndrew Thompson error "Unknown partitioning mode" 3342118f387SNathan Whitehorn ;; 3352118f387SNathan Whitehornesac 3362118f387SNathan Whitehorn 3375a4dffacSNathan Whitehornif [ -n "$FETCH_DISTRIBUTIONS" ]; then 3385a4dffacSNathan Whitehorn exec 3>&1 3395a4dffacSNathan Whitehorn export BSDINSTALL_DISTDIR=$(`dirname $0`/fetchmissingdists 2>&1 1>&3) 3405a4dffacSNathan Whitehorn FETCH_RESULT=$? 3415a4dffacSNathan Whitehorn exec 3>&- 3422118f387SNathan Whitehorn 3435a4dffacSNathan Whitehorn [ $FETCH_RESULT -ne 0 ] && error "Could not fetch remote distributions" 3442118f387SNathan Whitehornfi 3457041a67eSAndrew Thompsonbsdinstall checksum || error "Distribution checksum failed" 3467041a67eSAndrew Thompsonbsdinstall distextract || error "Distribution extract failed" 3478befcf7bSNathan Whitehorn 3488befcf7bSNathan Whitehorn# Set up boot loader 3498befcf7bSNathan Whitehornbsdinstall bootconfig || error "Failed to configure bootloader" 3508befcf7bSNathan Whitehorn 3517041a67eSAndrew Thompsonbsdinstall rootpass || error "Could not set root password" 3522118f387SNathan Whitehorn 3532118f387SNathan Whitehorntrap true SIGINT # This section is optional 3542118f387SNathan Whitehornif [ "$NETCONFIG_DONE" != yes ]; then 3552118f387SNathan Whitehorn bsdinstall netconfig # Don't check for errors -- the user may cancel 3562118f387SNathan Whitehornfi 3572118f387SNathan Whitehornbsdinstall time 3582118f387SNathan Whitehornbsdinstall services 3590e3f233fSBartek Rutkowskibsdinstall hardening 3602118f387SNathan Whitehorn 3612118f387SNathan Whitehorndialog --backtitle "FreeBSD Installer" --title "Add User Accounts" --yesno \ 3622118f387SNathan Whitehorn "Would you like to add users to the installed system now?" 0 0 && \ 3632118f387SNathan Whitehorn bsdinstall adduser 3642118f387SNathan Whitehorn 3652118f387SNathan Whitehornfinalconfig() { 3662118f387SNathan Whitehorn exec 3>&1 3672118f387SNathan Whitehorn REVISIT=$(dialog --backtitle "FreeBSD Installer" \ 3682118f387SNathan Whitehorn --title "Final Configuration" --no-cancel --menu \ 3696081c922SNathan Whitehorn "Setup of your FreeBSD 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 \ 37022a84ec9SKen Smith "Exit" "Apply configuration and exit installer" \ 3712118f387SNathan Whitehorn "Add User" "Add a user to the system" \ 3722118f387SNathan Whitehorn "Root Password" "Change root password" \ 3732118f387SNathan Whitehorn "Hostname" "Set system hostname" \ 3742118f387SNathan Whitehorn "Network" "Networking configuration" \ 3752118f387SNathan Whitehorn "Services" "Set daemons to run on startup" \ 3760e3f233fSBartek Rutkowski "System Hardening" "Set security options" \ 3772118f387SNathan Whitehorn "Time Zone" "Set system timezone" \ 3786081c922SNathan Whitehorn "Handbook" "Install FreeBSD Handbook (requires network)" 2>&1 1>&3) 3792118f387SNathan Whitehorn exec 3>&- 3802118f387SNathan Whitehorn 3812118f387SNathan Whitehorn case "$REVISIT" in 3822118f387SNathan Whitehorn "Add User") 3832118f387SNathan Whitehorn bsdinstall adduser 3842118f387SNathan Whitehorn finalconfig 3852118f387SNathan Whitehorn ;; 3862118f387SNathan Whitehorn "Root Password") 3872118f387SNathan Whitehorn bsdinstall rootpass 3882118f387SNathan Whitehorn finalconfig 3892118f387SNathan Whitehorn ;; 3902118f387SNathan Whitehorn "Hostname") 3912118f387SNathan Whitehorn bsdinstall hostname 3922118f387SNathan Whitehorn finalconfig 3932118f387SNathan Whitehorn ;; 3942118f387SNathan Whitehorn "Network") 3952118f387SNathan Whitehorn bsdinstall netconfig 3962118f387SNathan Whitehorn finalconfig 3972118f387SNathan Whitehorn ;; 3982118f387SNathan Whitehorn "Services") 3992118f387SNathan Whitehorn bsdinstall services 4002118f387SNathan Whitehorn finalconfig 4012118f387SNathan Whitehorn ;; 4020e3f233fSBartek Rutkowski "System Hardening") 4030e3f233fSBartek Rutkowski bsdinstall hardening 4040e3f233fSBartek Rutkowski finalconfig 4050e3f233fSBartek Rutkowski ;; 4062118f387SNathan Whitehorn "Time Zone") 4072118f387SNathan Whitehorn bsdinstall time 4082118f387SNathan Whitehorn finalconfig 4092118f387SNathan Whitehorn ;; 410bfc3bab8SNathan Whitehorn "Handbook") 411bfc3bab8SNathan Whitehorn bsdinstall docsinstall 412bfc3bab8SNathan Whitehorn finalconfig 413bfc3bab8SNathan Whitehorn ;; 4142118f387SNathan Whitehorn esac 4152118f387SNathan Whitehorn} 4162118f387SNathan Whitehorn 4172118f387SNathan Whitehorn# Allow user to change his mind 4182118f387SNathan Whitehornfinalconfig 4192118f387SNathan Whitehorn 4202118f387SNathan Whitehorntrap error SIGINT # SIGINT is bad again 4217041a67eSAndrew Thompsonbsdinstall config || error "Failed to save config" 4222118f387SNathan Whitehorn 4232118f387SNathan Whitehornif [ ! -z "$BSDINSTALL_FETCHDEST" ]; then 4242118f387SNathan Whitehorn rm -rf "$BSDINSTALL_FETCHDEST" 4252118f387SNathan Whitehornfi 4262118f387SNathan Whitehorn 4276081c922SNathan Whitehorndialog --backtitle "FreeBSD Installer" --title "Manual Configuration" \ 42844a25dd6SNathan Whitehorn --default-button no --yesno \ 42944a25dd6SNathan 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 4306081c922SNathan Whitehornif [ $? -eq 0 ]; then 4316081c922SNathan Whitehorn clear 4326081c922SNathan Whitehorn echo This shell is operating in a chroot in the new system. \ 4336081c922SNathan Whitehorn When finished making configuration changes, type \"exit\". 4346081c922SNathan Whitehorn chroot "$BSDINSTALL_CHROOT" /bin/sh 2>&1 4356081c922SNathan Whitehornfi 4366081c922SNathan Whitehorn 437dfc23ba5SDag-Erling Smørgravbsdinstall entropy 438dfc23ba5SDag-Erling Smørgravbsdinstall umount 439dfc23ba5SDag-Erling Smørgrav 440bc4a673fSDevin Teskef_dprintf "Installation Completed at %s" "$( date )" 4412118f387SNathan Whitehorn 442bc4a673fSDevin Teske################################################################################ 443bc4a673fSDevin Teske# END 444bc4a673fSDevin Teske################################################################################ 445