1218799Snwhitehorn#!/bin/sh
2218799Snwhitehorn#-
3218799Snwhitehorn# Copyright (c) 2011 Nathan Whitehorn
4258421Sdteske# Copyright (c) 2013 Devin Teske
5218799Snwhitehorn# All rights reserved.
6218799Snwhitehorn#
7218799Snwhitehorn# Redistribution and use in source and binary forms, with or without
8218799Snwhitehorn# modification, are permitted provided that the following conditions
9218799Snwhitehorn# are met:
10218799Snwhitehorn# 1. Redistributions of source code must retain the above copyright
11218799Snwhitehorn#    notice, this list of conditions and the following disclaimer.
12218799Snwhitehorn# 2. Redistributions in binary form must reproduce the above copyright
13218799Snwhitehorn#    notice, this list of conditions and the following disclaimer in the
14218799Snwhitehorn#    documentation and/or other materials provided with the distribution.
15218799Snwhitehorn#
16218799Snwhitehorn# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17218799Snwhitehorn# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18218799Snwhitehorn# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19218799Snwhitehorn# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20218799Snwhitehorn# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21218799Snwhitehorn# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22218799Snwhitehorn# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23218799Snwhitehorn# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24218799Snwhitehorn# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25218799Snwhitehorn# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26218799Snwhitehorn# SUCH DAMAGE.
27218799Snwhitehorn#
28218799Snwhitehorn# $FreeBSD: stable/10/usr.sbin/bsdinstall/scripts/auto 313764 2017-02-15 09:15:51Z garga $
29258421Sdteske#
30258421Sdteske############################################################ INCLUDES
31218799Snwhitehorn
32258421SdteskeBSDCFG_SHARE="/usr/share/bsdconfig"
33258421Sdteske. $BSDCFG_SHARE/common.subr || exit 1
34285769Sallanjudef_include $BSDCFG_SHARE/dialog.subr
35218799Snwhitehorn
36258421Sdteske############################################################ FUNCTIONS
37258421Sdteske
38218799Snwhitehornerror() {
39270644Sthompsa	local msg
40270644Sthompsa	if [ -n "$1" ]; then
41270644Sthompsa		msg="$1\n\n"
42270644Sthompsa	fi
43220088Snwhitehorn	test -n "$DISTDIR_IS_UNIONFS" && umount -f $BSDINSTALL_DISTDIR
44220088Snwhitehorn	test -f $PATH_FSTAB && bsdinstall umount
45218799Snwhitehorn	dialog --backtitle "FreeBSD Installer" --title "Abort" \
46218799Snwhitehorn	    --no-label "Exit" --yes-label "Restart" --yesno \
47270644Sthompsa	    "${msg}An installation step has been aborted. Would you like to restart the installation or exit the installer?" 0 0
48218799Snwhitehorn	if [ $? -ne 0 ]; then
49225637Snwhitehorn		exit 1
50218799Snwhitehorn	else
51218799Snwhitehorn		exec $0
52218799Snwhitehorn	fi
53218799Snwhitehorn}
54218799Snwhitehorn
55285769Sallanjudehline_arrows_tab_enter="Press arrows, TAB or ENTER"
56294642Sallanjudemsg_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?"
57285769Sallanjudemsg_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?"
58285769Sallanjudemsg_no="NO"
59285769Sallanjudemsg_yes="YES"
60285769Sallanjude
61285769Sallanjude# dialog_workaround
62285769Sallanjude#
63285769Sallanjude# Ask the user if they wish to apply a workaround
64285769Sallanjude#
65285769Sallanjudedialog_workaround()
66285769Sallanjude{
67285769Sallanjude	local passed_msg="$1"
68285769Sallanjude	local title="$DIALOG_TITLE"
69285769Sallanjude	local btitle="$DIALOG_BACKTITLE"
70285769Sallanjude	local prompt # Calculated below
71285769Sallanjude	local hline="$hline_arrows_tab_enter"
72285769Sallanjude
73285769Sallanjude	local height=8 width=50 prefix="   "
74285769Sallanjude	local plen=${#prefix} list= line=
75285769Sallanjude	local max_width=$(( $width - 3 - $plen ))
76285769Sallanjude
77285769Sallanjude	local yes no defaultno extra_args format
78285769Sallanjude	if [ "$USE_XDIALOG" ]; then
79285769Sallanjude		yes=ok no=cancel defaultno=default-no
80285769Sallanjude		extra_args="--wrap --left"
81285769Sallanjude		format="$passed_msg"
82285769Sallanjude	else
83285769Sallanjude		yes=yes no=no defaultno=defaultno
84285769Sallanjude		extra_args="--cr-wrap"
85285769Sallanjude		format="$passed_msg"
86285769Sallanjude	fi
87285769Sallanjude
88285769Sallanjude	# Add height for Xdialog(1)
89285769Sallanjude	[ "$USE_XDIALOG" ] && height=$(( $height + $height / 5 + 3 ))
90285769Sallanjude
91285769Sallanjude	prompt=$( printf "$format" )
92285769Sallanjude	f_dprintf "%s: Workaround prompt" "$0"
93285769Sallanjude	$DIALOG \
94285769Sallanjude		--title "$title"        \
95285769Sallanjude		--backtitle "$btitle"   \
96285769Sallanjude		--hline "$hline"        \
97285769Sallanjude		--$yes-label "$msg_yes" \
98285769Sallanjude		--$no-label "$msg_no"   \
99285769Sallanjude		$extra_args             \
100285769Sallanjude		--yesno "$prompt" $height $width
101285769Sallanjude}
102285769Sallanjude
103258421Sdteske############################################################ MAIN
104218799Snwhitehorn
105258421Sdteskef_dprintf "Began Installation at %s" "$( date )"
106258421Sdteske
107218799Snwhitehornrm -rf $BSDINSTALL_TMPETC
108218799Snwhitehornmkdir $BSDINSTALL_TMPETC
109218799Snwhitehorn
110218799Snwhitehorntrap true SIGINT	# This section is optional
111218799Snwhitehornbsdinstall keymap
112218799Snwhitehorn
113218799Snwhitehorntrap error SIGINT	# Catch cntrl-C here
114270644Sthompsabsdinstall hostname || error "Set hostname failed"
115218799Snwhitehorn
116219615Snwhitehornexport DISTRIBUTIONS="base.txz kernel.txz"
117219615Snwhitehornif [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then
118242188Sdteske	DISTMENU=`awk -F'\t' '!/^(kernel|base)/{print $4,$5,$6}' $BSDINSTALL_DISTDIR/MANIFEST`
119218947Snwhitehorn
120219615Snwhitehorn	exec 3>&1
121241902Sdteske	EXTRA_DISTS=$( eval dialog \
122241902Sdteske	    --backtitle \"FreeBSD Installer\" \
123241902Sdteske	    --title \"Distribution Select\" --nocancel --separate-output \
124241902Sdteske	    --checklist \"Choose optional system components to install:\" \
125241902Sdteske	    0 0 0 $DISTMENU \
126241902Sdteske	2>&1 1>&3 )
127219615Snwhitehorn	for dist in $EXTRA_DISTS; do
128219615Snwhitehorn		export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz"
129219615Snwhitehorn	done
130219615Snwhitehornfi
131218947Snwhitehorn
132218799SnwhitehornFETCH_DISTRIBUTIONS=""
133218799Snwhitehornfor dist in $DISTRIBUTIONS; do
134218799Snwhitehorn	if [ ! -f $BSDINSTALL_DISTDIR/$dist ]; then
135218799Snwhitehorn		FETCH_DISTRIBUTIONS="$FETCH_DISTRIBUTIONS $dist"
136218799Snwhitehorn	fi
137218799Snwhitehorndone
138220080SnwhitehornFETCH_DISTRIBUTIONS=`echo $FETCH_DISTRIBUTIONS`	# Trim white space
139218799Snwhitehorn
140220080Snwhitehornif [ -n "$FETCH_DISTRIBUTIONS" -a -n "$BSDINSTALL_CONFIGCURRENT" ]; then
141218799Snwhitehorn	dialog --backtitle "FreeBSD Installer" --title "Network Installation" --msgbox "No installation files were 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
142218799Snwhitehorn	bsdinstall netconfig || error
143218799Snwhitehorn	NETCONFIG_DONE=yes
144218799Snwhitehornfi
145218799Snwhitehorn
146220088Snwhitehornif [ -n "$FETCH_DISTRIBUTIONS" ]; then
147220080Snwhitehorn	exec 3>&1
148220834Snwhitehorn	BSDINSTALL_DISTSITE=$(`dirname $0`/mirrorselect 2>&1 1>&3)
149220080Snwhitehorn	MIRROR_BUTTON=$?
150220080Snwhitehorn	exec 3>&-
151270644Sthompsa	test $MIRROR_BUTTON -eq 0 || error "No mirror selected"
152220080Snwhitehorn	export BSDINSTALL_DISTSITE
153220080Snwhitehornfi
154220080Snwhitehorn
155259621Sdteskerm -f $PATH_FSTAB
156218799Snwhitehorntouch $PATH_FSTAB
157218799Snwhitehorn
158285769Sallanjude#
159285769Sallanjude# Try to detect known broken platforms and apply their workarounds
160285769Sallanjude#
161285769Sallanjude
162285769Sallanjudeif f_interactive; then
163285769Sallanjude	sys_maker=$( kenv -q smbios.system.maker )
164285769Sallanjude	f_dprintf "smbios.system.maker=[%s]" "$sys_maker"
165285769Sallanjude	sys_model=$( kenv -q smbios.system.product )
166285769Sallanjude	f_dprintf "smbios.system.product=[%s]" "$sys_model"
167285769Sallanjude	sys_version=$( kenv -q smbios.system.version )
168285769Sallanjude	f_dprintf "smbios.system.version=[%s]" "$sys_version"
169294642Sallanjude	sys_mb_maker=$( kenv -q smbios.planar.maker )
170294642Sallanjude	f_dprintf "smbios.planar.maker=[%s]" "$sys_mb_maker"
171294642Sallanjude	sys_mb_product=$( kenv -q smbios.planar.product )
172294642Sallanjude	f_dprintf "smbios.planar.product=[%s]" "$sys_mb_product"
173294642Sallanjude
174294642Sallanjude	#
175294642Sallanjude	# Laptop Models
176294642Sallanjude	#
177285769Sallanjude	case "$sys_maker" in
178285769Sallanjude	"LENOVO")
179285769Sallanjude		case "$sys_version" in
180285769Sallanjude		"ThinkPad X220"|"ThinkPad T420"|"ThinkPad T520")
181285769Sallanjude			dialog_workaround "$msg_lenovo_fix"
182285769Sallanjude			retval=$?
183285769Sallanjude			f_dprintf "lenovofix_prompt=[%s]" "$retval"
184285769Sallanjude			if [ $retval -eq $DIALOG_OK ]; then
185285769Sallanjude				export ZFSBOOT_PARTITION_SCHEME="GPT + Lenovo Fix"
186285769Sallanjude				export WORKAROUND_LENOVO=1
187285769Sallanjude			fi
188285769Sallanjude			;;
189285769Sallanjude		esac
190285769Sallanjude		;;
191285769Sallanjude	"Dell Inc.")
192285769Sallanjude		case "$sys_model" in
193294651Svangyzen		"Latitude E7440"|"Latitude E7240"|"Precision Tower 5810")
194285769Sallanjude			dialog_workaround "$msg_gpt_active_fix"
195285769Sallanjude			retval=$?
196285769Sallanjude			f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
197285769Sallanjude			if [ $retval -eq $DIALOG_OK ]; then
198285769Sallanjude				export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
199285769Sallanjude				export WORKAROUND_GPTACTIVE=1
200285769Sallanjude			fi
201285769Sallanjude			;;
202285769Sallanjude		esac
203285769Sallanjude		;;
204294642Sallanjude	"Hewlett-Packard")
205294642Sallanjude		case "$sys_model" in
206294642Sallanjude		"HP ProBook 4330s")
207294642Sallanjude			dialog_workaround "$msg_gpt_active_fix"
208294642Sallanjude			retval=$?
209294642Sallanjude			f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
210294642Sallanjude			if [ $retval -eq $DIALOG_OK ]; then
211294642Sallanjude				export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
212294642Sallanjude				export WORKAROUND_GPTACTIVE=1
213294642Sallanjude			fi
214294642Sallanjude			;;
215294642Sallanjude		esac
216294642Sallanjude		;;
217285769Sallanjude	esac
218294642Sallanjude	#
219294642Sallanjude	# Motherboard Models
220294642Sallanjude	#
221294642Sallanjude	case "$sys_mb_maker" in
222294642Sallanjude	"Intel Corporation")
223294642Sallanjude		case "$sys_mb_product" in
224294642Sallanjude		"DP965LT"|"D510MO")
225294642Sallanjude			dialog_workaround "$msg_gpt_active_fix"
226294642Sallanjude			retval=$?
227294642Sallanjude			f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
228294642Sallanjude			if [ $retval -eq $DIALOG_OK ]; then
229294642Sallanjude				export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
230294642Sallanjude				export WORKAROUND_GPTACTIVE=1
231294642Sallanjude			fi
232294642Sallanjude			;;
233294642Sallanjude		esac
234294642Sallanjude		;;
235294642Sallanjude	"Acer")
236294642Sallanjude		case "$sys_mb_product" in
237294642Sallanjude		"Veriton M6630G")
238294642Sallanjude			dialog_workaround "$msg_gpt_active_fix"
239294642Sallanjude			retval=$?
240294642Sallanjude			f_dprintf "gpt_active_fix_prompt=[%s]" "$retval"
241294642Sallanjude			if [ $retval -eq $DIALOG_OK ]; then
242294642Sallanjude				export ZFSBOOT_PARTITION_SCHEME="GPT + Active"
243294642Sallanjude				export WORKAROUND_GPTACTIVE=1
244294642Sallanjude			fi
245294642Sallanjude			;;
246294642Sallanjude		esac
247294642Sallanjude		;;
248294642Sallanjude	esac
249285769Sallanjudefi
250285769Sallanjude
251256361SdteskePMODES="\
252272194Sdteske\"Auto (UFS)\" \"Guided Disk Setup\" \
253272194SdteskeManual \"Manual Disk Setup (experts)\" \
254256361SdteskeShell \"Open a shell and partition by hand\""
255218799Snwhitehorn
256256361SdteskeCURARCH=$( uname -m )
257256361Sdteskecase $CURARCH in
258256361Sdteske	amd64|i386)	# Booting ZFS Supported
259272194Sdteske		PMODES="$PMODES \"Auto (ZFS)\" \"Guided Root-on-ZFS\""
260256361Sdteske		;;
261256361Sdteske	*)		# Booting ZFS Unspported
262256361Sdteske		;;
263256361Sdteskeesac
264256361Sdteske
265256361Sdteskeexec 3>&1
266256361SdteskePARTMODE=`echo $PMODES | xargs dialog --backtitle "FreeBSD Installer" \
267256361Sdteske	--title "Partitioning" \
268256361Sdteske	--menu "How would you like to partition your disk?" \
269259621Sdteske	0 0 0 2>&1 1>&3` || exit 1
270256361Sdteskeexec 3>&-
271256361Sdteske
272256361Sdteskecase "$PARTMODE" in
273272194Sdteske"Auto (UFS)")	# Guided
274270644Sthompsa	bsdinstall autopart || error "Partitioning error"
275270644Sthompsa	bsdinstall mount || error "Failed to mount filesystem"
276218799Snwhitehorn	;;
277256361Sdteske"Shell")	# Shell
278218799Snwhitehorn	clear
279218799Snwhitehorn	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'."
280222425Snwhitehorn	sh 2>&1
281218799Snwhitehorn	;;
282256361Sdteske"Manual")	# Manual
283258421Sdteske	if f_isset debugFile; then
284258421Sdteske		# Give partedit the path to our logfile so it can append
285270644Sthompsa		BSDINSTALL_LOG="${debugFile#+}" bsdinstall partedit || error "Partitioning error"
286258421Sdteske	else
287270644Sthompsa		bsdinstall partedit || error "Partitioning error"
288258421Sdteske	fi
289270644Sthompsa	bsdinstall mount || error "Failed to mount filesystem"
290218799Snwhitehorn	;;
291272194Sdteske"Auto (ZFS)")	# ZFS
292270644Sthompsa	bsdinstall zfsboot || error "ZFS setup failed"
293270644Sthompsa	bsdinstall mount || error "Failed to mount filesystem"
294256361Sdteske	;;
295218799Snwhitehorn*)
296270644Sthompsa	error "Unknown partitioning mode"
297218799Snwhitehorn	;;
298218799Snwhitehornesac
299218799Snwhitehorn
300218799Snwhitehornif [ ! -z "$FETCH_DISTRIBUTIONS" ]; then
301218799Snwhitehorn	ALL_DISTRIBUTIONS="$DISTRIBUTIONS"
302218799Snwhitehorn
303218799Snwhitehorn	# Download to a directory in the new system as scratch space
304219528Snwhitehorn	BSDINSTALL_FETCHDEST="$BSDINSTALL_CHROOT/usr/freebsd-dist"
305270644Sthompsa	mkdir -p "$BSDINSTALL_FETCHDEST" || error "Could not create directory $BSDINSTALL_FETCHDEST"
306218799Snwhitehorn
307218799Snwhitehorn	export DISTRIBUTIONS="$FETCH_DISTRIBUTIONS"
308218799Snwhitehorn	# Try to use any existing distfiles
309220088Snwhitehorn	if [ -d $BSDINSTALL_DISTDIR ]; then
310220080Snwhitehorn		DISTDIR_IS_UNIONFS=1
311223897Snwhitehorn		mount_nullfs -o union "$BSDINSTALL_FETCHDEST" "$BSDINSTALL_DISTDIR"
312225637Snwhitehorn	else
313286286Sgjb		export DISTRIBUTIONS="$ALL_DISTRIBUTIONS"
314218799Snwhitehorn		export BSDINSTALL_DISTDIR="$BSDINSTALL_FETCHDEST"
315218799Snwhitehorn	fi
316218799Snwhitehorn		
317225637Snwhitehorn	export FTP_PASSIVE_MODE=YES
318270644Sthompsa	bsdinstall distfetch || error "Failed to fetch distribution"
319218799Snwhitehorn	export DISTRIBUTIONS="$ALL_DISTRIBUTIONS"
320218799Snwhitehornfi
321218799Snwhitehorn
322270644Sthompsabsdinstall checksum || error "Distribution checksum failed"
323270644Sthompsabsdinstall distextract || error "Distribution extract failed"
324270644Sthompsabsdinstall rootpass || error "Could not set root password"
325218799Snwhitehorn
326218799Snwhitehorntrap true SIGINT	# This section is optional
327218799Snwhitehornif [ "$NETCONFIG_DONE" != yes ]; then
328218799Snwhitehorn	bsdinstall netconfig	# Don't check for errors -- the user may cancel
329218799Snwhitehornfi
330218799Snwhitehornbsdinstall time
331218799Snwhitehornbsdinstall services
332218799Snwhitehorn
333218799Snwhitehorndialog --backtitle "FreeBSD Installer" --title "Add User Accounts" --yesno \
334218799Snwhitehorn    "Would you like to add users to the installed system now?" 0 0 && \
335218799Snwhitehorn    bsdinstall adduser
336218799Snwhitehorn
337218799Snwhitehornfinalconfig() {
338218799Snwhitehorn	exec 3>&1
339218799Snwhitehorn	REVISIT=$(dialog --backtitle "FreeBSD Installer" \
340218799Snwhitehorn	    --title "Final Configuration" --no-cancel --menu \
341228194Snwhitehorn	    "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 \
342226507Skensmith		"Exit" "Apply configuration and exit installer" \
343218799Snwhitehorn		"Add User" "Add a user to the system" \
344218799Snwhitehorn		"Root Password" "Change root password" \
345218799Snwhitehorn		"Hostname" "Set system hostname" \
346218799Snwhitehorn		"Network" "Networking configuration" \
347218799Snwhitehorn		"Services" "Set daemons to run on startup" \
348218799Snwhitehorn		"Time Zone" "Set system timezone" \
349228194Snwhitehorn		"Handbook" "Install FreeBSD Handbook (requires network)" 2>&1 1>&3)
350218799Snwhitehorn	exec 3>&-
351218799Snwhitehorn
352218799Snwhitehorn	case "$REVISIT" in
353218799Snwhitehorn	"Add User")
354218799Snwhitehorn		bsdinstall adduser
355218799Snwhitehorn		finalconfig
356218799Snwhitehorn		;;
357218799Snwhitehorn	"Root Password")
358218799Snwhitehorn		bsdinstall rootpass 
359218799Snwhitehorn		finalconfig
360218799Snwhitehorn		;;
361218799Snwhitehorn	"Hostname")
362218799Snwhitehorn		bsdinstall hostname
363218799Snwhitehorn		finalconfig
364218799Snwhitehorn		;;
365218799Snwhitehorn	"Network")
366218799Snwhitehorn		bsdinstall netconfig
367218799Snwhitehorn		finalconfig
368218799Snwhitehorn		;;
369218799Snwhitehorn	"Services")
370218799Snwhitehorn		bsdinstall services
371218799Snwhitehorn		finalconfig
372218799Snwhitehorn		;;
373218799Snwhitehorn	"Time Zone")
374218799Snwhitehorn		bsdinstall time
375218799Snwhitehorn		finalconfig
376218799Snwhitehorn		;;
377223897Snwhitehorn	"Handbook")
378223897Snwhitehorn		bsdinstall docsinstall
379223897Snwhitehorn		finalconfig
380223897Snwhitehorn		;;
381218799Snwhitehorn	esac
382218799Snwhitehorn}
383218799Snwhitehorn
384218799Snwhitehorn# Allow user to change his mind
385218799Snwhitehornfinalconfig
386218799Snwhitehorn
387218799Snwhitehorntrap error SIGINT	# SIGINT is bad again
388270644Sthompsabsdinstall config  || error "Failed to save config"
389218799Snwhitehorn
390313764Sgargaif [ -n "$DISTDIR_IS_UNIONFS" ]; then
391313764Sgarga	umount -f $BSDINSTALL_DISTDIR
392313764Sgargafi
393313764Sgarga
394218799Snwhitehornif [ ! -z "$BSDINSTALL_FETCHDEST" ]; then
395218799Snwhitehorn	rm -rf "$BSDINSTALL_FETCHDEST"
396218799Snwhitehornfi
397218799Snwhitehorn
398228194Snwhitehorndialog --backtitle "FreeBSD Installer" --title "Manual Configuration" \
399271777Snwhitehorn    --default-button no --yesno \
400271777Snwhitehorn   "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
401228194Snwhitehornif [ $? -eq 0 ]; then
402228194Snwhitehorn	clear
403228194Snwhitehorn	echo This shell is operating in a chroot in the new system. \
404228194Snwhitehorn	    When finished making configuration changes, type \"exit\".
405228194Snwhitehorn	chroot "$BSDINSTALL_CHROOT" /bin/sh 2>&1
406228194Snwhitehornfi
407228194Snwhitehorn
408256340Sdesbsdinstall entropy
409256340Sdesbsdinstall umount
410256340Sdes
411258421Sdteskef_dprintf "Installation Completed at %s" "$( date )"
412218799Snwhitehorn
413258421Sdteske################################################################################
414258421Sdteske# END
415258421Sdteske################################################################################
416