Merge debian/changelog
authorMichael Prokop <mika@grml.org>
Mon, 21 Sep 2009 16:33:58 +0000 (18:33 +0200)
committerMichael Prokop <mika@grml.org>
Mon, 21 Sep 2009 16:33:58 +0000 (18:33 +0200)
14 files changed:
autoconfig
autoconfig.functions
autoconfig.local [new file with mode: 0644]
debian/changelog
debian/rules
doc/grml-autoconfig.1.txt
doc/grml-autoconfig.200905.txt [new file with mode: 0644]
doc/grml-autoconfig.8.txt
doc/grml-autoconfig.current.txt [new file with mode: 0644]
sbin/grml-autoconfig
tests/common_tests [new file with mode: 0644]
tests/run_tests.sh [new file with mode: 0755]
tests/test_bootparameters.sh [moved from tests/test_parameters.sh with 90% similarity]
tests/test_dcsdir.sh [new file with mode: 0755]

index 10ea222..2cfb247 100644 (file)
@@ -1,11 +1,17 @@
 # Filename:      /etc/grml/autoconfig
-# Purpose:       configuration for grml-autoconfig
+# Purpose:       global configuration for grml-autoconfig
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
 ################################################################################
 
 ################################################################################
+# Notice: Please do not edit this file! Use grml-autoconfig or
+# /etc/grml/autoconfig.local instead!
+################################################################################
+
+
+################################################################################
 # Notice: you can configure grml-autoconfig via adjusting the following values.
 # Set them to 'yes' to activate them and to 'no' to deactivate them.
 # But please notice that some options might require an additional bootparam
@@ -117,4 +123,12 @@ CONFIG_VMWARE='yes'           # vmware specific stuff (use xorg.conf.vmware)
 CONFIG_WELCOME='yes'          # play welcome sound (audio)
 CONFIG_WONDERSHAPER='yes'     # start wondershaper with options provided via bootparam
 CONFIG_XSTARTUP='yes'         # start X window system via grml-x [only in live-mode]
+
+
+# config for local configuration file
+
+CONFIG_AUTOCONFIG_LOCAL='/etc/grml/autoconfig.local'
+
+[ -e ${CONFIG_AUTOCONFIG_LOCAL} ] && . ${CONFIG_AUTOCONFIG_LOCAL}
+
 ## END OF FILE #################################################################
index b1f8933..c9e4ff5 100755 (executable)
@@ -10,6 +10,7 @@
 export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin"
 DEBUG="/dev/null"
 KERNEL="$(uname -r)"
+ARCH="$(uname -m)"
 umask 022
 
 # old linuxrc version:
