summaryrefslogtreecommitdiffstats
path: root/system-config/frontend/live-config
diff options
context:
space:
mode:
Diffstat (limited to 'system-config/frontend/live-config')
-rwxr-xr-xsystem-config/frontend/live-config204
1 files changed, 204 insertions, 0 deletions
diff --git a/system-config/frontend/live-config b/system-config/frontend/live-config
new file mode 100755
index 0000000..0f037e1
--- /dev/null
+++ b/system-config/frontend/live-config
@@ -0,0 +1,204 @@
+#!/bin/sh
+
+## live-config(7) - System Configuration Components
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+##
+## The complete text of the GNU General Public License
+## can be found in /usr/share/common-licenses/GPL-3 file.
+
+
+#set -e
+
+# Defaults
+LIVE_HOSTNAME="debian"
+LIVE_USERNAME="user"
+LIVE_USER_FULLNAME="Debian Live user"
+LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth debian-tor"
+export LIVE_HOSTNAME LIVE_USERNAME LIVE_USER_FULLNAME LIVE_USER_DEFAULT_GROUPS
+
+DEBIAN_FRONTEND="noninteractive"
+DEBIAN_PRIORITY="critical"
+DEBCONF_NOWARNINGS="yes"
+export DEBIAN_FRONTEND DEBIAN_PRIORITY DEBCONF_NOWARNINGS
+
+_IP_SEPARATOR="-"
+_PROC_OPTIONS="onodev,noexec,nosuid"
+export _IP_SEPARATOR _PROC_OPTIONS
+
+_COMPONENTS="$(ls /lib/live/config/*)"
+
+# Reading configuration files from filesystem and live-media
+set -o allexport
+for _FILE in /etc/live/config.conf /etc/live/config.conf.d/*.conf \
+ /lib/live/mount/medium/live/config.conf /lib/live/mount/medium/live/config.conf.d/*.conf \
+ /lib/live/mount/persistence/*/live/config.conf /lib/live/mount/persistence/*/live/config.conf.d/*.conf
+do
+ if [ -e "${_FILE}" ]
+ then
+ . "${_FILE}"
+ fi
+done
+set +o allexport
+
+Cmdline ()
+{
+ for _PARAMETER in ${LIVE_CONFIG_CMDLINE}
+ do
+ case "${_PARAMETER}" in
+ # Components
+ live-config.components=*|components=*)
+ # Only run requested components
+ LIVE_CONFIG_COMPONENTS="${_PARAMETER#*components=}"
+ LIVE_CONFIG_NOCOMPONENTS=""
+ _COMPONENTS=""
+ ;;
+
+ live-config.components|components)
+ # Run all components
+ LIVE_CONFIG_COMPONENTS=""
+ LIVE_CONFIG_NOCOMPONENTS=""
+ _COMPONENTS="$(ls /lib/live/config/*)"
+ ;;
+
+ live-config.nocomponents=*|nocomponents=*)
+ # Don't run requested components
+ LIVE_CONFIG_COMPONENTS=""
+ LIVE_CONFIG_NOCOMPONENTS="${_PARAMETER#*nocomponents=}"
+ _COMPONENTS="$(ls /lib/live/config/*)"
+ ;;
+
+ live-config.nocomponents|nocomponents)
+ # Don't run any component
+ LIVE_CONFIG_COMPONENTS=""
+ LIVE_CONFIG_NOCOMPONENTS=""
+ _COMPONENTS=""
+ ;;
+
+ # Special options
+ live-config.debug|debug)
+ LIVE_CONFIG_DEBUG="true"
+ ;;
+ esac
+ done
+
+ # Include requested components
+ if [ -n "${LIVE_CONFIG_COMPONENTS}" ]
+ then
+ for _COMPONENT in $(echo ${LIVE_CONFIG_COMPONENTS} | sed -e 's|,| |g')
+ do
+ _COMPONENTS="${_COMPONENTS} $(ls /lib/live/config/????-${_COMPONENT} 2> /dev/null || true)"
+ done
+ fi
+
+ # Exclude requested components
+ if [ -n "${LIVE_CONFIG_NOCOMPONENTS}" ]
+ then
+ for _NOCOMPONENT in $(echo ${LIVE_CONFIG_NOCOMPONENTS} | sed -e 's|,| |g')
+ do
+ _COMPONENTS="$(echo ${_COMPONENTS} | sed -e "s|$(ls /lib/live/config/????-${_NOCOMPONENT} 2> /dev/null || echo none)||")"
+ done
+ fi
+}
+
+Trap ()
+{
+ _RETURN="${?}"
+
+ case "${_RETURN}" in
+ 0)
+
+ ;;
+
+ *)
+ echo ":ERROR"
+ ;;
+ esac
+
+ return ${_RETURN}
+}
+
+Setup_network ()
+{
+ if [ -z "${_NETWORK}" ] && [ -e /etc/init.d/live-config ]
+ then
+ /etc/init.d/mountkernfs.sh start > /dev/null 2>&1
+ /etc/init.d/mountdevsubfs.sh start > /dev/null 2>&1
+ /etc/init.d/networking start > /dev/null 2>&1
+
+ # Now force adapter up if specified with ethdevice= on cmdline
+ if [ -n "${ETHDEVICE}" ]
+ then
+ ifup --force "${ETHDEVICE}"
+ fi
+
+ _NETWORK="true"
+ export _NETWORK
+ fi
+}
+
+Main ()
+{
+ if [ ! -e /proc/version ]
+ then
+ mount -n -t proc -o${_PROC_OPTIONS} -odefaults proc /proc
+ fi
+
+ LIVE_CONFIG_CMDLINE="${LIVE_CONFIG_CMDLINE:-$(cat /proc/cmdline)}"
+ export LIVE_CONFIG_CMDLINE
+
+ if ! echo ${LIVE_CONFIG_CMDLINE} | grep -qs "boot=live"
+ then
+ exit 0
+ fi
+
+ # Setting up log redirection
+ rm -f /var/log/live/config.log
+ rm -f /tmp/live-config.pipe
+
+ mkdir -p /var/log/live
+ mkfifo /tmp/live-config.pipe
+ tee < /tmp/live-config.pipe /var/log/live/config.log &
+ exec > /tmp/live-config.pipe 2>&1
+
+ echo -n "live-config:" > /tmp/live-config.pipe 2>&1
+ trap 'Trap' EXIT HUP INT QUIT TERM
+
+ # Processing command line
+ Cmdline
+
+ case "${LIVE_CONFIG_DEBUG}" in
+ true)
+ set -x
+ ;;
+ esac
+
+ # Configuring system
+ _COMPONENTS="$(echo ${_COMPONENTS} | sed -e 's| |\n|g' | sort -u)"
+
+ for _COMPONENT in ${_COMPONENTS}
+ do
+ [ "${LIVE_CONFIG_DEBUG}" = "true" ] && echo "[$(date +'%F %T')] live-config: ${_COMPONENT}" > /tmp/live-config.pipe
+
+ ${_COMPONENT} > /tmp/live-config.pipe 2>&1
+ done
+
+ echo "." > /tmp/live-config.pipe
+
+ # Cleaning up log redirection
+ rm -f /tmp/live-config.pipe
+}
+
+Main ${@}