summaryrefslogtreecommitdiffstats
path: root/release/rc.local
blob: 0868c28a62e8d4141a682acc187c54d6630c1947 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/sh
# $FreeBSD$

: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

if ! mdconfig -l | grep -q md3; then
	mdconfig -a -u 3 -s 8m
	newfs /dev/md3
	mount /dev/md3 /mnt
	tar -C /etc -cf - . | tar -C /mnt -xf -
	sync; sync; sync
	umount /mnt
	mount /dev/md3 /etc
fi

# Mount /dev/ufs/pfSense_Install on factory to prevent USB stick disk used
# to boot to be shown as an option to install
if [ -e /dev/ufs/pfSense_Install -a ! -d /tmp/usb_install_media ]; then
	mkdir -p /tmp/usb_install_media
	mount /dev/ufs/pfSense_Install /tmp/usb_install_media
fi

if [ -f /root/factory-pre.sh ]; then
	sh -x /root/factory-pre.sh >/tmp/factory-pre.debug 2>&1
	unset CE_message
else
	CE_message=1
fi

MACHINE=`uname -m`

# resolv.conf from DHCP ends up in here, so make sure the directory exists
mkdir /tmp/bsdinstall_etc

kbdcontrol -d >/dev/null 2>&1
if [ $? -eq 0 ]; then
	# Syscons: use xterm, start interesting things on other VTYs
	if [ ${MACHINE} = "pc98" ]; then
		TERM=cons25w
	else
		TERM=xterm
	fi

	# Don't send ESC on function-key 62/63 (left/right command key)
	kbdcontrol -f 62 '' > /dev/null 2>&1
	kbdcontrol -f 63 '' > /dev/null 2>&1

	if [ -z "$EXTERNAL_VTY_STARTED" ]; then
		# Init will clean these processes up if/when the system
		# goes multiuser
		touch /tmp/bsdinstall_log
		tail -f /tmp/bsdinstall_log > /dev/ttyv2 &
		/usr/libexec/getty autologin ttyv3 &
		EXTERNAL_VTY_STARTED=1
	fi
else
	# Serial or other console
	echo
	echo "Welcome to pfSense!"
	echo
	echo "Please choose the appropriate terminal type for your system."
	echo "Common console types are:"
	echo "   ansi     Standard ANSI terminal"
	echo "   vt100    VT100 or compatible terminal"
	echo "   xterm    xterm terminal emulator (or compatible)"
	echo "   cons25w  cons25w terminal"
	echo
	echo -n "Console type [vt100]: "
	read TERM
	TERM=${TERM:-vt100}
fi
export TERM

if [ -f /etc/installerconfig ]; then
	if bsdinstall script /etc/installerconfig; then
		dialog --backtitle "pfSense Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Installation of pfSense complete! Rebooting in 10 seconds" 10 30 10
		reboot
	else
		dialog --backtitle "pfSense Installer" --title "Error" --textbox /tmp/bsdinstall_log 0 0
	fi
	exit 
fi

if [ -n "${CE_message}" ]; then
	msg="pfSense is Copyright 2004-2017 Rubicon Communications, LLC (Netgate).\n\npfSense is a federally registered trademark of Electric Sheep Fencing, LLC. Any unauthorized use of this trademark is prohibited by state and federal law and international law. Refer to our Trademark Usage Guidelines for how to properly use the marks. All rights reserved.\n\nAbsolutely No Commercial Distribution Is Allowed."
else
	msg="This software is only for use on platforms supplied by Rubicon Communications, LLC (Netgate).\n\npfSense is Copyright 2004-2017 Rubicon Communications, LLC (Netgate).\n\npfSense is a federally registered trademark of Electric Sheep Fencing, LLC. Any unauthorized use of this trademark is prohibited by state and federal law and international law. Refer to our Trademark Usage Guidelines for how to properly use the marks. All rights reserved.\n\nAbsolutely No Commercial Distribution Is Allowed"
fi

if [ ! -f /tmp/buildroom ]; then
	exec 3>&1
	dialog --backtitle "pfSense Installer" \
		--title "Copyright and distribution notice" \
		--ok-label "Accept" \
		--msgbox "${msg}" 0 0 2>&1 1>&3
	exec 3>&-
fi

IOPTS="\
\"Install\" \"Install pfSense\" \
\"Rescue Shell\" \"Launch a shell for rescue operations\""

if [ -x /root/recover_configxml.sh ] ; then
	IOPTS="${IOPTS} \"Recover config.xml\" \"Recover config.xml from a previous install\""
fi

exec 3>&1
IMODE=`echo ${IOPTS} | xargs dialog --backtitle "pfSense Installer" \
	--title "Welcome" \
	--menu "Welcome to pfSense!" \
	0 0 0 2>&1 1>&3` || exit 1
exec 3>&-

case "$IMODE" in
"Install")	# Install
	# If not netbooting, have the installer configure the network
	dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
	if [ ${dlv:=0} -eq 0 -a ! -f /etc/diskless ]; then
		BSDINSTALL_CONFIGCURRENT=yes; export BSDINSTALL_CONFIGCURRENT
	fi

	trap true SIGINT	# Ignore cntrl-C here
	bsdinstall
	if [ $? -eq 0 ]; then
		dialog --backtitle "pfSense Installer" --title "Complete" --yes-label "Reboot" --no-label "Shell" --yesno "Installation of pfSense complete! Would you like to reboot into the installed system now?" 0 0 && reboot
		clear
		echo "When finished, type 'exit' to reboot."
		/bin/sh
		reboot
	else
		. /etc/rc.local
	fi
	;;
"Rescue Shell")	# Rescue Shell
	clear
	echo "When finished, type 'exit' to return to the installer."
	/bin/sh
	. /etc/rc.local
	;;
"Recover config.xml") # Recover config.xml from a target drive
	/root/recover_configxml.sh
	. /etc/rc.local
	;;
esac

OpenPOWER on IntegriCloud