qubes-installer-qubes-os/firstboot/init/firstboot
Marek Marczykowski d6a588e0a4 firstboot: add text-based fallback in case of GUI failed
If firstboot fails it is very hard to debug the problem, because lack of any
user and no network access. So provide some basic fallback.
2012-12-19 04:50:16 +01:00

101 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
### BEGIN INIT INFO
# Provides: firstboot
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Required-Start: qubes_core
# Should-Start: $network
# Short-Description: Starts the firstboot configuration program
# Description: Firstboot runs the first time a machine is booted after
# installation. It checks for the existance of an
# /etc/sysconfig/firstboot file. If the file exists and
# contains RUN_FIRSTBOOT=NO, firstboot will not run. Otherwise
# firstboot will be run. If /etc/reconfigSys exists or if
# "reconfig" is provided in the kernel boot arguments,
# firstboot will run in reconfiguration mode.
### END INIT INFO
#
# firstboot: Starts the firstboot druid if it hasn't been run before
#
# chkconfig: 35 99 95
#
# description: Firstboot is a druid style program that runs on the first \
# time a machine is booted after install. It checks for \
# the existence of an /etc/sysconfig/firstboot file. If \
# the file exists and contains RUN_FIRSTBOOT=NO, firstboot \
# will not run. Otherwise, firstboot will be run. \
# If /etc/reconfigSys exists or if "reconfig" is provided \
# in the kernel boot arguments, firstboot will run in \
# reconfiguration mode.
#
# Source function library.
. /etc/init.d/functions
FILENAME=/etc/sysconfig/firstboot
[ -z "$HOME" ] && export HOME=/
usage() {
echo $"Usage: $0 {start|stop}"
}
case "$1" in
start)
if [ `/usr/bin/id -u` -ne 0 ]; then
echo $"ERROR: Only root can run firstboot"
exit 4
fi
if [ ! -f /usr/sbin/firstboot ]; then
echo $"ERROR: Program /usr/sbin/firstboot is not installed"
exit 5
fi
args=""
if [ -f $FILENAME ] && [ ! -z "$(grep 'RUN_FIRSTBOOT=NO' $FILENAME)" ]; then
exit 0
fi
if grep -i "reconfig" /proc/cmdline >/dev/null || [ -f /etc/reconfigSys ]; then
args="--reconfig"
fi
. /etc/sysconfig/i18n
/usr/bin/plymouth --hide-splash
/usr/sbin/firstboot $args || /usr/sbin/firstboot-qubes-text
RETVAL=$?
/usr/bin/plymouth --show-splash
# If firstboot succeeded, chkconfig it off so we don't see the message
# every time about starting up firstboot.
if [ "$RETVAL" -eq 0 ]; then
action "" /bin/true
/sbin/chkconfig firstboot off
else
action "" /bin/false
fi
exit $RETVAL
;;
stop)
exit 0
;;
restart | reload | force-reload | status | condrestart | try-restart)
usage
exit 3
;;
*)
usage
exit 2
;;
esac