#!/bin/sh ## live-config(7) - System Configuration Components ## Copyright (C) 2006-2015 Daniel Baumann ## ## 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 . ## ## 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 ${@}