@@ -1795,7 +1796,7 @@ config_services(){
 # {{{ remote files
 get_remote_file() {
   [ "$#" -eq 2 ] || ( echo "Error: wrong parameter for get_remote_file()" ; return 1 )
-  SOURCE="$1"
+  SOURCE=$(eval echo "$1")
   TARGET="$2"
   getconfig() {
   wget --timeout=10 --dns-timeout=10  --connect-timeout=10 --tries=1 \
diff --git a/autoconfig.local b/autoconfig.local
new file mode 100644 (file)
index 0000000..11ffbba
--- /dev/null
@@ -0,0 +1,6 @@
+# Filename:      /etc/grml/autoconfig.local
+# Purpose:       local configuration for grml-autoconfig
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+################################################################################
index 7ce84ee..9d1ff5b 100644 (file)
@@ -1,11 +1,14 @@
-grml-autoconfig (0.8.30) unstable; urgency=low
+grml-autoconfig (0.8.30) UNRELEASED; urgency=low
 
   [ Ulrich Dangel ]
-  * added new bootparameter netscript: introduced new bootoption
-    for downloading and running a executable from a remote host
-    [Closes: issue734]
-
- -- Michael Prokop <mika@grml.org>  Sat, 12 Sep 2009 09:44:30 +0200
+  * Introduced autconfig.local for local modifications
+    [Closes: issue326]
+  * Added ARCH as predefinded variable to autoconfig.functions
+  * Extended netconfig/netscript to expand variables in url.
+    Example: netscript=server/script-$ARCH.sh
+  * Added unittest for finddcsdir
+
+ -- Ulrich Dangel <mru@grml.org>  Sun, 13 Sep 2009 00:06:02 +0200
 
 grml-autoconfig (0.8.29) unstable; urgency=low
 
index 2026dce..834d890 100755 (executable)
@@ -13,7 +13,7 @@ build: build-stamp
 
 build-stamp:
        dh_testdir
-       (cd tests && ./test_parameters.sh)
+       (cd tests && ./run_tests.sh)
        (cd doc && $(MAKE))
 
        touch build-stamp
@@ -35,6 +35,7 @@ install: build
        # Add here commands to install the package into debian/grml-autoconfig.
        install -m 755 grml-autoconfig      debian/grml-autoconfig/etc/init.d/grml-autoconfig
        install -m 644 autoconfig           debian/grml-autoconfig/etc/grml/autoconfig
+       install -m 644 autoconfig.local     debian/grml-autoconfig/etc/grml/autoconfig.local
        install -m 755 autoconfig.functions debian/grml-autoconfig/etc/grml/autoconfig.functions
        install -m 644 language-functions   debian/grml-autoconfig/etc/grml/language-functions
        install -m 755 sbin/grml-autoconfig debian/grml-autoconfig/usr/sbin/grml-autoconfig
index 86c9c5c..e042f23 100644 (file)
@@ -52,244 +52,10 @@ to deal with this config framework. Visit
 link:http://wiki.grml.org/doku.php?id=persistency for further information.
 
 [[up-to-200905]]
-Behavior up to grml 2009.05
----------------------------
-
-This section applies to all Grml versions older than and including release 2009.05.
-
-Autoconfiguration
-~~~~~~~~~~~~~~~~~
-
-By default the booting process tries to mount a device labeled 'GRMLCFG'. This
-provides the possibility to restore a configuration (named config.tbz) and
-execute a script (named grml.sh) without the need to specify any bootparams. If
-you want to disable this feature please take a look at the 'noautoconfig'
-bootparam.
-
-Boot parameters
-~~~~~~~~~~~~~~~
-
-As you probably know you can adjust boot parameters on the bootprompt.  You want
-to set some boot parameters permanently? That's possible via adding a directory
-named 'bootparams' to the Grml-ISO which has to be located at the root-directory
-/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
-_running_ grml system then). Place a textfile inside the directory containing
-the boot parameters which should be appended to default ones (this corresponds
-to booting without any special parameters). If you want to be able to boot from
-your Grml-CD you have to create a multisession CD. See the <<X7,usage
-scenarios>> for more details how to use it or consider booting from a USB device
-(checkout grml2usb).
-
-The following boot parameters are supported. Use them at the (isolinux)
-bootprompt as documented here.
-
-myconfig::
-
-   This parameter is for restoring configuration using the file config.tbz
-    on the specified device. Usage examples:
-
-  myconfig=/dev/sda1                        => use file config.tbz from usb-device
-  myconfig=/dev/fd0                         => use file config.tbz from floppy-disk
-  myconfig=/dev/sda1 file=config_foobar.tbz => use file config_foobar.tbz from usb-device
-
-home::
-
-    This parameter is for setting a specific partition as home directory.
-    Usage examples:
-
-  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
-  home=scan         =>  scan through the available partitions and search
-                        for file grml.img
-
-partconf::
-
-    This parameter mounts the specified device in read-only mode and tries to
-    copy all files specified in /etc/grml/partconf to the Grml system. This
-    provides the possibility to use the configuration of a harddisk
-    installation. For example using the network configuration (which is
-    specified in /etc/network) is possible using this boot parameter. Usage
-    example:
-
-  partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
-                        in /etc/grml/partconf to the booted Grml system
-
-netconfig::
-
-    Use this parameter to restore configuration using wget to download a
-    configuration file from specified destination. Usage example:
-
-  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
-
-netscript::
-    Use this parameter to download and run a script from specified
-    destination: Usage example:
-
-  netcript=server.tld/path/to/script       =>   download and run script/executable from server
-
-extract::
-
-    Extract specific directories from configuration archive. Notice: This
-    bootparam is useful only with bootparams which are able to extract
-    configuration archives.
-
-  extract=/home/grml         => extract only /home/grml from archive
-  extract=/etc               => extract only /etc from archive
-  extract=/home/grml/config  => extract only $HOME/config from archive
-
-scripts::
-
-    This parameter executes a script located in the root-directory /scripts/ on
-    the Grml media/ISO (note: the directory is known as /live/image/scripts/ on
-    a _running_ Grml system then). Usage examples:
-
-  scripts               =>   run script [/live/image]/scripts/grml.sh
-  scripts=foobar.sh     =>   run script foobar.sh in [/live/image]/scripts/
-
-config::
-
-    This parameter restores a configuration using root-directory /config/ on the
-    Grml media/ISO (note: the directory is known as /live/image/config on a
-    _running_ Grml system then). Usage examples:
-
-  config                    =>   restore configuration using file config.tbz from directory [/live/image]/config/
-  config=config_foobar.tbz  =>   restore configuration using file config_foobar.tbz from directory [/live/image]/config/
-
-debs::
-
-    This parameter allows automatic installation of deb packages while booting.
-    The debian packages have to be located in the root-directory /debs/ on the
-    Grml media/ISO (note: the directory is known as /live/image/debs/ on a
-    _running_ Grml system then). Usage examples:
-
-  debs              =>   install all debian packages (suffix .deb) from directory [/live/image]/debs/
-  debs=01           =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory [/live/image]/debs/
-
-
-noautoconfig::
-
-    Deactivate automounting. By default the command 'mount' tries to mount a
-    device with label 'GRMLCFG'. If you specify the noautoconfig bootparam the
-    automounting will be deactivated.
-
-  noautoconfig            => disables auto mounting of label 'GRMLCFG'
+include::grml-autoconfig.200905.txt[]
 
 [[current-versions]]
-Behavior in current Grml versions
----------------------------------
-
-This section applies to all Grml versions newer than release 2009.05.
-
-The central concept of grml-autoconfig is the DCS directory which holds debs,
-configuration and scripts which are used during system startup.
-
-Determination of DCS directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The DCS directory defaults to the root directory of the GRML live image. If a
-file system labeled GRMLCFG is found, the DCS directory is the root directory of
-that file system. Alternatively, the myconfig boot parameter can be used to
-directly specify a device which is then taken as DCS directory
-(myconfig=/dev/sda1, for example).
-
-Without any additional boot parameters, the GCA at DCSDIR/config.tbz is
-automatically unpacked and DCSDIR/scrips/grml.sh is automaitcally executed on
-system startup. The 'noautoconfig' boot parameter disables this automatic
-behavior.
-
-Boot Parameters
-~~~~~~~~~~~~~~~
-
-The following boot parameters are supported. Use them at the (isolinux)
-bootprompt as documented here.
-
-myconfig::
-
-   This parameter directly sets DCSDIR to the root directory of the specified
-   device. Usage examples:
-
-  myconfig=/dev/sda1                        => read DCS from usb-device
-  myconfig=/dev/fd0                         => read DCS from floppy-disk
-
-home::
-
-    This parameter is for setting a specific partition as home directory.  Usage
-    examples:
-
-  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
-  home=scan         =>  scan through the available partitions and search
-                        for file grml.img
-
-partconf::
-
-    This parameter mounts the specified device in read-only mode and tries to
-    copy all files specified in /etc/grml/partconf to the Grml system. This
-    provides the possibility to use the configuration of a harddisk
-    installation. For example using the network configuration (which is
-    specified in /etc/network) is possible using this boot parameter. Usage
-    example:
-
-  partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
-                        in /etc/grml/partconf to the booted Grml system
-
-netconfig::
-
-    Use this parameter to restore configuration using wget to download a GCA
-    from the specified destination. Usage example:
-
-  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
-
-extract::
-
-    Extract specific directories from the GCA which needs to be specified by
-    other means.
-
-  extract=/home/grml         => extract only /home/grml from archive
-  extract=/etc               => extract only /etc from archive
-  extract=/home/grml/config  => extract only $HOME/config from archive
-
-scripts::
-
-    This parameter executes scripts. If an optional path is given, it is
-    relative to DCSDIR. If it points to a directory, all scripts inside this
-    directory are executed. If the path points to a file, this single file is
-    executed. If no path is given, it defaults to scripts/grml.sh. Usage
-    examples:
-
-  scripts               =>   run script DCSDIR/scripts/grml.sh
-  scripts=foobar.sh     =>   run script foobar.sh in DCSDIR
-  scripts=foobar        =>   run all scripts inside DCSDIR/foobar directory
-
-config::
-
-    This parameter restores a configuration using a GCA. If an optional path is
-    given, it is relative to DCSDIR. If no path is given, it defaults to
-    DCSDIR/config.tbz. Usage examples:
-
-  config                    =>   restore configuration using file DCSDIR/config.tbz
-  config=config_foobar.tbz  =>   restore configuration using file DCSDIR/config_foobar.tbz
-
-debs::
-
-    This parameter allows automatic installation of deb packages while booting.
-    The path is relative to DCSDIR, not optional and is a shell wildcard. All
-    Files matching the wildcard are installed in a single dpkg --install call.
-    For backwards compatibility, if no slash is contained in the path, it is
-    taken relative to DCSDIR/debs.
-
-    Usage examples:
-
-  debs=*.deb        =>   install all debian packages (suffix .deb) from directory DCSDIR/debs/
-  debs=foo/01*.deb  =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo
-
-
-noautoconfig::
-
-    Deactivate automounting. By default the scripts try to mount a device with
-    label 'GRMLCFG'. If you specify the noautoconfig bootparam this automounting
-    will be deactivated.
-
-  noautoconfig            => disables auto mounting of label 'GRMLCFG'
-
+include::grml-autoconfig.current.txt[]
 
 Permanently adjust boot parameters
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/grml-autoconfig.200905.txt b/doc/grml-autoconfig.200905.txt
new file mode 100644 (file)
index 0000000..453a928
--- /dev/null
@@ -0,0 +1,116 @@
+Behavior up to grml 2009.05
+---------------------------
+
+This section applies to all Grml versions older than and including release 2009.05.
+
+Autoconfiguration
+~~~~~~~~~~~~~~~~~
+
+By default the booting process tries to mount a device labeled 'GRMLCFG'. This
+provides the possibility to restore a configuration (named config.tbz) and
+execute a script (named grml.sh) without the need to specify any bootparams. If
+you want to disable this feature please take a look at the 'noautoconfig'
+bootparam.
+
+Boot parameters
+~~~~~~~~~~~~~~~
+
+As you probably know you can adjust boot parameters on the bootprompt.  You want
+to set some boot parameters permanently? That's possible via adding a directory
+named 'bootparams' to the Grml-ISO which has to be located at the root-directory
+/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
+_running_ grml system then). Place a textfile inside the directory containing
+the boot parameters which should be appended to default ones (this corresponds
+to booting without any special parameters). If you want to be able to boot from
+your Grml-CD you have to create a multisession CD. See the <<X7,usage
+scenarios>> for more details how to use it or consider booting from a USB device
+(checkout grml2usb).
+
+The following boot parameters are supported. Use them at the (isolinux)
+bootprompt as documented here.
+
+myconfig::
+
+   This parameter is for restoring configuration using the file config.tbz
+    on the specified device. Usage examples:
+
+  myconfig=/dev/sda1                        => use file config.tbz from usb-device
+  myconfig=/dev/fd0                         => use file config.tbz from floppy-disk
+  myconfig=/dev/sda1 file=config_foobar.tbz => use file config_foobar.tbz from usb-device
+
+home::
+
+    This parameter is for setting a specific partition as home directory.
+    Usage examples:
+
+  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
+  home=scan         =>  scan through the available partitions and search
+                        for file grml.img
+
+partconf::
+
+    This parameter mounts the specified device in read-only mode and tries to
+    copy all files specified in /etc/grml/partconf to the Grml system. This
+    provides the possibility to use the configuration of a harddisk
+    installation. For example using the network configuration (which is
+    specified in /etc/network) is possible using this boot parameter. Usage
+    example:
+
+  partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
+                        in /etc/grml/partconf to the booted Grml system
+
+netconfig::
+
+    Use this parameter to restore configuration using wget to download a
+    configuration file from specified destination. Usage example:
+
+  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
+
+extract::
+
+    Extract specific directories from configuration archive. Notice: This
+    bootparam is useful only with bootparams which are able to extract
+    configuration archives.
+
+  extract=/home/grml         => extract only /home/grml from archive
+  extract=/etc               => extract only /etc from archive
+  extract=/home/grml/config  => extract only $HOME/config from archive
+
+scripts::
+
+    This parameter executes a script located in the root-directory /scripts/ on
+    the Grml media/ISO (note: the directory is known as /live/image/scripts/ on
+    a _running_ Grml system then). Usage examples:
+
+  scripts               =>   run script [/live/image]/scripts/grml.sh
+  scripts=foobar.sh     =>   run script foobar.sh in [/live/image]/scripts/
+
+config::
+
+    This parameter restores a configuration using root-directory /config/ on the
+    Grml media/ISO (note: the directory is known as /live/image/config on a
+    _running_ Grml system then). Usage examples:
+
+  config                    =>   restore configuration using file config.tbz from directory [/live/image]/config/
+  config=config_foobar.tbz  =>   restore configuration using file config_foobar.tbz from directory [/live/image]/config/
+
+debs::
+
+    This parameter allows automatic installation of deb packages while booting.
+    The debian packages have to be located in the root-directory /debs/ on the
+    Grml media/ISO (note: the directory is known as /live/image/debs/ on a
+    _running_ Grml system then). Usage examples:
+
+  debs              =>   install all debian packages (suffix .deb) from directory [/live/image]/debs/
+  debs=01           =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory [/live/image]/debs/
+
+
+noautoconfig::
+
+    Deactivate automounting. By default the command 'mount' tries to mount a
+    device with label 'GRMLCFG'. If you specify the noautoconfig bootparam the
+    automounting will be deactivated.
+
+  noautoconfig            => disables auto mounting of label 'GRMLCFG'
+
+
index ef53e16..9a582a6 100644 (file)
@@ -61,10 +61,15 @@ Dialog interface to the configuration file /etc/grml/autoconfig.
 
   */etc/grml/autoconfig*::
 
-Configuration file for grml-autoconfig framework. You can either edit this
-configuration file manually of use the dialog interface
+Default configuration file for grml-autoconfig framework.  You can override
+settings via /etc/grml/autoconfig.local or use the dialog interface
 /usr/sbin/grml-autoconfig.
 
+  */etc/grml/autoconfig.local*::
+User specific configuration file for grml-autoconfig. You can edit it directly
+or use the dialog interface /usr/sbin/grml-autoconfig.
+
+
   */etc/grml/autoconfig.functions*::
 
 Main functions of the grml-autoconfig. You do not need to configure or execute
diff --git a/doc/grml-autoconfig.current.txt b/doc/grml-autoconfig.current.txt
new file mode 100644 (file)
index 0000000..3266839
--- /dev/null
@@ -0,0 +1,159 @@
+Behavior in current Grml versions
+---------------------------------
+
+This section applies to all Grml versions newer than release 2009.05.
+
+The central concept of grml-autoconfig is the DCS directory which holds debs,
+configuration and scripts which are used during system startup.
+
+Determination of DCS directory
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The DCS directory defaults to the root directory of the GRML live image. If a
+file system labeled GRMLCFG is found, the DCS directory is the root directory of
+that file system. Alternatively, the myconfig boot parameter can be used to
+directly specify a device which is then taken as DCS directory
+(myconfig=/dev/sda1, for example).
+
+Without any additional boot parameters, the GCA at DCSDIR/config.tbz is
+automatically unpacked and DCSDIR/scrips/grml.sh is automaitcally executed on
+system startup. The 'noautoconfig' boot parameter disables this automatic
+behavior.
+
+Boot Parameters
+~~~~~~~~~~~~~~~
+
+The following boot parameters are supported. Use them at the (isolinux)
+bootprompt as documented here.
+
+myconfig::
+
+   This parameter directly sets DCSDIR to the root directory of the specified
+   device. Usage examples:
+
+  myconfig=/dev/sda1                        => read DCS from usb-device
+  myconfig=/dev/fd0                         => read DCS from floppy-disk
+
+home::
+
+    This parameter is for setting a specific partition as home directory.  Usage
+    examples:
+
+  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
+  home=scan         =>  scan through the available partitions and search
+                        for file grml.img
+
+partconf::
+
+    This parameter mounts the specified device in read-only mode and tries to
+    copy all files specified in /etc/grml/partconf to the Grml system. This
+    provides the possibility to use the configuration of a harddisk
+    installation. For example using the network configuration (which is
+    specified in /etc/network) is possible using this boot parameter. Usage
+    example:
+
+  partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
+                        in /etc/grml/partconf to the booted Grml system
+
+netconfig::
+
+    Use this parameter to restore configuration using wget to download a GCA
+    from the specified destination. You can also add variables to change the
+    file name depending on the host configuration. Predefined and useful
+    variables are $ARCH, $HOSTNAME and $KERNEL. Usage example:
+
+  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
+  netconfig=server.tld/config-$ARCH.tbz    =>   download config for specified architecture
+
+netscript::
+    Use this parameter to download and run a script from specified destination:
+    You can also add variables to change the file name depending on the host
+    configuration. Predefined and useful variables are $ARCH, $HOSTNAME and
+    $KERNEL. Usage example:
+
+  netcript=server.tld/path/to/script       =>   download and run script/executable from server
+  netscript=server.tld/script-$HOSTNAME    =>   download and run script/executable for specific host
+
+extract::
+
+    Extract specific directories from the GCA which needs to be specified by
+    other means.
+
+  extract=/home/grml         => extract only /home/grml from archive
+  extract=/etc               => extract only /etc from archive
+  extract=/home/grml/config  => extract only $HOME/config from archive
+
+scripts::
+
+    This parameter executes scripts. If an optional path is given, it is
+    relative to DCSDIR. If it points to a directory, all scripts inside this
+    directory are executed. If the path points to a file, this single file is
+    executed. If no path is given, it defaults to scripts/grml.sh. Usage
+    examples:
+
+  scripts               =>   run script DCSDIR/scripts/grml.sh
+  scripts=foobar.sh     =>   run script foobar.sh in DCSDIR
+  scripts=foobar        =>   run all scripts inside DCSDIR/foobar directory
+
+config::
+
+    This parameter restores a configuration using a GCA. If an optional path is
+    given, it is relative to DCSDIR. If no path is given, it defaults to
+    DCSDIR/config.tbz. Usage examples:
+
+  config                    =>   restore configuration using file DCSDIR/config.tbz
+  config=config_foobar.tbz  =>   restore configuration using file DCSDIR/config_foobar.tbz
+
+debs::
+
+    This parameter allows automatic installation of deb packages while booting.
+    The path is relative to DCSDIR, not optional and is a shell wildcard. All
+    Files matching the wildcard are installed in a single dpkg --install call.
+    For backwards compatibility, if no slash is contained in the path, it is
+    taken relative to DCSDIR/debs.
+
+    Usage examples:
+
+  debs=*.deb        =>   install all debian packages (suffix .deb) from directory DCSDIR/debs/
+  debs=foo/01*.deb  =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo
+
+
+noautoconfig::
+
+    Deactivate automounting. By default the scripts try to mount a device with
+    label 'GRMLCFG'. If you specify the noautoconfig bootparam this automounting
+    will be deactivated.
+
+  noautoconfig            => disables auto mounting of label 'GRMLCFG'
+
+
+Permanently adjust boot parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As you probably know you can adjust boot parameters on the bootprompt.  You want
+to set some boot parameters permanently? That's possible via adding a directory
+named 'bootparams' to the Grml ISO which has to be located at the root-directory
+/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
+_running_ Grml system then). Place a textfile inside the directory containing
+the boot parameters which should be appended to default ones (this corresponds
+to booting without any special parameters).
+
+  mkdir bootparams
+  echo lang=de > bootparams/my_bootparams
+
+Then burn a multisession CD where directory bootparams is located in the root
+directory of the CD.
+
+[NOTE]
+Not all boot parameters can be used via /bootparams/. This is a limitation of
+the way the kernel and userspace retrieve boot parameters. Boot parameter
+regarding the kernel definitely do *NOT* work. Boot parameter related to
+grml-autoconfig (the main part of the boot process in Grml running in userspace,
+being all the stuff after startup of udev) are expected to work. Boot parameter
+related to initrd/initramfs (the part between 'Searching for GRML file' and
+startup of udev) are *NOT* covered by /bootparams/ as well yet.
+
+TIP: the application k3b (not available on the live-CD but available through the
+Debian repositories) provides an easy to use interface for doing the
+multisession task.
+
index 0abc8f8..9806ac3 100755 (executable)
@@ -18,15 +18,19 @@ TMPFILE="$(mktemp)"
 AUTOCONFIG=/etc/grml/autoconfig
 [ -r $AUTOCONFIG ] || exit 1
 
