aboutsummaryrefslogtreecommitdiff
path: root/bsdinstall/scripts/auto
diff options
context:
space:
mode:
Diffstat (limited to 'bsdinstall/scripts/auto')
-rwxr-xr-xbsdinstall/scripts/auto444
1 files changed, 0 insertions, 444 deletions
diff --git a/bsdinstall/scripts/auto b/bsdinstall/scripts/auto
deleted file mode 100755
index 9f8946880f61..000000000000
--- a/bsdinstall/scripts/auto
+++ /dev/null
@@ -1,444 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2011 Nathan Whitehorn
-# Copyright (c) 2013-2018 Devin Teske
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# $FreeBSD$
-#
-############################################################ INCLUDES
-
-BSDCFG_SHARE="/usr/share/bsdconfig"
-. $BSDCFG_SHARE/common.subr || exit 1
-f_include $BSDCFG_SHARE/dialog.subr
-
-############################################################ GLOBALS
-
-#
-# Strings that should be moved to an i18n file and loaded with f_include_lang()
-#
-hline_arrows_tab_enter="Press arrows, TAB or ENTER"
-hline_arrows_tab_space_enter="Press arrows, TAB, SPACE or ENTER"
-msg_abort="Abort"
-msg_an_installation_step_has_been_aborted="An installation step has been aborted. Would you like\nto restart the installation or exit the installer?"
-msg_auto_ufs="Auto (UFS)"
-msg_auto_ufs_desc="Guided UFS Disk Setup"
-msg_auto_ufs_help="Menu options help choose which disk to setup using UFS and standard partitions"
-msg_auto_zfs="Auto (ZFS)"
-msg_auto_zfs_desc="Guided Root-on-ZFS"
-msg_auto_zfs_help="To use ZFS with less than 8GB RAM, see https://wiki.freebsd.org/ZFSTuningGuide"
-msg_exit="Exit"
-msg_freebsd_installer="FreeBSD Installer"
-msg_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?"
-msg_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?"
-msg_manual="Manual"
-msg_manual_desc="Manual Disk Setup (experts)"
-msg_manual_help="Create customized partitions from menu options"
-msg_no="NO"
-msg_restart="Restart"
-msg_shell="Shell"
-msg_shell_desc="Open a shell and partition by hand"
-msg_shell_help="Create customized partitions using command-line utilities"
-msg_yes="YES"
-
-############################################################ FUNCTIONS
-
-# error [$msg]
-#
-# Display generic error message when a script fails. An optional message
-# argument can preceed the generic message. User is given the choice of
-# restarting the installer or exiting.
-#
-error()
-{
- local title="$msg_abort"
- local btitle="$msg_freebsd_installer"
- local prompt="${1:+$1\n\n}$msg_an_installation_step_has_been_aborted"
- local hline="$hline_arrows_tab_space_enter"
-
- [ -f "$PATH_FSTAB" ] && bsdinstall umount
-
- local height width
- f_dialog_buttonbox_size height width \
- "$title" "$btitle" "$prompt" "$hline"
-
- if $DIALOG \
- --title "$title" \
- --backtitle "$btitle" \
- --hline "$hline" \
- --no-label "$msg_exit" \
- --yes-label "$msg_restart" \
- --yesno "$prompt" $height $width
- then
- exec $0
- # NOTREACHED
- fi
- exit 1
-}
-
-# dialog_workaround
-#
-# Ask the user if they wish to apply a workaround
-#
-dialog_workaround()
-{
- local passed_msg="$1"
- local title="$DIALOG_TITLE"
- local btitle="$DIALOG_BACKTITLE"
- local prompt # Calculated below
- local hline="$hline_arrows_tab_enter"
-
- local height=8 width=50 prefix=" "
- local plen=${#prefix} list= line=
- local max_width=$(( $width - 3 - $plen ))
-
- local yes no defaultno extra_args format
- if [ "$USE_XDIALOG" ]; then
- yes=ok no=cancel defaultno=default-no
- extra_args="--wrap --left"
- format="$passed_msg"
- else
- yes=yes no=no defaultno=defaultno
- extra_args="--cr-wrap"
- format="$passed_msg"
- fi
-
- # Add height for Xdialog(1)
- [ "$USE_XDIALOG" ] && height=$(( $height + $height / 5 + 3 ))
-
- prompt=$( printf "$format" )
- f_dprintf "%s: Workaround prompt" "$0"
- $DIALOG \
- --title "$title" \
- --backtitle "$btitle" \
- --hline "$hline" \
- --$yes-label "$msg_yes" \
- --$no-label "$msg_no" \
- $extra_args \
- --yesno "$prompt" $height $width
-}
-
-############################################################ MAIN
-
-f_dprintf "Began Installation at %s" "$( date )"
-
-rm -rf $BSDINSTALL_TMPETC
-mkdir $BSDINSTALL_TMPETC
-
-trap true SIGINT # This section is optional
-bsdinstall keymap
-
-trap error SIGINT # Catch cntrl-C here
-bsdinstall hostname || error "Set hostname failed"
-
-export DISTRIBUTIONS="base.txz kernel.txz"
-if [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then
- DISTMENU=`awk -F'\t' '!/^(kernel\.txz|base\.txz)/{print $1,$5,$6}' $BSDINSTALL_DISTDIR/MANIFEST`
- DISTMENU="$(echo ${DISTMENU} | sed -E 's/\.txz//g')"
-
- if [ -n "$DISTMENU" ]; then
- exec 3>&1
- EXTRA_DISTS=$( eval dialog \
- --backtitle \"FreeBSD Installer\" \
- --title \"Distribution Select\" --nocancel --separate-output \
- --checklist \"Choose optional system components to install:\" \
- 0 0 0 $DISTMENU \
- 2>&1 1>&3 )
- for dist in $EXTRA_DISTS; do
- export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz"
- done
- fi
-fi
-
-FETCH_DISTRIBUTIONS=""
-for dist in $DISTRIBUTIONS; do
- if [ ! -f $BSDINSTALL_DISTDIR/$dist ]; then
- FETCH_DISTRIBUTIONS="$FETCH_DISTRIBUTIONS $dist"
- fi
-done
-
-if [ -n "$FETCH_DISTRIBUTIONS" -a -n "$BSDINSTALL_CONFIGCURRENT" ]; then
- 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
- bsdinstall netconfig || error
- NETCONFIG_DONE=yes
-fi
-
-rm -f $PATH_FSTAB
-touch $PATH_FSTAB
-
-#
-# Try to detect known broken platforms and apply their workarounds
-#
-
-if f_interactive; then
- sys_maker=$( kenv -q smbios.system.maker )
- f_dprintf "smbios.system.maker=[%s]" "$sys_maker"
- sys_model=$( kenv -q smbios.system.product )
- f_dprintf "smbios.system.product=[%s]" "$sys_model"
- sys_version=$( kenv -q smbios.system.version )
- f_dprintf "smbios.system.version=[%s]" "$sys_version"
- sys_mb_maker=$( kenv -q smbios.planar.maker )
- f_dprintf "smbios.planar.maker=[%s]" "$sys_mb_maker"
- sys_mb_product=$( kenv -q smbios.planar.product )
- f_dprintf "smbios.planar.product=[%s]" "$sys_mb_product"
-
- #
- # Laptop Models
- #
- case "$sys_maker" in
- "LENOVO")
- case "$sys_version" in
- "ThinkPad X220"|"ThinkPad T420"|"ThinkPad T520"|"ThinkPad W520"|"ThinkPad X1")
- dialog_workaround "$msg_lenovo_fix"
- retval=$?
- f_dprintf "lenovofix_prompt=[%s]" "$retval"
- if [ $retval -eq $DIALOG_OK ]; then
- export ZFSBOOT_PARTITION_SCHEME="GPT + Lenovo Fix"
- export WORKAROUND_LENOVO=1
- fi
- ;;
- esac
- ;;
- "Dell Inc.")
- case "$sys_model" in
- "Latitude E6330"|"Latitude E7440"|"Latitude E7240"|"Precision Tower 5810")
- dialog_workaround "$msg_gpt_active_fix"
- retval=$?
- f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
- if [ $retval -eq $DIALOG_OK ]; then
- export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
- export WORKAROUND_GPTACTIVE=1
- fi
- ;;
- esac
- ;;
- "Hewlett-Packard")
- case "$sys_model" in
- "HP ProBook 4330s")
- dialog_workaround "$msg_gpt_active_fix"
- retval=$?
- f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
- if [ $retval -eq $DIALOG_OK ]; then
- export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
- export WORKAROUND_GPTACTIVE=1
- fi
- ;;
- esac
- ;;
- esac
- #
- # Motherboard Models
- #
- case "$sys_mb_maker" in
- "Intel Corporation")
- case "$sys_mb_product" in
- "DP965LT"|"D510MO")
- dialog_workaround "$msg_gpt_active_fix"
- retval=$?
- f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
- if [ $retval -eq $DIALOG_OK ]; then
- export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
- export WORKAROUND_GPTACTIVE=1
- fi
- ;;
- esac
- ;;
- "Acer")
- case "$sys_mb_product" in
- "Veriton M6630G")
- dialog_workaround "$msg_gpt_active_fix"
- retval=$?
- f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
- if [ $retval -eq $DIALOG_OK ]; then
- export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
- export WORKAROUND_GPTACTIVE=1
- fi
- ;;
- esac
- ;;
- esac
-fi
-
-PMODES="
- '$msg_auto_ufs' '$msg_auto_ufs_desc' '$msg_auto_ufs_help'
- '$msg_manual' '$msg_manual_desc' '$msg_manual_help'
- '$msg_shell' '$msg_shell_desc' '$msg_shell_help'
-" # END-QUOTE
-
-CURARCH=$( uname -m )
-case $CURARCH in
- amd64|arm64|i386|riscv) # Booting ZFS Supported
- PMODES="
- '$msg_auto_zfs' '$msg_auto_zfs_desc' '$msg_auto_zfs_help'
- $PMODES
- " # END-QUOTE
- ;;
- *) # Booting ZFS Unsupported
- ;;
-esac
-
-exec 3>&1
-PARTMODE=`echo $PMODES | xargs dialog --backtitle "FreeBSD Installer" \
- --title "Partitioning" \
- --item-help \
- --menu "How would you like to partition your disk?" \
- 0 0 0 2>&1 1>&3` || exit 1
-exec 3>&-
-
-case "$PARTMODE" in
-"$msg_auto_zfs") # ZFS
- bsdinstall zfsboot || error "ZFS setup failed"
- bsdinstall mount || error "Failed to mount filesystem"
- ;;
-"$msg_auto_ufs") # Guided UFS
- bsdinstall autopart || error "Partitioning error"
- bsdinstall mount || error "Failed to mount filesystem"
- ;;
-"$msg_shell") # Shell
- clear
- 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'."
- sh 2>&1
- ;;
-"$msg_manual") # Manual
- if f_isset debugFile; then
- # Give partedit the path to our logfile so it can append
- BSDINSTALL_LOG="${debugFile#+}" bsdinstall partedit || error "Partitioning error"
- else
- bsdinstall partedit || error "Partitioning error"
- fi
- bsdinstall mount || error "Failed to mount filesystem"
- ;;
-*)
- error "Unknown partitioning mode"
- ;;
-esac
-
-if [ -n "$FETCH_DISTRIBUTIONS" ]; then
- exec 3>&1
- export BSDINSTALL_DISTDIR=$(`dirname $0`/fetchmissingdists 2>&1 1>&3)
- FETCH_RESULT=$?
- exec 3>&-
-
- [ $FETCH_RESULT -ne 0 ] && error "Could not fetch remote distributions"
-fi
-bsdinstall checksum || error "Distribution checksum failed"
-bsdinstall distextract || error "Distribution extract failed"
-
-# Set up boot loader
-bsdinstall bootconfig || error "Failed to configure bootloader"
-
-bsdinstall rootpass || error "Could not set root password"
-
-trap true SIGINT # This section is optional
-if [ "$NETCONFIG_DONE" != yes ]; then
- bsdinstall netconfig # Don't check for errors -- the user may cancel
-fi
-bsdinstall time
-bsdinstall services
-bsdinstall hardening
-
-dialog --backtitle "FreeBSD Installer" --title "Add User Accounts" --yesno \
- "Would you like to add users to the installed system now?" 0 0 && \
- bsdinstall adduser
-
-finalconfig() {
- exec 3>&1
- REVISIT=$(dialog --backtitle "FreeBSD Installer" \
- --title "Final Configuration" --no-cancel --menu \
- "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 \
- "Exit" "Apply configuration and exit installer" \
- "Add User" "Add a user to the system" \
- "Root Password" "Change root password" \
- "Hostname" "Set system hostname" \
- "Network" "Networking configuration" \
- "Services" "Set daemons to run on startup" \
- "System Hardening" "Set security options" \
- "Time Zone" "Set system timezone" \
- "Handbook" "Install FreeBSD Handbook (requires network)" 2>&1 1>&3)
- exec 3>&-
-
- case "$REVISIT" in
- "Add User")
- bsdinstall adduser
- finalconfig
- ;;
- "Root Password")
- bsdinstall rootpass
- finalconfig
- ;;
- "Hostname")
- bsdinstall hostname
- finalconfig
- ;;
- "Network")
- bsdinstall netconfig
- finalconfig
- ;;
- "Services")
- bsdinstall services
- finalconfig
- ;;
- "System Hardening")
- bsdinstall hardening
- finalconfig
- ;;
- "Time Zone")
- bsdinstall time
- finalconfig
- ;;
- "Handbook")
- bsdinstall docsinstall
- finalconfig
- ;;
- esac
-}
-
-# Allow user to change his mind
-finalconfig
-
-trap error SIGINT # SIGINT is bad again
-bsdinstall config || error "Failed to save config"
-
-if [ ! -z "$BSDINSTALL_FETCHDEST" ]; then
- rm -rf "$BSDINSTALL_FETCHDEST"
-fi
-
-dialog --backtitle "FreeBSD Installer" --title "Manual Configuration" \
- --default-button no --yesno \
- "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
-if [ $? -eq 0 ]; then
- clear
- echo This shell is operating in a chroot in the new system. \
- When finished making configuration changes, type \"exit\".
- chroot "$BSDINSTALL_CHROOT" /bin/sh 2>&1
-fi
-
-bsdinstall entropy
-bsdinstall umount
-
-f_dprintf "Installation Completed at %s" "$( date )"
-
-################################################################################
-# END
-################################################################################