* initial checkin
[grml-autoconfig.git] / sbin / grml-autoconfig
1 #!/bin/sh
2 # Filename:      grml-autoconfig
3 # Purpose:       configuration interface for grml-autoconfig
4 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika(at)grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 # Latest change: Die Sep 26 12:26:05 CEST 2006 [mika]
8 ################################################################################
9
10 if [ "$UID" != 0 ];  then
11   echo "Error: please run this script with uid 0 (root)." ; exit 1
12 fi
13
14 LANG=C
15 LC_ALL=C
16 PN=`basename "$0"`
17 TMPFILE=`mktemp`
18
19 grep -q small /etc/grml_version 2>/dev/null && AUTOCONFIG=/etc/grml/autoconfig.small || AUTOCONFIG=/etc/grml/autoconfig
20
21 [ -r $AUTOCONFIG ] || exit 1
22
23 # helper functions
24 activate_value()
25 {
26   sed -i "s/$1.*/$1='yes'/" $AUTOCONFIG
27 }
28
29 deactivate_value()
30 {
31   sed -i "s/$1.*/$1='no'/" $AUTOCONFIG
32 }
33
34 check_setting()
35 {
36   grep -q $* $TMPFILE && return 0 || return 1
37 }
38
39 check_current_state()
40 {
41   grep -q '^CONFIG_DHCP=.*yes'     $AUTOCONFIG && DHCPSTATUS=ON     || DHCPSTATUS=OFF
42   grep -q '^CONFIG_ACPI_APM=.*yes' $AUTOCONFIG && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF
43   grep -q '^CONFIG_CPU=.*yes'      $AUTOCONFIG && CPUSTATUS=ON      || CPUSTATUS=OFF
44   grep -q '^CONFIG_SYSLOG=.*yes'   $AUTOCONFIG && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
45   grep -q '^CONFIG_GPM=.*yes'      $AUTOCONFIG && GPMSTATUS=ON      || GPMSTATUS=OFF
46   grep -q '^CONFIG_KERNEL=.*yes'   $AUTOCONFIG && KERNELSTATUS=ON   || KERNELSTATUS=OFF
47   grep -q '^CONFIG_FSTAB=.*yes'    $AUTOCONFIG && FSTABSTATUS=ON    || FSTABSTATUS=OFF
48   grep -q '^CONFIG_LANGUAGE=.*yes' $AUTOCONFIG && LANGUAGESTATUS=ON || LANGUAGESTATUS=OFF
49   grep -q '^CONFIG_DMA=.*yes'      $AUTOCONFIG && DMASTATUS=ON      || DMASTATUS=OFF
50   grep -q '^CONFIG_MIXER=.*yes'    $AUTOCONFIG && MIXERSTATUS=ON    || MIXERSTATUS=OFF
51 }
52
53 # main program
54 interface()
55 {
56   dialog --cr-wrap --clear --cancel-label "Exit" --title "$PN" --checklist "grml-autoconfig is the framework which includes hardware
57 detection, activation of system services and this is the
58 interface to activate or deactivate some features.
59
60 If you do not know what to do at this stage just leave it untouched,
61 the defaults are the recommended values.
62
63 All the configuration happens in the file /etc/grml/autoconfig - you can
64 edit it manually as well.
65 " 0 0 0 \
66 dhcp "check for network devices and run pump (get ip-address via DHCP)" $DHCPSTATUS \
67 acpi_apm "load ACPI/APM modules" $ACPI_APMSTATUS \
68 cpufreq "activate cpydyn/powernowd for frequency-scalable CPUs" $CPUSTATUS \
69 syslog "start syslog-ng" $SYSLOGSTATUS \
70 gpm "start GPM (mouse on console)" $GPMSTATUS \
71 kernel "display information on running kernel" $KERNELSTATUS \
72 fstab "update /etc/fstab entries (check for devices)" $FSTABSTATUS \
73 language "run loadkeys / consolechars" $LANGUAGESTATUS \
74 dma "enable DMA for all IDE drives" $DMASTATUS \
75 mixer "set audio volumes" $MIXERSTATUS \
76   2>$TMPFILE
77 }
78
79 set_values()
80 {
81   check_setting dhcp        && activate_value CONFIG_DHCP         || deactivate_value CONFIG_DHCP
82   check_setting acpi_apm    && activate_value CONFIG_ACPI_APM     || deactivate_value CONFIG_ACPI_APM
83   check_setting cpufreq     && activate_value CONFIG_CPU          || deactivate_value CONFIG_CPU
84   check_setting syslog      && activate_value CONFIG_SYSLOG       || deactivate_value CONFIG_SYSLOG
85   check_setting gpm         && activate_value CONFIG_GPM          || deactivate_value CONFIG_GPM
86   check_setting kernel      && activate_value CONFIG_KERNEL       || deactivate_value CONFIG_KERNEL
87   check_setting fstab       && activate_value CONFIG_FSTAB        || deactivate_value CONFIG_FSTAB
88   check_setting language    && activate_value CONFIG_LANGUAGE     || deactivate_value CONFIG_LANGUAGE
89   check_setting dma         && activate_value CONFIG_DMA          || deactivate_value CONFIG_DMA
90   check_setting mixer       && activate_value CONFIG_MIXER        || deactivate_value CONFIG_MIXER
91 }
92
93 # and now run it:
94   check_current_state
95   interface
96   retval=$?
97   case $retval in
98    0)
99     set_values && dialog --stdout --title "${PN}" --msgbox "Adjusting values via grml-autoconfig was successful!" 5 60 || \
100     dialog --stdout --title "${PN}" --msgbox "There was an error adjusting values via grml-autoconfig. Sorry." 5 60
101     rm -f $TMPFILE &>/dev/null
102     ;;
103    1)
104     echo "Exit pressed."
105     ;;
106    255)
107     echo "ESC pressed."
108     exit 1
109     ;;
110   esac
111
112 ## END OF FILE #################################################################