+. $AUTOCONFIG
+
 # helper functions
 activate_value()
 {
-  sed -i "s/$1.*/$1'yes'/" $AUTOCONFIG
+  check_entry $1
+  sed -i "s/$1.*/$1'yes'/" ${CONFIG_AUTOCONFIG_LOCAL}
 }
 
 deactivate_value()
 {
-  sed -i "s/$1.*/$1'no'/" $AUTOCONFIG
+  check_entry $1
+  sed -i "s/$1.*/$1'no'/" ${CONFIG_AUTOCONFIG_LOCAL}
 }
 
 check_setting()
@@ -34,17 +38,28 @@ check_setting()
   grep -q $* $TMPFILE && return 0 || return 1
 }
 
+check_entry()
+{
+  if ! grep -q ${1} ${CONFIG_AUTOCONFIG_LOCAL} 2>/dev/null ; then
+    grep $1 ${AUTOCONFIG} >> ${CONFIG_AUTOCONFIG_LOCAL}
+  fi
+}
+
+is_set()
+{
+    [ $1 = 'yes' ] && return 0 || return 1
+}
 check_current_state()
 {
-  grep -q '^CONFIG_DHCP=.*yes'     $AUTOCONFIG && DHCPSTATUS=ON     || DHCPSTATUS=OFF
+  is_set $CONFIG_DHCP       && DHCPSTATUS=ON     || DHCPSTATUS=OFF
   if [ "$(grep '^auto' /etc/network/interfaces | sed 's/ lo// ; s/auto// ; s/ //g')" != "" ] ; then
      DHCPSTATUS=OFF
   fi
-  grep -q '^CONFIG_FSTAB=.*yes'    $AUTOCONFIG && FSTABSTATUS=ON    || FSTABSTATUS=OFF
-  grep -q '^CONFIG_CPU=.*yes'      $AUTOCONFIG && CPUSTATUS=ON      || CPUSTATUS=OFF
-  grep -q '^CONFIG_ACPI_APM=.*yes' $AUTOCONFIG && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF
-  grep -q '^CONFIG_SYSLOG=.*yes'   $AUTOCONFIG && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
-  grep -q '^CONFIG_GPM=.*yes'      $AUTOCONFIG && GPMSTATUS=ON      || GPMSTATUS=OFF
+  is_set $CONFIG_FSTAB      && FSTABSTATUS=ON    || FSTABSTATUS=OFF
+  is_set $CONFIG_CPU        && CPUSTATUS=ON      || CPUSTATUS=OFF
+  is_set $CONFIG_ACPI_APM   && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF
+  is_set $CONFIG_SYSLOG     && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
+  is_set $CONFIG_GPM        && GPMSTATUS=ON      || GPMSTATUS=OFF
 }
 
 # main program
