Support running scripts in bootoption "services" in foreground if they contain the...
[grml-autoconfig.git] / doc / grml-autoconfig.current.txt
1 Behavior in current Grml versions
2 ---------------------------------
3
4 This section applies to all Grml versions newer than release 2009.05.
5
6 The central concept of grml-autoconfig is the DCS directory which holds debs,
7 configuration and scripts which are used during system startup.
8
9 Determination of DCS directory
10 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11
12 The DCS directory defaults to the root directory of the GRML live image. If a
13 file system labeled GRMLCFG is found, the DCS directory is the root directory of
14 that file system. Alternatively, the myconfig boot parameter can be used to
15 directly specify a device which is then taken as DCS directory
16 (myconfig=/dev/sda1, for example). If your device is labeled different to
17 GRMLCFG the proper label can be set via the autoconfig boot parameter
18 (autoconfig=SOMELABEL, for example).
19
20 Without any additional boot parameters, the GCA at DCSDIR/config.tbz is
21 automatically unpacked and DCSDIR/scrips/grml.sh is automatically executed on
22 system startup. The 'noautoconfig' boot parameter disables this automatic
23 behavior.
24
25 Boot Parameters
26 ~~~~~~~~~~~~~~~
27
28 The following boot parameters are supported. Use them at the (isolinux)
29 bootprompt as documented here.
30
31 myconfig::
32
33    This parameter directly sets DCSDIR to the root directory of the specified
34    device. Usage examples:
35
36   myconfig=/dev/sda1                        => read DCS from usb-device
37   myconfig=/dev/fd0                         => read DCS from floppy-disk
38
39 autoconfig::
40
41    This parameter specifies the label used to determine the DCS device.
42    If undefined the label GRMLCFG is used to find the DCS device.
43
44   autoconfig=SOMELABEL      => search for device labeled SOMELABEL to use as
45                                DCS device.
46
47 home::
48
49     This parameter is for setting a specific partition as home directory.  Usage
50     examples:
51
52   home=/dev/sda3    =>  use /dev/sda3 as the homepartition
53   home=scan         =>  scan through the available partitions and search
54                         for file grml.img
55
56 partconf::
57
58     This parameter mounts the specified device in read-only mode and tries to
59     copy all files specified in /etc/grml/partconf to the Grml system. This
60     provides the possibility to use the configuration of a harddisk
61     installation. For example using the network configuration (which is
62     specified in /etc/network) is possible using this boot parameter. Usage
63     example:
64
65   partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
66                         in /etc/grml/partconf to the booted Grml system
67
68 netconfig::
69
70     Use this parameter to restore configuration using wget to download a GCA
71     from the specified destination. You can also add variables to change the
72     file name depending on the host configuration. Predefined and useful
73     variables are $ARCH, $HOSTNAME and $KERNEL. Usage example:
74
75   netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
76   netconfig=server.tld/config-$ARCH.tbz    =>   download config for specified architecture
77
78 netscript::
79     Use this parameter to download and run a script from specified destination:
80     You can also add variables to change the file name depending on the host
81     configuration. Predefined and useful variables are $ARCH, $HOSTNAME and
82     $KERNEL. The environment variable NETSCRIPT is set to the specified URI.
83     This can be used to detect if the script is executed via the netscript bootoption.
84     Usage example:
85
86   netcript=server.tld/path/to/script       =>   download and run script/executable from server
87   netscript=server.tld/script-$HOSTNAME    =>   download and run script/executable for specific host
88
89 extract::
90
91     Extract specific directories from the GCA which needs to be specified by
92     other means.
93
94   extract=/home/grml         => extract only /home/grml from archive
95   extract=/etc               => extract only /etc from archive
96   extract=/home/grml/config  => extract only $HOME/config from archive
97
98 scripts::
99
100     This parameter executes scripts. If an optional path is given, it is
101     relative to DCSDIR. If the path points to a file, this single file is
102     executed. If no path is given, it defaults to scripts/grml.sh.
103     If the given name points to a directory, all scripts inside it are
104     executed, but the run-parts name restrictions apply: script names must
105     consist entirely of upper and lower case letters, digits, underscores,
106     and hyphens. Usage examples:
107
108   scripts               =>   run script DCSDIR/scripts/grml.sh
109   scripts=foobar.sh     =>   run script foobar.sh in DCSDIR
110   scripts=foobar        =>   run all scripts inside DCSDIR/foobar directory
111
112 config::
113
114     This parameter restores a configuration using a GCA. If an optional path is
115     given, it is relative to DCSDIR. If no path is given, it defaults to
116     DCSDIR/config.tbz. Usage examples:
117
118   config                    =>   restore configuration using file DCSDIR/config.tbz
119   config=config_foobar.tbz  =>   restore configuration using file DCSDIR/config_foobar.tbz
120
121 debs::
122
123     This parameter allows automatic installation of deb packages while booting.
124     The path is relative to DCSDIR, not optional and is a shell wildcard. All
125     Files matching the wildcard are installed in a single dpkg --install call.
126     For backwards compatibility, if no slash is contained in the path, it is
127     taken relative to DCSDIR/debs.
128
129     Usage examples:
130
131   debs=*.deb        =>   install all debian packages (suffix .deb) from directory DCSDIR/debs/
132   debs=foo/01*.deb  =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo
133
134 debnet::
135
136     Search all local partitions and dm devices for file /etc/network/interfaces and
137     copy the directory /etc/network to the grml system and restart networking.
138
139 noautoconfig::
140
141     Deactivate automounting. By default the scripts try to mount a device with
142     label 'GRMLCFG'. If you specify the noautoconfig bootparam this automounting
143     will be deactivated.
144
145   noautoconfig            => disables auto mounting of label 'GRMLCFG'
146
147
148 Permanently adjust boot parameters
149 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
150
151 As you probably know you can adjust boot parameters on the bootprompt.  You want
152 to set some boot parameters permanently? That's possible via adding a directory
153 named 'bootparams' to the Grml ISO which has to be located at the root-directory
154 /bootparams/ (note: the directory is known as /live/image/bootparams/ on a
155 _running_ Grml system then). Place a textfile inside the directory containing
156 the boot parameters which should be appended to default ones (this corresponds
157 to booting without any special parameters).
158
159   mkdir bootparams
160   echo lang=de > bootparams/my_bootparams
161
162 Then burn a multisession CD where directory bootparams is located in the root
163 directory of the CD.
164
165 [NOTE]
166 Not all boot parameters can be used via /bootparams/. This is a limitation of
167 the way the kernel and userspace retrieve boot parameters. Boot parameter
168 regarding the kernel definitely do *NOT* work. Boot parameter related to
169 grml-autoconfig (the main part of the boot process in Grml running in userspace,
170 being all the stuff after startup of udev) are expected to work. Boot parameter
171 related to initrd/initramfs (the part between 'Searching for GRML file' and
172 startup of udev) are *NOT* covered by /bootparams/ as well yet.
173
174 TIP: the application k3b (not available on the live-CD but available through the
175 Debian repositories) provides an easy to use interface for doing the
176 multisession task.
177