#!/bin/sh # Filename: grml-setservices # Purpose: interface for basic configuration of system startup # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. # Latest change: Mit Jul 25 18:34:57 CEST 2007 [mika] ################################################################################ PN="$(basename $0)" TMP=$(mktemp) DIALOG=dialog CONFFILE='/etc/runlevel.conf' . /etc/grml/script-functions . /etc/grml/lsb-functions check4root || exit 100 bailout(){ rm -f "$TMP" exit 0 } trap bailout 1 2 3 15 is_value_set(){ [ -n "$1" ] || return 2 [ -r "$TMP" ] || return 3 grep -q "$1" $TMP && return 0 || return 1 } INFO="Which services would you like to have enabled on your system? Notice: this script will adjust your ${CONFFILE}, the file which provides the startup configuration for your system. You can edit the file manually as well. If you do not know what to choose just take the defaults or choose cancel. " # enable checks only if the according init script is present [ -r /etc/init.d/lvm2 ] && LVM='lvm!logical volume management!on' [ -r /etc/init.d/mdadm ] && SRAID='mdadm!software-raid via mdadm!on' [ -r /etc/init.d/dmraid ] && MRAID='dmraid!software-raid via dmraid!off' [ -r /etc/init.d/dbus -o -r /etc/init.d/dbus-1 ] && DBUS='dbus!hal/dbus (important for KDE e.g.)!off' [ -r /etc/init.d/hal ] && HAL='hal!Hardware Abstraction Layer daemon (important for KDE e.g.)!off' [ -r /etc/init.d/nfs-common ] && NFS='nfs!Network File System (client setup)!off' ## adjust setup # logic: # if is_value_set # remove_from_runlevel.conf # set_up_defaults_as_intented_in_/var/lib/dpkg/info/$PACKAGE.postinst # else # remove_from_runlevel.conf # set_up_only_for_stop_to_prevent_reactivation_via_maintainer_scripts_on_upgrade set_values(){ if [ -n "$LVM" ] ; then if is_value_set "lvm" ; then update-rc.d -f lvm2 remove >/dev/null 2>&1 update-rc.d lvm2 start 26 S . start 50 0 6 . else update-rc.d -f lvm2 remove >/dev/null 2>&1 update-rc.d lvm2 stop 20 0 1 6 . >/dev/null 2>&1 fi fi if [ -n "$SRAID" ] ; then if is_value_set "mdadm" ; then update-rc.d -f mdadm remove >/dev/null 2>&1 update-rc.d mdadm-raid start 25 S . start 50 0 6 . >/dev/null 2>&1 update-rc.d mdadm defaults 25 >/dev/null 2>&1 else update-rc.d -f mdadm remove >/dev/null 2>&1 update-rc.d mdadm stop 20 0 1 6 . >/dev/null 2>&1 update-rc.d -f mdadm-raid remove >/dev/null 2>&1 update-rc.d mdadm-raid stop 20 0 1 6 . >/dev/null 2>&1 fi fi if [ -n "$MRAID" ] ; then if is_value_set "dmraid" ; then update-rc.d -f dmraid remove >/dev/null 2>&1 update-rc.d dmraid start 04 S . start 51 0 6 . >/dev/null else update-rc.d -f dmraid remove >/dev/null 2>&1 update-rc.d dmraid stop 20 0 1 6 . >/dev/null 2>&1 fi fi if [ -n "$DBUS" ] ; then if is_value_set "dbus" ; then update-rc.d -f dbus remove >/dev/null 2>&1 update-rc.d dbus defaults >/dev/null 2>&1 else update-rc.d -f dbus remove >/dev/null 2>&1 update-rc.d dbus stop 20 0 1 6 . >/dev/null 2>&1 fi fi if [ -n "$HAL" ] ; then if is_value_set "hal" ; then update-rc.d -f hal remove >/dev/null 2>&1 update-rc.d hal start 24 2 3 4 5. stop 16 0 1 6 . >/dev/null 2>&1 else update-rc.d -f hal remove >/dev/null 2>&1 update-rc.d hal stop 20 0 1 6 . >/dev/null 2>&1 fi fi if [ -n "$NFS" ] ; then if is_value_set "nfs" ; then update-rc.d -f nfs-common remove >/dev/null 2>&1 update-rc.d nfs-common start 20 2 3 4 5 . stop 20 0 1 6 . start 44 S . >/dev/null 2>&1 else update-rc.d -f nfs-common remove >/dev/null 2>&1 update-rc.d nfs-common stop 20 0 1 6 . >/dev/null 2>&1 fi fi } # the interface itself oifs="$IFS" IFS='!' $DIALOG --title "$PN" --checklist "$INFO" 30 65 8 $LVM $SRAID $MRAID $DBUS $HAL $NFS 2>$TMP retval="$?" case $retval in (0) set_values ;; (1) echo "Cancel pressed." ; exit 1 ;; (255) echo "ESC pressed." ; exit 1 ;; esac retval=$? case $retval in (0) $DIALOG --title "$PN" --stdout --msgbox "Adjusting system runlevel configuration via $CONFFILE was successful." 0 0 esyslog user.notice "$PN" "Writing language settings ($LANGUAGE) to $CONFFILE was successful." ;; *) $DIALOG --title "$PN" --stdout --msgbox "Error writing settings to ${CONFFILE}." 0 0 esyslog user.notice "$PN" "Error writing settings to ${CONFFILE}." ;; esac rm -f $TMP IFS="$oifs" ## END OF FILE ################################################################# # vim: ai tw=80 expandtab