Support tohd=... bootoption
[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: Sam Jän 19 23:02:56 CET 2008 [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 if grep -q small /etc/grml_version 2>/dev/null ; then
20    AUTOCONFIG=/etc/grml/autoconfig.small
21 else
22    AUTOCONFIG=/etc/grml/autoconfig
23 fi
24
25 [ -r $AUTOCONFIG ] || exit 1
26
27 # helper functions
28 activate_value()
29 {
30   sed -i "s/$1.*/$1'yes'/" $AUTOCONFIG
31 }
32
33 deactivate_value()
34 {
35   sed -i "s/$1.*/$1'no'/" $AUTOCONFIG
36 }
37
38 check_setting()
39 {
40   grep -q $* $TMPFILE && return 0 || return 1
41 }
42
43 check_current_state()
44 {
45   grep -q '^CONFIG_DHCP=.*yes'     $AUTOCONFIG && DHCPSTATUS=ON     || DHCPSTATUS=OFF
46   if [ "$(grep '^auto' /etc/network/interfaces | sed 's/ lo// ; s/auto// ; s/ //g')" != "" ] ; then
47      DHCPSTATUS=OFF
48   fi
49   grep -q '^CONFIG_FSTAB=.*yes'    $AUTOCONFIG && FSTABSTATUS=ON    || FSTABSTATUS=OFF
50   grep -q '^CONFIG_CPU=.*yes'      $AUTOCONFIG && CPUSTATUS=ON      || CPUSTATUS=OFF
51   grep -q '^CONFIG_ACPI_APM=.*yes' $AUTOCONFIG && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF
52   grep -q '^CONFIG_SYSLOG=.*yes'   $AUTOCONFIG && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
53   grep -q '^CONFIG_GPM=.*yes'      $AUTOCONFIG && GPMSTATUS=ON      || GPMSTATUS=OFF
54 }
55
56 # main program
57 interface()
58 {
59   dialog --cr-wrap --clear --cancel-label "Exit" --title "$PN" --checklist "grml-autoconfig is the framework which includes hardware
60 detection, activation of system services and this is the
61 interface to activate or deactivate some features.
62
63 If you do not know what to do at this stage just leave it untouched,
64 the defaults are the recommended values.
65
66 All the configuration happens in the file /etc/grml/autoconfig - you can
67 edit it manually as well.
68 " 0 0 0 \
69 dhcp "check for network devices and run pump (get ip-address via DHCP)" $DHCPSTATUS \
70 fstab "update /etc/fstab entries (check for devices)" $FSTABSTATUS \
71 cpufreq "activate cpydyn/powernowd for frequency-scalable CPUs" $CPUSTATUS \
72 acpi_apm "load ACPI/APM modules" $ACPI_APMSTATUS \
73 syslog "start syslog-ng" $SYSLOGSTATUS \
74 gpm "start GPM (mouse on console)" $GPMSTATUS \
75   2>$TMPFILE
76 }
77
78 set_values()
79 {
80   check_setting dhcp      && activate_value CONFIG_DHCP=     || deactivate_value CONFIG_DHCP=
81   check_setting fstab     && activate_value CONFIG_FSTAB=    || deactivate_value CONFIG_FSTAB=
82   check_setting cpufreq   && activate_value CONFIG_CPU=      || deactivate_value CONFIG_CPU=
83   check_setting acpi_apm  && activate_value CONFIG_ACPI_APM= || deactivate_value CONFIG_ACPI_APM=
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 }
87
88 # and now run it:
89   check_current_state
90   interface
91   retval=$?
92   case $retval in
93    0)
94     set_values && dialog --stdout --title "${PN}" --msgbox "Adjusting values via grml-autoconfig was successful!" 5 60 || \
95     dialog --stdout --title "${PN}" --msgbox "There was an error adjusting values via grml-autoconfig. Sorry." 5 60
96     rm -f $TMPFILE &>/dev/null
97     ;;
98    1)
99     echo "Exit pressed."
100     ;;
101    255)
102     echo "ESC pressed."
103     exit 1
104     ;;
105   esac
106
107 ## END OF FILE #################################################################