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# 38*9de72af2SPierre Pronchery# List of environment variables that may be defined by the user, but modified 39*9de72af2SPierre Pronchery# during the installation process. They are then restored when restarting this 40*9de72af2SPierre Pronchery# script. 41*9de72af2SPierre Pronchery# 42*9de72af2SPierre Proncheryuser_env_vars="BSDINSTALL_DISTSITE DISTRIBUTIONS WORKAROUND_GPTACTIVE WORKAROUND_LENOVO ZFSBOOT_PARTITION_SCHEME" 43*9de72af2SPierre Pronchery 44*9de72af2SPierre Pronchery# 45f0c98fdeSDevin Teske# Strings that should be moved to an i18n file and loaded with f_include_lang() 46f0c98fdeSDevin Teske# 477059fa6fSAllan Judehline_arrows_tab_enter="Press arrows, TAB or ENTER" 48f0c98fdeSDevin Teskehline_arrows_tab_space_enter="Press arrows, TAB, SPACE or ENTER" 49f0c98fdeSDevin Teskemsg_abort="Abort" 50595373ddSBen Woodsmsg_an_installation_step_has_been_aborted="An installation step has been aborted. Would you like\nto restart the installation or exit the installer?" 51595373ddSBen Woodsmsg_auto_ufs="Auto (UFS)" 52595373ddSBen Woodsmsg_auto_ufs_desc="Guided UFS Disk Setup" 53595373ddSBen Woodsmsg_auto_ufs_help="Menu options help choose which disk to setup using UFS and standard partitions" 54595373ddSBen Woodsmsg_auto_zfs="Auto (ZFS)" 55595373ddSBen Woodsmsg_auto_zfs_desc="Guided Root-on-ZFS" 56595373ddSBen Woodsmsg_auto_zfs_help="To use ZFS with less than 8GB RAM, see https://wiki.freebsd.org/ZFSTuningGuide" 57f0c98fdeSDevin Teskemsg_exit="Exit" 58cc42ef53SBrad Davismsg_freebsd_installer="$OSNAME Installer" 59a7d5d8d9SAllan 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?" 607059fa6fSAllan 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?" 61595373ddSBen Woodsmsg_manual="Manual" 62595373ddSBen Woodsmsg_manual_desc="Manual Disk Setup (experts)" 63595373ddSBen Woodsmsg_manual_help="Create customized partitions from menu options" 647059fa6fSAllan Judemsg_no="NO" 65f0c98fdeSDevin Teskemsg_restart="Restart" 66595373ddSBen Woodsmsg_shell="Shell" 67595373ddSBen Woodsmsg_shell_desc="Open a shell and partition by hand" 68595373ddSBen Woodsmsg_shell_help="Create customized partitions using command-line utilities" 697059fa6fSAllan Judemsg_yes="YES" 707059fa6fSAllan Jude 71f0c98fdeSDevin Teske############################################################ FUNCTIONS 72f0c98fdeSDevin Teske 73f0c98fdeSDevin Teske# error [$msg] 74f0c98fdeSDevin Teske# 75f0c98fdeSDevin Teske# Display generic error message when a script fails. An optional message 76f0c98fdeSDevin Teske# argument can preceed the generic message. User is given the choice of 77f0c98fdeSDevin Teske# restarting the installer or exiting. 78f0c98fdeSDevin Teske# 79f0c98fdeSDevin Teskeerror() 80f0c98fdeSDevin Teske{ 81f0c98fdeSDevin Teske local title="$msg_abort" 82f0c98fdeSDevin Teske local btitle="$msg_freebsd_installer" 83f0c98fdeSDevin Teske local prompt="${1:+$1\n\n}$msg_an_installation_step_has_been_aborted" 84f0c98fdeSDevin Teske local hline="$hline_arrows_tab_space_enter" 85f0c98fdeSDevin Teske 86f0c98fdeSDevin Teske [ -f "$PATH_FSTAB" ] && bsdinstall umount 87f0c98fdeSDevin Teske 88f0c98fdeSDevin Teske local height width 89f0c98fdeSDevin Teske f_dialog_buttonbox_size height width \ 90f0c98fdeSDevin Teske "$title" "$btitle" "$prompt" "$hline" 91f0c98fdeSDevin Teske 92f0c98fdeSDevin Teske if $DIALOG \ 93f0c98fdeSDevin Teske --title "$title" \ 94f0c98fdeSDevin Teske --backtitle "$btitle" \ 95f0c98fdeSDevin Teske --hline "$hline" \ 96f0c98fdeSDevin Teske --no-label "$msg_exit" \ 97f0c98fdeSDevin Teske --yes-label "$msg_restart" \ 98f0c98fdeSDevin Teske --yesno "$prompt" $height $width 99f0c98fdeSDevin Teske then 100*9de72af2SPierre Pronchery environment_restore 101f0c98fdeSDevin Teske exec $0 102f0c98fdeSDevin Teske # NOTREACHED 103f0c98fdeSDevin Teske fi 104f0c98fdeSDevin Teske exit 1 105f0c98fdeSDevin Teske} 106f0c98fdeSDevin Teske 1077059fa6fSAllan Jude# dialog_workaround 1087059fa6fSAllan Jude# 1097059fa6fSAllan Jude# Ask the user if they wish to apply a workaround 1107059fa6fSAllan Jude# 1117059fa6fSAllan Judedialog_workaround() 1127059fa6fSAllan Jude{ 1137059fa6fSAllan Jude local passed_msg="$1" 1147059fa6fSAllan Jude local title="$DIALOG_TITLE" 1157059fa6fSAllan Jude local btitle="$DIALOG_BACKTITLE" 1167059fa6fSAllan Jude local prompt # Calculated below 1177059fa6fSAllan Jude local hline="$hline_arrows_tab_enter" 1187059fa6fSAllan Jude 1197059fa6fSAllan Jude local height=8 width=50 prefix=" " 1207059fa6fSAllan Jude local plen=${#prefix} list= line= 1217059fa6fSAllan Jude local max_width=$(( $width - 3 - $plen )) 1227059fa6fSAllan Jude 1237059fa6fSAllan Jude local yes no defaultno extra_args format 1247059fa6fSAllan Jude if [ "$USE_XDIALOG" ]; then 1257059fa6fSAllan Jude yes=ok no=cancel defaultno=default-no 1267059fa6fSAllan Jude extra_args="--wrap --left" 1277059fa6fSAllan Jude format="$passed_msg" 1287059fa6fSAllan Jude else 1297059fa6fSAllan Jude yes=yes no=no defaultno=defaultno 1307059fa6fSAllan Jude extra_args="--cr-wrap" 1317059fa6fSAllan Jude format="$passed_msg" 1327059fa6fSAllan Jude fi 1337059fa6fSAllan Jude 1347059fa6fSAllan Jude # Add height for Xdialog(1) 1357059fa6fSAllan Jude [ "$USE_XDIALOG" ] && height=$(( $height + $height / 5 + 3 )) 1367059fa6fSAllan Jude 1377059fa6fSAllan Jude prompt=$( printf "$format" ) 1387059fa6fSAllan Jude f_dprintf "%s: Workaround prompt" "$0" 1397059fa6fSAllan Jude $DIALOG \ 1407059fa6fSAllan Jude --title "$title" \ 1417059fa6fSAllan Jude --backtitle "$btitle" \ 1427059fa6fSAllan Jude --hline "$hline" \ 1437059fa6fSAllan Jude --$yes-label "$msg_yes" \ 1447059fa6fSAllan Jude --$no-label "$msg_no" \ 1457059fa6fSAllan Jude $extra_args \ 1467059fa6fSAllan Jude --yesno "$prompt" $height $width 1477059fa6fSAllan Jude} 1487059fa6fSAllan Jude 149*9de72af2SPierre Pronchery# environment_restore 150*9de72af2SPierre Pronchery# 151*9de72af2SPierre Pronchery# Restore a list of environment variables when this script is restarted. 152*9de72af2SPierre Pronchery# 153*9de72af2SPierre Proncheryenvironment_restore() 154*9de72af2SPierre Pronchery{ 155*9de72af2SPierre Pronchery for var in $user_env_vars; do 156*9de72af2SPierre Pronchery eval "if [ -n \"\${ORIG_$var}\" -o -z \"\${ORIG_$var-z}\" ]; then $var=\${ORIG_$var}; else unset $var; fi" 157*9de72af2SPierre Pronchery done 158*9de72af2SPierre Pronchery} 159*9de72af2SPierre Pronchery 160*9de72af2SPierre Pronchery# environment_save 161*9de72af2SPierre Pronchery# 162*9de72af2SPierre Pronchery# Save any user-defined environment variable that may be modified during the 163*9de72af2SPierre Pronchery# installation process. They are then restored when restarting this script. 164*9de72af2SPierre Pronchery# 165*9de72af2SPierre Proncheryenvironment_save() 166*9de72af2SPierre Pronchery{ 167*9de72af2SPierre Pronchery for var in $user_env_vars; do 168*9de72af2SPierre Pronchery eval "if [ -n \"\${$var}\" -o -z \"\${$var-z}\" ]; then ORIG_$var=\${$var}; else unset ORIG_$var; fi" 169*9de72af2SPierre Pronchery done 170*9de72af2SPierre Pronchery} 171*9de72af2SPierre Pronchery 172bc4a673fSDevin Teske############################################################ MAIN 173bc4a673fSDevin Teske 174bc4a673fSDevin Teskef_dprintf "Began Installation at %s" "$( date )" 1752118f387SNathan Whitehorn 176*9de72af2SPierre Proncheryenvironment_save 177*9de72af2SPierre Pronchery 1782118f387SNathan Whitehornrm -rf $BSDINSTALL_TMPETC 1792118f387SNathan Whitehornmkdir $BSDINSTALL_TMPETC 1802118f387SNathan Whitehorn 18103d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-everything ] && f_dprintf "Running local.pre-everything" && sh /usr/libexec/bsdinstall/local.pre-everything "$BSDINSTALL_CHROOT" 18203d66186SBrad Davis 1832118f387SNathan Whitehorntrap true SIGINT # This section is optional 18417f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_KEYMAP" ] && bsdinstall keymap 1852118f387SNathan Whitehorn 1862118f387SNathan Whitehorntrap error SIGINT # Catch cntrl-C here 18717f4ded5SBrad Davisif [ -z "$BSDINSTALL_SKIP_HOSTNAME" ]; then bsdinstall hostname || error "Set hostname failed"; fi 1882118f387SNathan Whitehorn 18934b43f4bSIsaac Freundbsddialog --backtitle "$OSNAME Installer" --title "Select Installation Type" \ 19034b43f4bSIsaac Freund --yes-label "Traditional" --no-label "Packages (Experimental)" --yesno \ 19134b43f4bSIsaac Freund "Would you like to install the base system using traditional distribution sets or packages (experimental)?" 0 0 19234b43f4bSIsaac Freundif [ $? -eq 1 ]; then 19334b43f4bSIsaac Freund PKGBASE=yes 19434b43f4bSIsaac Freundfi 19534b43f4bSIsaac Freund 19634b43f4bSIsaac Freundif [ "$PKGBASE" == yes ]; then 1970a86a8acSIsaac Freund if [ -f /usr/freebsd-packages/repos/FreeBSD-base-offline.conf ]; then 1980a86a8acSIsaac Freund bsddialog --backtitle "$OSNAME Installer" --title "Network or Offline Installation" \ 1990a86a8acSIsaac Freund --yes-label "Network" --no-label "Offline (Limited Packages)" --yesno \ 2000a86a8acSIsaac Freund "Would you like to fetch packages from the internet or use the limited set of packages included in this installation media?" 0 0 2010a86a8acSIsaac Freund if [ $? -eq 1 ]; then 2020a86a8acSIsaac Freund export BSDINSTALL_PKG_REPOS_DIR=/usr/freebsd-packages/repos/ 2030a86a8acSIsaac Freund else 20434b43f4bSIsaac Freund bsdinstall netconfig || error 20534b43f4bSIsaac Freund NETCONFIG_DONE=yes 2060a86a8acSIsaac Freund fi 2070a86a8acSIsaac Freund else 2080a86a8acSIsaac Freund bsddialog --backtitle "$OSNAME Installer" --title "Network Installation" \ 2090a86a8acSIsaac Freund --msgbox "No base system packages are included in this installation media. The next few screens will allow you to configure networking." 0 0 2100a86a8acSIsaac Freund bsdinstall netconfig || error 2110a86a8acSIsaac Freund NETCONFIG_DONE=yes 2120a86a8acSIsaac Freund fi 21334b43f4bSIsaac Freundelse 2147143521fSJessica Clarke export DISTRIBUTIONS="${DISTRIBUTIONS:-base.txz kernel.txz}" 2157143521fSJessica Clarke if [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then 2167143521fSJessica Clarke DISTMENU=`awk -F'\t' '!/^(kernel\.txz|base\.txz)/{print $1,$5,$6}' $BSDINSTALL_DISTDIR/MANIFEST` 2177143521fSJessica Clarke DISTMENU="$(echo ${DISTMENU} | sed -E 's/\.txz//g')" 2187143521fSJessica Clarke 2197143521fSJessica Clarke if [ -n "$DISTMENU" ]; then 220c0e249d3SLars Kellogg-Stedman exec 5>&1 2217143521fSJessica Clarke EXTRA_DISTS=$( eval bsddialog \ 2227143521fSJessica Clarke --backtitle \"$OSNAME Installer\" \ 2237143521fSJessica Clarke --title \"Distribution Select\" --nocancel --separate-output \ 2247143521fSJessica Clarke --checklist \"Choose optional system components to install:\" \ 2257143521fSJessica Clarke 0 0 0 $DISTMENU \ 2267143521fSJessica Clarke 2>&1 1>&5 ) 2277143521fSJessica Clarke for dist in $EXTRA_DISTS; do 2287143521fSJessica Clarke export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz" 2297143521fSJessica Clarke done 2307143521fSJessica Clarke fi 2317143521fSJessica Clarke fi 2327143521fSJessica Clarke 2337143521fSJessica Clarke FETCH_DISTRIBUTIONS="" 2347143521fSJessica Clarke for dist in $DISTRIBUTIONS; do 2357143521fSJessica Clarke if [ ! -f $BSDINSTALL_DISTDIR/$dist ]; then 2367143521fSJessica Clarke FETCH_DISTRIBUTIONS="$FETCH_DISTRIBUTIONS $dist" 2377143521fSJessica Clarke fi 2387143521fSJessica Clarke done 2397143521fSJessica Clarke 2407143521fSJessica Clarke if [ -n "$FETCH_DISTRIBUTIONS" -a -n "$BSDINSTALL_CONFIGCURRENT" ]; then 2417143521fSJessica Clarke bsddialog --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 2427143521fSJessica Clarke bsdinstall netconfig || error 2437143521fSJessica Clarke NETCONFIG_DONE=yes 2442118f387SNathan Whitehorn fi 24534b43f4bSIsaac Freundfi 2462118f387SNathan Whitehorn 2472d5cf580SDevin Teskerm -f $PATH_FSTAB 2482118f387SNathan Whitehorntouch $PATH_FSTAB 2492118f387SNathan Whitehorn 25003d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-partition ] && f_dprintf "Running local.pre-partition" && sh /usr/libexec/bsdinstall/local.pre-partition "$BSDINSTALL_CHROOT" 25103d66186SBrad Davis 2527059fa6fSAllan Jude# 2537059fa6fSAllan Jude# Try to detect known broken platforms and apply their workarounds 2547059fa6fSAllan Jude# 2557059fa6fSAllan Jude 2567059fa6fSAllan Judeif f_interactive; then 2577059fa6fSAllan Jude sys_maker=$( kenv -q smbios.system.maker ) 2587059fa6fSAllan Jude f_dprintf "smbios.system.maker=[%s]" "$sys_maker" 2597059fa6fSAllan Jude sys_model=$( kenv -q smbios.system.product ) 2607059fa6fSAllan Jude f_dprintf "smbios.system.product=[%s]" "$sys_model" 2617059fa6fSAllan Jude sys_version=$( kenv -q smbios.system.version ) 2627059fa6fSAllan Jude f_dprintf "smbios.system.version=[%s]" "$sys_version" 263a7d5d8d9SAllan Jude sys_mb_maker=$( kenv -q smbios.planar.maker ) 264a7d5d8d9SAllan Jude f_dprintf "smbios.planar.maker=[%s]" "$sys_mb_maker" 265a7d5d8d9SAllan Jude sys_mb_product=$( kenv -q smbios.planar.product ) 266a7d5d8d9SAllan Jude f_dprintf "smbios.planar.product=[%s]" "$sys_mb_product" 267a7d5d8d9SAllan Jude 268a7d5d8d9SAllan Jude # 269a7d5d8d9SAllan Jude # Laptop Models 270a7d5d8d9SAllan Jude # 2717059fa6fSAllan Jude case "$sys_maker" in 2727059fa6fSAllan Jude "LENOVO") 2737059fa6fSAllan Jude case "$sys_version" in 274229c92e7SAllan Jude "ThinkPad X220"|"ThinkPad T420"|"ThinkPad T520"|"ThinkPad W520"|"ThinkPad X1") 2757059fa6fSAllan Jude dialog_workaround "$msg_lenovo_fix" 2767059fa6fSAllan Jude retval=$? 2777059fa6fSAllan Jude f_dprintf "lenovofix_prompt=[%s]" "$retval" 2787059fa6fSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 2797059fa6fSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Lenovo Fix" 2807059fa6fSAllan Jude export WORKAROUND_LENOVO=1 2817059fa6fSAllan Jude fi 2827059fa6fSAllan Jude ;; 2837059fa6fSAllan Jude esac 2847059fa6fSAllan Jude ;; 2857059fa6fSAllan Jude "Dell Inc.") 2867059fa6fSAllan Jude case "$sys_model" in 287e3026446SAllan Jude "Latitude E6330"|"Latitude E7440"|"Latitude E7240"|"Precision Tower 5810") 288a7d5d8d9SAllan Jude dialog_workaround "$msg_gpt_active_fix" 289a7d5d8d9SAllan Jude retval=$? 290a7d5d8d9SAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 291a7d5d8d9SAllan Jude if [ $retval -eq $DIALOG_OK ]; then 292a7d5d8d9SAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 293a7d5d8d9SAllan Jude export WORKAROUND_GPTACTIVE=1 294a7d5d8d9SAllan Jude fi 295a7d5d8d9SAllan Jude ;; 296a7d5d8d9SAllan Jude esac 297a7d5d8d9SAllan Jude ;; 2984c95e76aSAllan Jude "Hewlett-Packard") 2994c95e76aSAllan Jude case "$sys_model" in 3004c95e76aSAllan Jude "HP ProBook 4330s") 3014c95e76aSAllan Jude dialog_workaround "$msg_gpt_active_fix" 3024c95e76aSAllan Jude retval=$? 3034c95e76aSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 3044c95e76aSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 3054c95e76aSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 3064c95e76aSAllan Jude export WORKAROUND_GPTACTIVE=1 3074c95e76aSAllan Jude fi 3084c95e76aSAllan Jude ;; 3094c95e76aSAllan Jude esac 3104c95e76aSAllan Jude ;; 311a7d5d8d9SAllan Jude esac 312a7d5d8d9SAllan Jude # 313a7d5d8d9SAllan Jude # Motherboard Models 314a7d5d8d9SAllan Jude # 315a7d5d8d9SAllan Jude case "$sys_mb_maker" in 316a7d5d8d9SAllan Jude "Intel Corporation") 317a7d5d8d9SAllan Jude case "$sys_mb_product" in 3184c95e76aSAllan Jude "DP965LT"|"D510MO") 3194c95e76aSAllan Jude dialog_workaround "$msg_gpt_active_fix" 3204c95e76aSAllan Jude retval=$? 3214c95e76aSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 3224c95e76aSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 3234c95e76aSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 3244c95e76aSAllan Jude export WORKAROUND_GPTACTIVE=1 3254c95e76aSAllan Jude fi 3264c95e76aSAllan Jude ;; 3274c95e76aSAllan Jude esac 3284c95e76aSAllan Jude ;; 3294c95e76aSAllan Jude "Acer") 3304c95e76aSAllan Jude case "$sys_mb_product" in 3314c95e76aSAllan Jude "Veriton M6630G") 3327059fa6fSAllan Jude dialog_workaround "$msg_gpt_active_fix" 3337059fa6fSAllan Jude retval=$? 3347059fa6fSAllan Jude f_dprintf "gpt_active_fix_prompt=[%s]" "$retval" 3357059fa6fSAllan Jude if [ $retval -eq $DIALOG_OK ]; then 3367059fa6fSAllan Jude export ZFSBOOT_PARTITION_SCHEME="GPT + Active" 3377059fa6fSAllan Jude export WORKAROUND_GPTACTIVE=1 3387059fa6fSAllan Jude fi 3397059fa6fSAllan Jude ;; 3407059fa6fSAllan Jude esac 3417059fa6fSAllan Jude ;; 3427059fa6fSAllan Jude esac 3437059fa6fSAllan Judefi 3447059fa6fSAllan Jude 345595373ddSBen WoodsPMODES=" 346595373ddSBen Woods '$msg_auto_ufs' '$msg_auto_ufs_desc' '$msg_auto_ufs_help' 347595373ddSBen Woods '$msg_manual' '$msg_manual_desc' '$msg_manual_help' 348595373ddSBen Woods '$msg_shell' '$msg_shell_desc' '$msg_shell_help' 349595373ddSBen Woods" # END-QUOTE 3502118f387SNathan Whitehorn 351cd88b886SDevin TeskeCURARCH=$( uname -m ) 352cd88b886SDevin Teskecase $CURARCH in 3537b08a307SMitchell Horne amd64|arm64|i386|riscv) # Booting ZFS Supported 354595373ddSBen Woods PMODES=" 355595373ddSBen Woods '$msg_auto_zfs' '$msg_auto_zfs_desc' '$msg_auto_zfs_help' 356595373ddSBen Woods $PMODES 357595373ddSBen Woods " # END-QUOTE 358cd88b886SDevin Teske ;; 359595373ddSBen Woods *) # Booting ZFS Unsupported 360cd88b886SDevin Teske ;; 361cd88b886SDevin Teskeesac 362cd88b886SDevin Teske 363c0e249d3SLars Kellogg-Stedmanexec 5>&1 36404b46577SAlfonso S. SicilianoPARTMODE=`echo $PMODES | xargs -o bsddialog --backtitle "$OSNAME Installer" \ 365cd88b886SDevin Teske --title "Partitioning" \ 366595373ddSBen Woods --item-help \ 367cd88b886SDevin Teske --menu "How would you like to partition your disk?" \ 368c0e249d3SLars Kellogg-Stedman 0 0 0 2>&1 1>&5` || exit 1 369c0e249d3SLars Kellogg-Stedmanexec 5>&- 370cd88b886SDevin Teske 371cd88b886SDevin Teskecase "$PARTMODE" in 372595373ddSBen Woods"$msg_auto_zfs") # ZFS 373d512033eSBen Woods bsdinstall zfsboot || error "ZFS setup failed" 374d512033eSBen Woods bsdinstall mount || error "Failed to mount filesystem" 375d512033eSBen Woods ;; 376595373ddSBen Woods"$msg_auto_ufs") # Guided UFS 3777041a67eSAndrew Thompson bsdinstall autopart || error "Partitioning error" 3787041a67eSAndrew Thompson bsdinstall mount || error "Failed to mount filesystem" 3792118f387SNathan Whitehorn ;; 380595373ddSBen Woods"$msg_shell") # Shell 3812118f387SNathan Whitehorn clear 3822118f387SNathan 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'." 383809685bcSNathan Whitehorn sh 2>&1 3842118f387SNathan Whitehorn ;; 385595373ddSBen Woods"$msg_manual") # Manual 386bc4a673fSDevin Teske if f_isset debugFile; then 387bc4a673fSDevin Teske # Give partedit the path to our logfile so it can append 3887041a67eSAndrew Thompson BSDINSTALL_LOG="${debugFile#+}" bsdinstall partedit || error "Partitioning error" 389bc4a673fSDevin Teske else 3907041a67eSAndrew Thompson bsdinstall partedit || error "Partitioning error" 391bc4a673fSDevin Teske fi 3927041a67eSAndrew Thompson bsdinstall mount || error "Failed to mount filesystem" 3932118f387SNathan Whitehorn ;; 3942118f387SNathan Whitehorn*) 3957041a67eSAndrew Thompson error "Unknown partitioning mode" 3962118f387SNathan Whitehorn ;; 3972118f387SNathan Whitehornesac 3982118f387SNathan Whitehorn 39903d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-fetch ] && f_dprintf "Running local.pre-fetch" && sh /usr/libexec/bsdinstall/local.pre-fetch "$BSDINSTALL_CHROOT" 40003d66186SBrad Davis 40134b43f4bSIsaac Freundif [ "$PKGBASE" == yes ]; then 40234b43f4bSIsaac Freund bsdinstall pkgbase || error "Installation of base system packages failed" 40334b43f4bSIsaac Freundelse 40440923b0cSNathan Whitehorn if [ -n "$FETCH_DISTRIBUTIONS" ]; then 405c0e249d3SLars Kellogg-Stedman exec 5>&1 406c0e249d3SLars Kellogg-Stedman export BSDINSTALL_DISTDIR=$(`dirname $0`/fetchmissingdists 2>&1 1>&5) 40740923b0cSNathan Whitehorn FETCH_RESULT=$? 408c0e249d3SLars Kellogg-Stedman exec 5>&- 4092118f387SNathan Whitehorn 41040923b0cSNathan Whitehorn [ $FETCH_RESULT -ne 0 ] && error "Could not fetch remote distributions" 4112118f387SNathan Whitehorn fi 4127041a67eSAndrew Thompson bsdinstall checksum || error "Distribution checksum failed" 4137041a67eSAndrew Thompson bsdinstall distextract || error "Distribution extract failed" 41434b43f4bSIsaac Freundfi 4158befcf7bSNathan Whitehorn 4168befcf7bSNathan Whitehorn# Set up boot loader 4178befcf7bSNathan Whitehornbsdinstall bootconfig || error "Failed to configure bootloader" 4188befcf7bSNathan Whitehorn 41903d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.pre-configure ] && f_dprintf "Running local.pre-configure" && sh /usr/libexec/bsdinstall/local.pre-configure "$BSDINSTALL_CHROOT" 42003d66186SBrad Davis 4217041a67eSAndrew Thompsonbsdinstall rootpass || error "Could not set root password" 4222118f387SNathan Whitehorn 4232118f387SNathan Whitehorntrap true SIGINT # This section is optional 4242118f387SNathan Whitehornif [ "$NETCONFIG_DONE" != yes ]; then 4252118f387SNathan Whitehorn bsdinstall netconfig # Don't check for errors -- the user may cancel 4262118f387SNathan Whitehornfi 42717f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_TIME" ] && bsdinstall time 42817f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_SERVICES" ] && bsdinstall services 42917f4ded5SBrad Davis[ -z "$BSDINSTALL_SKIP_HARDENING" ] && bsdinstall hardening 430bbe2a1daSBjoern A. Zeeb[ -z "$BSDINSTALL_SKIP_FIRMWARE" ] && bsdinstall firmware 4312118f387SNathan Whitehorn 43204b46577SAlfonso S. Siciliano[ -z "$BSDINSTALL_SKIP_USERS" ] && bsddialog --backtitle "$OSNAME Installer" \ 43317f4ded5SBrad Davis --title "Add User Accounts" --yesno \ 4342118f387SNathan Whitehorn "Would you like to add users to the installed system now?" 0 0 && \ 4352118f387SNathan Whitehorn bsdinstall adduser 4362118f387SNathan Whitehorn 4372118f387SNathan Whitehorn# Allow user to change his mind 438a6d20207SPierre Pronchery[ -z "$BSDINSTALL_SKIP_FINALCONFIG" ] && bsdinstall finalconfig 4392118f387SNathan Whitehorn 4402118f387SNathan Whitehorntrap error SIGINT # SIGINT is bad again 4417041a67eSAndrew Thompsonbsdinstall config || error "Failed to save config" 4422118f387SNathan Whitehorn 4432118f387SNathan Whitehornif [ ! -z "$BSDINSTALL_FETCHDEST" ]; then 4442118f387SNathan Whitehorn rm -rf "$BSDINSTALL_FETCHDEST" 4452118f387SNathan Whitehornfi 4462118f387SNathan Whitehorn 44703d66186SBrad Davis[ -f /usr/libexec/bsdinstall/local.post-configure ] && f_dprintf "Running local.post-configure" && sh /usr/libexec/bsdinstall/local.post-configure "$BSDINSTALL_CHROOT" 44803d66186SBrad Davis 44917f4ded5SBrad Davisif [ -z "$BSDINSTALL_SKIP_MANUAL" ]; then 45004b46577SAlfonso S. Siciliano bsddialog --backtitle "$OSNAME Installer" --title "Manual Configuration" \ 45104b46577SAlfonso S. Siciliano --default-no --yesno \ 45244a25dd6SNathan 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 4536081c922SNathan Whitehorn if [ $? -eq 0 ]; then 4546081c922SNathan Whitehorn clear 4556081c922SNathan Whitehorn echo This shell is operating in a chroot in the new system. \ 4566081c922SNathan Whitehorn When finished making configuration changes, type \"exit\". 4575870d6a1SDag-Erling Smørgrav chroot "$BSDINSTALL_CHROOT" /bin/sh -l 2>&1 4586081c922SNathan Whitehorn fi 45917f4ded5SBrad Davisfi 4606081c922SNathan Whitehorn 461dfc23ba5SDag-Erling Smørgravbsdinstall entropy 462dfc23ba5SDag-Erling Smørgravbsdinstall umount 463dfc23ba5SDag-Erling Smørgrav 464bc4a673fSDevin Teskef_dprintf "Installation Completed at %s" "$( date )" 4652118f387SNathan Whitehorn 466bc4a673fSDevin Teske################################################################################ 467bc4a673fSDevin Teske# END 468bc4a673fSDevin Teske################################################################################ 469