diff options
Diffstat (limited to 'system-config/frontend')
-rwxr-xr-x | system-config/frontend/live-config | 204 | ||||
-rwxr-xr-x | system-config/frontend/live-config-update | 74 |
2 files changed, 278 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 ${@} diff --git a/system-config/frontend/live-config-update b/system-config/frontend/live-config-update new file mode 100755 index 0000000..392cdba --- /dev/null +++ b/system-config/frontend/live-config-update @@ -0,0 +1,74 @@ +#!/bin/sh + +## live-config(7) - System Configuration Components +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +_DIRECTORY="${1:-/}" + +if [ ! -e "${_DIRECTORY}" ] +then + echo "E: cannot access ${_DIRECTORY}: No such directory." + exit 1 +fi + +_DISTRIBUTION="${2:-$(lsb_release -is | tr [A-Z] [a-z] | sed -e 's| |-|g')}" +_RELEASE="${3:-$(lsb_release -cs | tr [A-Z] [a-z])}" + +if ( [ -z "${_DISTRIBUTION}" ] || [ -z "${_RELEASE}" ] ) && [ ! -x "$(which lsb_release 2>/dev/null)" ] +then + echo "E: lsb_release: command not found." + echo "I: lsb_release can be obtained from:" + echo "I: http://www.linux-foundation.org/en/LSB" + echo "I: On Debian based systems, lsb_release can be installed with:" + echo "I: sudo apt-get install lsb-release" + exit 1 +fi + +case "${_DISTRIBUTION}" in + debian) + NOCOMPONENT="apport" + + 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" + + PROC_OPTIONS="onodev,noexec,nosuid" + ;; + + progress-linux) + NOCOMPONENT="apport" + + LIVE_HOSTNAME="system" + LIVE_USERNAME="user" + LIVE_USER_FULLNAME="User" + LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth debian-tor sudo" + + PROC_OPTIONS="onodev,noexec,nosuid,hidepid=2" + ;; +esac + +echo "Removing unused components for ${_DISTRIBUTION} (${_RELEASE})..." + +for NOCOMPONENT in ${NOCOMPONENT} +do + if ls "${_DIRECTORY}"/lib/live/config/*-"${NOCOMPONENT}" > /dev/null 2>&1 + then + rm -f "${_DIRECTORY}"/lib/live/config/*-"${NOCOMPONENT}" + fi +done + +echo "Setting specific defaults for ${_DISTRIBUTION} (${_RELEASE})..." + +sed -i -e "s|^LIVE_HOSTNAME=.*$|LIVE_HOSTNAME=\"${LIVE_HOSTNAME}\"|" \ + -e "s|^LIVE_USERNAME=.*$|LIVE_USERNAME=\"${LIVE_USERNAME}\"|" \ + -e "s|^LIVE_USER_FULLNAME=.*$|LIVE_USER_FULLNAME=\"${LIVE_USER_FULLNAME}\"|" \ + -e "s|^PROC_OPTIONS=.*$|PROC_OPTIONS=\"${PROC_OPTIONS}\"|" \ +"${_DIRECTORY}/bin/live-config" |