@@ -57,7 +72,7 @@ interface to activate or deactivate some features.
 If you do not know what to do at this stage just leave it untouched,
 the defaults are the recommended values.
 
-All the configuration happens in the file /etc/grml/autoconfig - you can
+All the configuration happens in the file /etc/grml/autoconfig.local - you can
 edit it manually as well.
 " 0 0 0 \
 dhcp "check for network devices and run pump (get ip-address via DHCP)" $DHCPSTATUS \
diff --git a/tests/common_tests b/tests/common_tests
new file mode 100644 (file)
index 0000000..576b7fc
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/zsh
+
+setopt shwordsplit
+
+oneTimeSetUp() {
+    OLDPATH=$PATH
+
+    . ../autoconfig.functions
+
+    export PATH=$OLDPATH
+}
+
+
+SHUNIT_PARENT=$1
+. ./shunit2
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100755 (executable)
index 0000000..46c4645
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/zsh
+# Filename:      run_tests
+# Purpose:       run unit tests for grml-autoconfig
+# Authors:       grml-team (grml.org), (c) Ulrich Dangel <mru@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+################################################################################
+
+
+GLOBRETVAL=0
+
+for FILE in test_*.sh ; do
+  if [ -x ${FILE} ] ; then
+     pretty_name="${FILE##test_}"
+     pretty_name="${pretty_name/.sh/}"
+
+     echo "Running test for: ${pretty_name}"
+
+     ./${FILE}
+     RETVAL=$?
+
+     [ "$RETVAL" -ne 0 ] && GLOBRETVAL=$RETVAL
+  fi
+done
+
+exit $GLOBRETVAL
+
+## END OF FILE #################################################################
+# vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3
similarity index 90%
rename from tests/test_parameters.sh
rename to tests/test_bootparameters.sh
index 5d08f8a..7e61c86 100755 (executable)
@@ -1,6 +1,5 @@
 #!/bin/zsh
 
-setopt shwordsplit
 
 test_checkbootparam() {
     CMDLINE='foo=dingens bar foobar=blub'
@@ -51,14 +50,4 @@ test_getbootparam() {
 }
 
 
-oneTimeSetUp() {
-    OLDPATH=$PATH
-
-    . ../autoconfig.functions
-
-    export PATH=$OLDPATH
-}
-
-SHUNIT_PARENT=$0
-
-. ./shunit2
+. ./common_tests $0
diff --git a/tests/test_dcsdir.sh b/tests/test_dcsdir.sh
new file mode 100755 (executable)
index 0000000..0f012e8
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/zsh
+
+
+test_finddcsdir() {
+    CMDLINE=''
+    INSTALLED=''
+
+    EXPECTED_PATH='/live/image'
+
+    config_finddcsdir &>/dev/null
+
+    assertEquals 'dcsdir is wrong' ${EXPECTED_PATH} ${DCSDIR}
+
+}
+
+. ./common_tests $0