retrieve source packages via grml-live using SOURCES class
[grml-live.git] / docs / grml-live.txt
1 grml-live(8)
2 ============
3
4 Name
5 ----
6
7 grml-live - build framework based on FAI for generating a grml and Debian based
8 Linux Live system (CD/ISO)
9
10 Synopsis
11 --------
12
13 grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [-g
14 <grml_name>] [-i <iso_name> ] [-o <output_directory>] [-r <release_name>] [-s
15 <suite>] [-t <template_directory>] [-v <version_number>] [-U <username>] [
16 -AbBFnNquVz]
17
18 CAUTION: Please check out <<current_state,the 'Current state of grml-live with
19 squashfs-tools and kernel' section>> for details about current state of involved
20 tools before starting with grml-live or if you encounter any problems.
21
22 Description
23 -----------
24
25 grml-live provides the build system for creating a grml and Debian based Linux
26 Live-CD. The build system is based on
27 link:http://fai-project.org/[FAI] (Fully Automatic
28 Installation). grml-live uses the "fai dirinstall" feature to generate a chroot
29 system based on the class concept of FAI (see later sections for further
30 details) and provides the framework to be able to generate a full-featured ISO.
31 It does not use all the FAI features by default though and you don't have to
32 know FAI to be able to use it.
33
34 The use of FAI gives you the flexibility to choose the packages you would like
35 to include on your very own Linux Live-CD without having to deal with all the
36 details of a build process.
37
38 CAUTION: grml-live does **not** use /etc/fai for configuration but instead
39 provides and uses ${GRML_FAI_CONFIG} which is pointing to /etc/grml/fai by default
40 (unless overriden using the ''-D'' option). This ensures that it does not clash
41 with default FAI configuration and packages, so you can use grml-live and FAI
42 completely independent at the same time!
43
44 [NOTE]
45
46 Please notice that you should have a fast network connection as all the Debian
47 packages will be downloaded and installed via network. If you want to use a
48 local mirror (strongly recommended if you plan to use grml-live more than once)
49 checkout mkdebmirror (see /usr/share/doc/grml-live/examples/mkdebmirror),
50 debmirror(1), reprepro(1) (see /usr/share/doc/grml-live/examples/reprepro/ for a
51 sample configuration), apt-cacher(1) and approx(8). To avoid downloading the
52 base system again and again check out FAI's NFSROOT (see FAQ of this document
53 for details).
54
55 Options
56 -------
57
58   -A::
59
60 Clean up output directories before attempting the build. Packs the chroot
61 into a tar archive, and removes chroot and iso build directories before exiting.
62
63   -a **ARCHITECTURE**::
64
65 Use the specified architecture instead of the currently running one.  This
66 allows building a 32bit system on a 64bit host (though you can't build a 64bit
67 system on a 32bit system/kernel of course). Please notice that real
68 crosscompiling (like building a ppc system on x86) isn't possible due to the
69 nature and the need of working in a chroot. Currently supported values: i386
70 and amd64.
71
72   -b::
73
74 Build the ISO without updating the chroot via FAI. This option is useful for
75 example when working on stable releases: if you have a working base
76 system/chroot and do not want to execute any further updates (via "-u" option)
77 but intend to only build the ISO.
78
79   -B::
80
81 Build the ISO without touching the chroot at all. This option is useful if
82 you modified anything that FAI or grml-live might adjust via grml's FAI
83 scripts.  It's like the '-b' option but even more advanced. Use only if you
84 really know that you do not want to update the chroot.
85
86   -c **CLASSES**::
87
88 Specify the CLASSES to be used for building the ISO via FAI.  By default only
89 the classes GRMLBASE, GRML_MEDIUM and I386 are assumed, resulting in a small base
90 system (being about ~180MB total ISO size). If using a non-I386 system (like
91 AMD64) you should specify the appropriate architecture as well. Additionally you
92 can specify a class providing a grml-kernel (see
93 <<classes,the 'CLASSES' section in this document>> for details about available classes).
94 So instead of GRML_MEDIUM you can also use GRML_SMALL and GRML_FULL.
95
96 [IMPORTANT]
97 All class names should be written in uppercase letters. Do not use a dash, use
98 an underscore. So do not use "amd64" but "AMD64", do not use "FOO BAR" but
99 "FOO_BAR".
100
101
102   -C **CONFIGURATION_FILE**::
103
104 The specified file is used as configuration file for grml-live. By default
105 /etc/grml/grml-live.conf is used as default configuration. If a file named
106 /etc/grml/grml-live.local exists it is used as well (sourced after reading
107 /etc/grml/grml-live.conf meant as main file for local configuration). As a last
108 option the specified configuration file is sourced so it is possible to override
109 settings of /etc/grml/grml-live.conf as well as of /etc/grml/grml-live.local.
110 Please notice that all configuration files have to be adjusted during execution
111 of grml-live, so please make sure you use /etc/grml/grml-live.conf as a base for
112 your own configuration file (usually /etc/grml/grml-live.local). Please also
113 notice that the configuration file specified via this option is **not** (yet)
114 supported inside the scripts/hooks/classes at ${GRML_FAI_CONFIG}/config. Instead use
115 /etc/grml/grml-live.local for configuration stuff used inside
116 ${GRML_FAI_CONFIG}/config.
117
118   -d **DATE**::
119
120 Use specified date as build date information on the ISO instead of the default.
121 The default is the date when grml-live is being executed (retrieved via
122 executing 'date +%Y-%m-%d'). The information is stored inside the file
123 /GRML/grml-version on the ISO, /etc/grml_version in the squashfs file and in all
124 the bootsplash related files. This option is useful if you want to provide an
125 ISO with release information for a specific date but have to build it in
126 advance. Usage example: '-d 2009-10-30'
127
128   -D **CONFIGURATION_DIRECTORY**::
129
130 The specified directory is used as configuration directory for grml-live and its
131 FAI. By default /etc/grml/fai is used as default configuration directory.  If
132 you want to have different configuration scripts, package definitions, etc. with
133 without messing with the global configuration under /etc/grml/fai provided by
134 grml-live this option provides you the option to use your own configuration
135 directory. This directory is what's being referred to as ${GRML_FAI_CONFIG}
136 throughout this documentation.
137
138   -F::
139
140 Force execution and do not prompt for acknowledgment of configuration.
141
142   -g **GRML_NAME**::
143
144 Set the grml flavour name. Common usage examples: grml, grml-small, grml64.
145 Please do NOT use blanks and any special characters like '/', ';' inside
146 GRML_NAME, otherwise you might notice problems while booting.
147
148   -h::
149
150 Display short usage information and exit.
151
152   -i **ISO_NAME**::
153
154 Specify name of ISO which will be available inside $OUTPUT_DIRECTORY/grml_isos
155 by default.
156
157   -I **CHROOT_INSTALL**::
158
159 Specify name of source directory which provides files that should become part of
160 the chroot/ISO. Not enabled by default. Note: the files are installed under '/'
161 in the chroot so you have to create the rootfs structure on your own.
162
163   -n::
164
165 Skip creation of the ISO file. This option is useful if you want to build/update
166 the chroot and/or recreate the squashfs file without building an ISO file.
167
168   -N::
169
170 Bootstrap the chroot without building bootloader, squashfs, or finalizing the
171 ISO. Use this option if installation of some packages fails, you want to run
172 custom commands or similar.
173 The main use of this option is to save time by skipping stages which aren't
174 necessary for bootstrapping the chroot and which would get executed more than
175 once when iterating through the initial bootstrapping.
176 Alternatively, use this option as a test run of grml-live. Once you are
177 satisfied with the state of your grml_chroot, use grml-live **-u** to build the
178 remaining stages and finalize the ISO.
179
180   -o **OUTPUT_DIRECTORY**::
181
182 Main output directory of the build process of FAI.  Some directories are created
183 inside this target directory, being: grml_cd (where the files for creating the
184 ISO are located, including the compressed squashfs file), grml_chroot (the
185 chroot system) and grml_isos (where the resulting ISO is stored).
186
187   -q::
188
189 Build the ISO without (re-)creating the squashfs compressed file using mksquashfs.
190 This option is useful if you just want to update parts outside the chroot in the ISO.
191 Consider combining this option with the build-only option '-b'.
192
193   -r **RELEASENAME**::
194
195 Specify name of the release.
196
197   -s **SUITE**::
198
199 Specify the Debian suite you want to use for your live-system.  Defaults to
200 "squeeze" (being current Debian/stable). Supported values are: etch, lenny,
201 squeeze, sid. Debian "squeeze" requires a recent base.tgz
202 (${GRML_FAI_CONFIG}/config/basefiles/$CLASSNAME.tar.gz) or a recent version of
203 debootstrap.
204
205   -t **TEMPLATE_DIRECTORY**::
206
207 Specify place of the templates used for building the ISO. By default
208 (and if not manually specified) this is /usr/share/grml-live/templates/.
209
210   -u::
211
212 Update existing chroot instead of rebuilding it from scratch. This option is
213 based on the softupdate feature of FAI.
214
215   -U **USERNAME**::
216
217 Sets ownership of all build output files to specified username before exiting.
218
219   -v **VERSION_NUMBER**::
220
221 Specify version number of the release.
222
223   -V::
224
225 Increase verbosity in the build process.
226
227   -z::
228
229 Use ZLIB instead of LZMA/XZ compression in mksquashfs part of the build process.
230
231 [[usage-examples]]
232 Usage examples
233 --------------
234
235 To get a small, Debian-stable and grml-based Live-CD using /grml/grml-live
236 as build and output directory just run:
237
238   # grml-live
239
240 To get a small Debian-unstable and grml-small based Live-CD using
241 /home/mika/grml-live as build and output directory just use:
242
243   # grml-live -s sid -c GRMLBASE,GRML_SMALL,I386 -o /home/mika/grml-live
244
245 To get a medium sized, Debian-unstable and grml-based Live-CD for i386
246 architecture using /grml/grml-live as build and output directory just run:
247
248   # grml-live -s sid -a i386 -c GRMLBASE,GRML_MEDIUM,I386
249
250 To get a small, Debian-unstable and grml-based Live-CD using /tmp as build and
251 output directory and use grml_0.0-3.iso as ISO name (placed inside
252 /tmp/grml_isos) just invoke:
253
254   # grml-live -o /tmp -c GRMLBASE,GRML_SMALL,I386 -s sid -i grml_0.0-3.iso
255
256 [NOTE]
257
258 If you have about 700MB of free space inside /dev/shm (being a tmpfs, usually
259 you should have >=1GB of RAM) just run "mount -o remount,suid,dev,rw /dev/shm"
260 and use /dev/shm as build and output directory - resulting in very fast build
261 process.  But please be aware of the fact that rebooting your system will result
262 in an empty /dev/shm, so please use another directory for $CHROOT_OUTPUT,
263 $BUILD_OUTPUT and $ISO_OUTPUT if you plan to create more persistent output. :)
264
265 [[main-features]]
266 Main features of grml-live
267 --------------------------
268
269 * create a grml-/Debian-based Linux Live-CD with one single command
270
271 * class based concept, providing a maximum of flexibility
272
273 * supports integration of own hooks, scripts and configuration
274
275 * supports use and integration of own Software and/or Kernels via simple use of
276 Debian repositories
277
278 * native support of FAI features
279
280 * multi-arch support (work in progress)
281
282 [[class-concept]]
283 The class concept
284 -----------------
285
286 grml-live uses FAI and its class based concept for adjusting configuration and
287 setup according to your needs. This gives you flexibility and strength without
288 losing the simplicity in the build process.
289
290 The main and base class provided by grml-live is named GRMLBASE. It's strongly
291 recommended to **always** use the class GRMLBASE when building an ISO using
292 grml-live, as well as the architecture dependent class which provides the kernel
293 (being 'I386' for x86_32 and 'AMD64' for x86_64) and a GRML_* class (like
294 GRML_SMALL, GRML_MEDIUM or GRML_FULL). The following files and directories are
295 relevant for class GRMLBASE by default:
296
297   ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/
298   ${GRML_FAI_CONFIG}/config/debconf/GRMLBASE
299   ${GRML_FAI_CONFIG}/config/class/GRMLBASE.var
300   ${GRML_FAI_CONFIG}/config/hooks/instsoft.GRMLBASE
301   ${GRML_FAI_CONFIG}/config/package_config/GRMLBASE
302
303 Take a look at the next section for information about the concept of those
304 files/directories.
305
306 If you want to use your own configuration, extend an existing configuration
307 and/or add additional packages to your ISO just invent a new class (or extend an
308 existing one). For example if you want to use your own class named "FOOBAR" just
309 set CLASSES="GRMLBASE,GRML_SMALL,I386,FOOBAR" inside /etc/grml/grml-live.local
310 or invoke grml-live using the classes option: "grml-live -c
311 GRMLBASE,GRML_SMALL,I386,FOOBAR ...".
312
313 More details regarding the class concept can be found in the documentation of
314 FAI itself (being available at /usr/share/doc/fai-doc/).
315
316 [[X7]]
317 [[classes]]
318 Available classes
319 -----------------
320
321 The package selection part of the classes can be found in
322 ${GRML_FAI_CONFIG}/config/package_config whereas some further classes are defined for
323 example in ${GRML_FAI_CONFIG}/config/scripts/ so specific feature sets can be
324 selected. The following classes are predefined:
325
326 * DEBORPHAN: get rid of all packages listed in output of Deborphan
327
328 * GRMLBASE: the main class responsible for getting a minimal subset of what's
329 defining a grml system. Important parts of the buildprocess are specified in
330 this class as well, so unless you have a really good reason you should always
331 use this class.
332
333 * GRML_FULL: full featured grml, also known as the "normal", full grml.
334
335 * GRML_MEDIUM: medium sized grml version, known as grml-medium
336
337 * GRML_POWERPC: grml for PowerPC architecture, not supported yet (still work in
338 progress)
339
340 * GRML_SMALL: minimum sized grml version, known as grml-small
341
342 * LATEX: LaTeX(-related) packages like auctex, texlive,...
343 (which used to be shipped by grml before the LaTeX removal)
344
345 * LATEX_CLEANUP: get rid of several very large LaTeX directories
346 (like some /usr/share/doc/texlive-*, /usr/share/doc/texmf,...)
347
348 * LOCALES: use full featured locales setup (see /etc/locale.gen.grml). This
349 avoids to get rid of /usr/share/locale - which happens by default otherwise - as
350 well.
351
352 * NO_ONLINE: do not run scripts during the chroot build process which require a
353 network connection
354
355 * RELEASE: run some specific scripts and commands to provide the workflow for an
356 official grml release
357
358 * REMOVE_DOCS: get rid of documentation directories (like /usr/share/doc,
359 /usr/share/man/, /usr/share/info,...)
360
361 * SOURCES: retrieve Debian source packages after installation. Files will be
362 placed in the output directory under grml_sources.
363
364 * XORG: providing important packages for use with a base grml-featured X.org
365 setup
366
367 [[files]]
368 Files
369 -----
370
371 Notice that grml-live ships FAI configuration files that do not use the same
372 namespace as the FAI packages itself. This ensures that grml-live does not clash
373 with your usual FAI configuration, so instead of /etc/fai/fai.conf (package
374 fai-client) grml uses ${GRML_FAI_CONFIG}/fai.conf instead. For more details see
375 below. To get an idea how another configuration or example files could look like
376 check out /usr/share/doc/fai-doc/examples/simple/ (provided by Debian package
377 fai-doc). Furthermore /usr/share/doc/fai-doc/fai-guide.html/ch-config.html
378 provides documentation regarding configuration possibilities.
379
380   /usr/sbin/grml-live
381
382 Script for the main build process. Requires root permissions for execution.
383
384   /etc/grml/grml-live.conf
385
386 Main configuration file for grml-live which should be considered as a reference
387 configuration file only. Please use /etc/grml/grml-live.local for local
388 configuration instead.
389
390   /etc/grml/grml-live.local
391
392 All the local configuration should go to this file. This file overrides any
393 defaults of grml-live. Configurations via /etc/grml/grml-live.local are preferred
394 over the ones from /etc/grml/grml-live.conf. If you want to override settings
395 from /etc/grml/grml-live.local as well you have to specify them on the grml-live
396 commandline.
397
398   ${GRML_FAI_CONFIG}/fai.conf
399
400 Main configuration file for FAI which specifies where all the configuration
401 files and scripts for FAI/grml-live can be found. By default the configuration
402 variables are FAI_CONFIG_SRC=file:///etc/grml/fai/config and
403 GRML_FAI_CONFIG=/etc/grml/fai/config - both pointing to a directory shipped by
404 grml-live out-of-the-box so you shouldn't have to configure anything in this
405 file.
406
407   ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf
408
409 This file is used by make-fai-nfsroot(8) only. Usually you don't have to change
410 anything inside this file. If you want to modify NFSROOT though you can adjust
411 it there.
412
413   ${GRML_FAI_CONFIG}/NFSROOT
414
415 This file specifies the package list for creating the NFSROOT.
416
417   ${GRML_FAI_CONFIG}/apt/sources.list
418
419 This file specifies which mirrors should be considered for retrieving the Debian
420 packages when creating the main chroot (including all the software you would
421 like to see included). Important: this file should *not* be adjusted manually!
422 Instead use the GRML_LIVE_SOURCES variable inside /etc/grml/grml-live.conf or
423 /etc/grml/grml-live.local which modifies ${GRML_FAI_CONFIG}/apt/sources.list
424 on-the-fly via grml-live then. If you want to generally adjust apt configuration
425 use FAI's fcopy command with ${GRML_FAI_CONFIG}/config/files instead.
426
427   ${GRML_FAI_CONFIG}/config/
428
429 The main directory for configuration of FAI/grml-live. More details below.
430
431   ${GRML_FAI_CONFIG}/config/class/
432
433 This directory contains files which specify main configuration variables for the
434 FAI classes.
435
436   ${GRML_FAI_CONFIG}/config/debconf/
437
438 This directory provides the files for preseeding/configuration of debconf
439 through files.
440
441   ${GRML_FAI_CONFIG}/config/hooks/
442
443 This directory provides files for customising the build process through hooks.
444 Hooks are user defined programs or scripts, which are called during the
445 installation process.
446
447   ${GRML_FAI_CONFIG}/config/package_config/
448
449 Directory with lists of software packages to be installed or removed.  The
450 different classes describe what should find its way to your ISO.  When running
451 "grml-live -c GRMLBASE,GRML_SMALL,I386 ..." only the configuration of GRMLBASE,
452 GRML_SMALL and and I386 will be taken. If you use 'grml-live -c
453 GRMLBASE,GRML_SMALL,I386,FOOBAR ...' then the files of GRMLBASE, GRML_SMALL,
454 I386 **plus** the files from FOOBAR will be taken. So just create a new class to
455 adjust the package selection according to your needs.  Please notice that the
456 directory GRMLBASE contains a package list defining a minimum but still
457 reasonable package configuration.
458
459   ${GRML_FAI_CONFIG}/config/scripts/
460
461 Scripts for customising the ISO within the build process.
462
463   ${GRML_FAI_CONFIG}/live-initramfs/
464
465 This directory provides the files used for building the initramfs/initrd via
466 live-initramfs(8).
467
468 [[log-files]]
469 Available log files
470 -------------------
471
472 grml-live itself logs to /var/log/grml-live.log. Unless you set PRESERVE_LOGFILE
473 in your grml-live configuration the file is cleared on each new invocation of
474 grml-live.
475
476 The FAI part of grml-live logs to /var/log/fai/$HOSTNAME/ - so the
477 default being /var/log/fai/grml/.
478
479 If you are using the grml-live buildd you will find the logs of the grml-live
480 run at /var/log/grml-buildd.log.
481
482 If you want to store build information in a database just install the
483 grml-live-db Debian package. Further details available in the grml-live-db
484 manpage.
485
486 [[requirements]]
487 Requirements for the build system
488 ---------------------------------
489
490 * any Debian based system should be sufficient (if it doesn't work it's a bug,
491 please send us a bug report then) [a usual
492 link:http://grml.org/grml2hd/[grml2hd] harddisk installation (using grml or
493 grml-medium) ships all you need]. Check out <<deploy-on-debian,How do I deploy
494 grml-live on a plain Debian installation>> for details how to set up grml-live
495 on a plain, original Debian system.
496
497 * enough free disk space; at least 800MB are required for a minimal grml-live
498 run (\~400MB for the chroot [$CHROOT_OUTPUT], \~150MB for the build target
499 [$BUILD_OUTPUT] and \~150MB for the resulting ISO [$ISO_OUTPUT] plus some
500 temporary files), if you plan to use GRML_FULL you should have at least 4GB of
501 total free disk space
502
503 * fast network access for retrieving the Debian packages used for creating the
504 chroot (check out "local mirror" and "NFSROOT" to workaround this problem as far
505 as possible)
506
507 For further information see next section.
508
509 [[X8]]
510 [[current_state]]
511 Current state of grml-live with squashfs-tools and kernel
512 ---------------------------------------------------------
513
514 Use squashfs-tools >=4.2-1 (available from Grml repositories as well as from
515 Debian/unstable) to build Grml (based) ISOs featuring kernel version
516 2.6.38-grml[64].
517
518 ////////////////////////////////////////////////////////////////////////////////
519 Difference between squashfs-lzma-tools, squashfs-lzma-tools4 and squashfs-tools
520 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
521
522 Whereas the ZLIB compression is much faster in the build process, the LZMA
523 compression provides a smaller resulting ISO. If you're wondering: the official
524 Grml builds use the LZMA compression.
525
526 Squashfs-tools was introduced in Debian and once provided support for LZMA
527 compression. Sadly LZMA compression within squashfs-tools became unsupported and
528 therefore squashfs-lzma-tools[4] had to be introduced and maintained by the Grml
529 team. Different kernel versions provide different squashfs file formats. Kernel
530 versions until 2.6.28-grml[64] used the 3.x file format but those outdated
531 kernels aren't supported by grml-live automatically anymore nowdays (manual
532 handling through SQUASHFS_BINARY possible though). Kernel versions
533 2.6.31-grml[64] and 2.6.33-grml[64] use openwrt's squashfs lzma file format
534 version 4. Kernel versions starting with 2.6.35-grml[64] use the mainline ondisk
535 file format version 4.
536
537 If you're wondering which package supports what, here's a short overview:
538
539 * squashfs-lzma-tools4 4.0-x: ZLIB as default, LZMA support via '-comp lzma'
540 option (enabled by grml-live by default), file format version 4 (mainline
541 version), package maintained and available from Grml, recommended for current
542 grml-live builds featuring kernels >=2.6.35-grml[64]
543
544 * squashfs-lzma-tools 4.0-2: ZLIB as default, LZMA support via '-lzma' option
545 (enabled by grml-live by default), file format version 4 (openwrt style),
546 package maintained and available from Grml, recommended for any grml-live builds
547 with kernel versions 2.6.31-grml[64] and 2.6.33-grml[64]
548
549 * squashfs-tools 1:4.0-x: ZLIB as default, no LZMA support/options, file format
550 version 4, package maintained and available from Debian, recommended only for
551 ZLIB-only builds of any grml-live builds with kernel versions >=2.6.31-grml[64]
552
553 Outdated, JFTR:
554
555 * squashfs-tools 1:3.3-7: ZLIB as default, no LZMA support/options, file format
556 version 3
557
558 * squashfs-tools 1:3.2r2-9exp1: LZMA as default, ZLIB support via '-nolzma'
559 option, file format version 3
560
561 * squashfs-lzma-tools 3.3-1: LZMA as default, ZLIB support via '-nolzma' option,
562 file format version 3
563
564 Now, depending on the kernel version you want to use you need different versions
565 of squashfs-tools/squashfs-lzma-tools[4]. Yes, that's a mess (don't ask how much
566 this sucks for us developers) - though we're putting lots of effort into our
567 toolchain to automatically handle this for you through the grml-live build
568 system and provide proper documentation. The situation is supposed to calm down
569 with the recent integration of the squashfs file format 4 in the mainline
570 kernel. Support for LZMA is pending and as soon as it's available mainline this
571 should dramatically simplify the situation for developers as well as users.
572
573 [TIP]
574 If you want to force usage of a specific mksquashfs binary just set the
575 SQUASHFS_BINARY configuration/environment variable. Set SQUASHFS_OPTIONS for
576 customizing the options that should be used by the mksquashfs binary during
577 build process.
578
579 Using squashfs-lzma-tools4 4.0-1 on the build system
580 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
581
582 squashfs-lzma-tools4 4.0-1 is available via the Grml repositories. It provides
583 the mksquashfs-lzma4 and unsquashfs-lzma4 binaries. The package does NOT
584 conflict with neither Debian's squashfs-tools package nor Grml's
585 squashfs-lzma-tools package, so you can install all of them at the same time and
586 the build system will try to figure out the best matching binary automatically
587 for you.
588
589 The packages can be downloaded from
590 link:http://deb.grml.org/pool/main/s/squashfs-lzma-tools4/[http://deb.grml.org/pool/main/s/squashfs-lzma-tools4/]
591
592 It provides support for the new squashfs file format version 4 (as available in
593 mainline, so *not* the one being used by squashfs-lzma-tools and kernel
594 2.6.33-grml) and therefore requires kernel versions starting with
595 2.6.35-grml[64]. It supports LZMA as well as ZLIB compression. Just use the
596 defaults for enabling LZMA or use grml-live's '-z' option if you want to use
597 ZLIB compression instead.
598
599 * Kernel 2.6.31-grml[64]: works with ZLIB compression, fails with LZMA
600 * Kernel 2.6.33-grml[64]: works with ZLIB compression, fails with LZMA
601 * Kernel 2.6.35-grml[64]: works with ZLIB *and* LZMA compression
602 * Kernel 2.6.36-grml[64]: works with ZLIB *and* LZMA compression
603
604 [NOTE]
605 squashfs-tools >=4.1-1 and/or squashfs-lzma-tools4 are the recommended package
606 for building up2date ISOs with grml-live! Please use other squashfs-* packages
607 only if you want to build live systems providing kernel versions older than
608 2.6.35-grml*. Use squashfs-tools >=4.1-1 or squashfs-lzma-tools4 from Grml if
609 you want to remaster any Grml releases MORE RECENT than 2010.04.
610
611 Using squashfs-lzma-tools 4.0-2 on the build system
612 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
613
614 squashfs-lzma-tools 4.0-2 is available via the Grml repositories. It provides
615 the mksquashfs-lzma and unsquashfs-lzma binaries. The package does NOT conflict
616 with Debian's squashfs-tools package (you can install both of them at the same
617 time).
618
619 The packages can be downloaded from
620 link:http://deb.grml.org/pool/main/s/squashfs-lzma-tools/[http://deb.grml.org/pool/main/s/squashfs-lzma-tools/]
621
622 It provides support for the new squashfs file format version 4 (based on openwrt
623 patches, this is *not* the mainline file format that's being used by kernel
624 2.6.35-grml and squashfs-lzma-tools4!) and therefore requires kernel versions
625 newer than 2.6.28-grml[64]. It supports LZMA as well as ZLIB compression. Just
626 use the defaults for enabling LZMA or use grml-live's '-z' option if you want to
627 use ZLIB instead.
628
629 * Kernel \<=2.6.28-grml[64]: does not work
630 * Kernel 2.6.31-grml[64]: works
631 * Kernel 2.6.33-grml[64]: works
632 * Kernel 2.6.35-grml[64]: works for ZLIB compression, fails for LZMA
633
634 [NOTE]
635 Please use squashfs-lzma-tools >=4.0-2 from Grml only if you want to remaster
636 Grml releases 2009.10 and 2010.04 or live systems with their according kernel
637 versions.
638
639 Using squashfs-tools 1:4.0-X on the build system
640 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
641
642 squashfs-tools >=1:4.0-1 is available in Debian/unstable and Debian/testing. It
643 provides the mksquashfs and unsquashfs binaries. The package does NOT conflict
644 neither with the squashfs-lzma-tools 4.0-2 package nor with the
645 squashfs-lzma-tools4 package (so you can install all of them at the same time).
646
647 The packages can be downloaded from
648 link:ftp://ftp.de.debian.org/debian/pool/main/s/squashfs-tools/[ftp://ftp.de.debian.org/debian/pool/main/s/squashfs-tools/]
649
650 It provides support for the new squashfs file format version 4 and therefore
651 requires kernel versions newer than 2.6.28-grml[64].
652
653 It does NOT support LZMA compression (dropped with
654 link:http://packages.debian.org/changelogs/pool/main/s/squashfs-tools/current/changelog[version
655 1:3.3-4] and not yet re-integrated yet, see
656 link:http://bugs.debian.org/594595[#594595]). If you need LZMA support please
657 use Grml's squashfs-lzma-tools[4] (see sections above) instead.
658
659 * Kernels \<=2.6.28-grml[64]: does not work
660 * Kernel 2.6.31-grml[64]: works (ZLIB only)
661 * Kernel 2.6.33-grml[64]: works (ZLIB only)
662 * Kernel 2.6.35-grml[64]: works (ZLIB only)
663 * Kernel 2.6.36-grml[64]: works (ZLIB only)
664
665 [NOTE]
666 Please use squashfs-tools between 4.0-1 and 4.1-1 only if you want to remaster
667 Grml releases starting with 2009.10 using the ZLIB compression, please use other
668 squashfs packages otherwise instead.
669
670 Outdated, JFTR:
671
672 Using squashfs-lzma-tools 3.3-1 on the build system
673 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
674
675 squashfs-lzma-tools 3.3-1 from the Grml repository supports kernel
676 2.6.26-grml[64] and 2.6.28-grml[64] using both LZMA and ZLIB (-nolzma)
677 compression.
678
679 The packages can be downloaded from
680 link:http://deb.grml.org/pool/main/s/squashfs-lzma/[http://deb.grml.org/pool/main/s/squashfs-lzma/].
681
682 [NOTE]
683 Please use squashfs-lzma-tools 3.3-1 only if you want to remaster Grml releases
684 2008.11 or 2009.05.
685
686 Using squashfs-tools 1:3.3-7 on the build system
687 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
688
689 squashfs-tools 1:3.3-7 is available through
690 http://grml.org/squashfs/squashfs-tools_3.3-7_i386.deb (for x86) or
691 http://grml.org/squashfs/squashfs-tools_3.3-7_amd64.deb (for amd64) [both build
692 on and for Debian/etch but working with testing and unstable as well].
693
694 Please notice that squashfs-tools 1:3.3-7 does NOT support LZMA compression at
695 all (so you won't be able to remaster release 2008.11 and 2009.05 using LZMA for
696 example). The -nolzma option of mksquashfs is not available therefore (even
697 though grml-live will deactivate it for you automatically anyway). Please use
698 squashfs-lzma-tools instead.
699
700 * Kernel 2.6.23-grml: does NOT work, please use squashfs-tools 1:3.2r2-9exp1
701                       instead if you still want to use kernel 2.6.23 (not
702                       recommended)
703 * Kernel 2.6.26-grml: works (without LZMA compression only of course!)
704 * Kernel 2.6.28-grml: works (without LZMA compression only of course!)
705
706 Using squashfs-tools 1:3.2r2-9exp1 on the build system
707 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
708
709 squashfs-tools 1:3.2r2-9exp1 is available via the grml-testing repository,
710 running:
711
712   # aptitude install squashfs-tools=1:3.2r2-9exp1
713
714 or directly via downloading the files
715 http://grml.org/squashfs/squashfs-tools_3.2r2-9exp1_i386.deb (for x86) or
716 http://grml.org/squashfs/squashfs-tools_3.2r2-9exp1_amd64.deb (for amd64).
717
718 Using with ZLIB compression (SQUASHFS_OPTIONS='-nolzma' or -z
719 option in grml-live cmdline):
720
721 * Kernel 2.6.23-grml: works
722 * Kernel 2.6.26-grml: works
723 * Kernel 2.6.28-grml: supposed to work (not verified though)
724
725 Using with LZMA compression:
726
727 * Kernel 2.6.23-grml: works
728 * Kernel 2.6.26-grml: does NOT work, please use ZLIB mode instead or switch
729   to Debian package squashfs-lzma-tools 3.3-1 (see section above).
730 * Kernel 2.6.28-grml: does NOT work, please use ZLIB mode instead or switch
731   to Debian package squashfs-lzma-tools 3.3-1 (see section above).
732 //////////////////////////////////////////////////////////////////////////////////
733
734 [[faq]]
735 FAQ
736 ---
737
738 [[deploy-on-debian]]
739 How do I deploy grml-live on a plain Debian installation?
740 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
741
742 The easiest way to get a running grml-live setup is to install Grml or
743 grml-medium using grml2hd (for example inside KVM, Virtualbox, VMware,... if you
744 don't want to run it on a physical system). Of course using grml-live on a
745 plain, original Debian installation is supported as well. So there we go.
746
747 What we have: plain, original Debian Lenny (5.0).
748
749 What we want: build a grml-medium ISO based on Debian/squeeze for the i386
750 architecture using grml-live.
751
752 [IMPORTANT]
753
754 If you encounter any problems while booting the resulting ISO please be aware of
755 <<current_state,the 'current state of grml-live with squashfs-tools and kernel'
756 section>>.
757
758 Instructions
759 ^^^^^^^^^^^^
760
761   # adjust sources.list:
762   cat >> /etc/apt/sources.list << EOF
763
764   # grml stable repository:
765     deb     http://deb.grml.org/ grml-stable  main
766   # deb-src http://deb.grml.org/ grml-stable  main
767
768   # grml testing/development repository:
769     deb     http://deb.grml.org/ grml-testing main
770   # deb-src http://deb.grml.org/ grml-testing main
771   EOF
772
773   # adjust apt-pinning (only prefer squashfs stuff from grml):
774   cat >> /etc/apt/preferences << EOF
775   Package: *
776   Pin: origin deb.grml.org
777   Pin-Priority: 1
778
779   Package: squashfs-tools
780   Pin: origin deb.grml.org
781   Pin-Priority: 996
782   EOF
783
784   # get keyring for apt:
785   apt-get update
786   apt-get --allow-unauthenticated install grml-debian-keyring
787
788   # optionally(!) install basefile so we don't have to build basic
789   # chroot from scratch, grab from http://daily.grml.org/
790   # mkdir -p /etc/grml/fai/config/basefiles/
791   # mv base.tgz /etc/grml/fai/config/basefiles/I386.tar.gz
792   # mv base64.tgz /etc/grml/fai/config/basefiles/AMD64.tar.gz
793
794   # install relevant tools
795   # please check out http://grml.org/grml-live/#current_state when encountering problems!
796   apt-get -o APT::Install-Recommends=false install grml-live squashfs-tools
797
798   # adjust grml-live configuration for our needs:
799   cat > /etc/grml/grml-live.local << EOF
800   ## want a faster build process and don't need smaller ISOs?
801   ## if so use zlib compression
802   # SQUASHFS_OPTIONS="-comp gzip -b 256k"
803   ## want to use a specific squashfs binary?
804   # SQUASHFS_BINARY='/usr/bin/mksquashfs'
805   # install local files into the chroot
806   CHROOT_INSTALL="/etc/grml/fai/chroot_install"
807   ## adjust if necessary (defaults to /grml/grml-live):
808   ## OUTPUT="/srv/grml-live"
809   FAI_DEBOOTSTRAP="squeeze http://cdn.debian.net/debian/"
810   ARCH="i386"
811   CLASSES="GRMLBASE,GRML_MEDIUM,I386"
812   # PRESERVE_LOGFILE='1'
813   # ZERO_FAI_LOGFILE='1'
814   GRML_LIVE_SOURCES="
815   deb http://deb.grml.org/            grml-stable  main
816   deb http://deb.grml.org/            grml-testing main
817   deb http://cdn.debian.net/debian squeeze main contrib non-free
818   "
819   EOF
820
821   # just optional(!) - upgrade FAI to latest available version:
822   cat >> /etc/apt/sources.list << EOF
823   # fai:
824     deb http://fai-project.org/download lenny koeln
825   EOF
826
827   # get gpg key of FAI repos and install current FAI version:
828   gpg -a --recv-keys AB9B66FD; gpg -a --export AB9B66FD | apt-key add -
829   apt-get update
830   apt-get install fai-client fai-server fai-doc
831
832 That's it. Now invoking 'grml-live -V' should build the ISO.  If everything
833 worked as expected the last line of the shell output should look like:
834
835   [*] Successfully finished execution of grml-live [running 687 seconds]
836
837 and the ISO can be found inside /grml-live/grml-live/grml_isos/ then.
838
839 [[grml_fai_config_variable]]
840 What is $GRML_FAI_CONFIG?
841 ~~~~~~~~~~~~~~~~~~~~~~~~~
842
843 The variable '$GRML_FAI_CONFIG' is pointing to the directory /etc/grml/fai by
844 default.  To provide you a maximum of flexibility you can set up your own
845 configuration directory (e.g. based on /etc/grml/fai) and use this directory
846 running grml-live with the '-D <config_dir>' option. Now '$GRML_FAI_CONFIG'
847 points to the specified directory instead of using /etc/grml/fai and all the
848 configuration files, scripts and hooks will be taken from your
849 '$GRML_FAI_CONFIG' directory.
850
851 [[how-to-debug]]
852 I've problems with the build process. How to start debugging?
853 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
854
855 Check out the logs inside /var/log/fai/... If you think it's a bug in grml-live
856 send a copy of your config, logs and the commandline with a short problem
857 description to <mika@grml.org>:
858
859   # history | grep grml-live > /etc/grml/grml_live.cmdline
860   # tar zcf grml_live_problem.tar.gz /etc/grml/grml-live.conf \
861             /etc/grml/grml_live.cmdline /etc/grml/grml-buildd.conf \
862             /var/log/fai /etc/grml/fai
863   -> finally mail grml_live_problem.tar.gz to <mika@grml.org>
864
865 If you need help with grml-live or would like to see new features as part of
866 grml-live you can get commercial support via
867 link:http://grml-solutions.com/[Grml Solutions].
868
869 [[lzma-vs-zlib]]
870 How much is the difference between LZMA and ZLIB compression?
871 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
872
873 ISO size (bs = blocksize):
874
875 [width="45%",cols="3,^2,^2"]
876 |============================================================
877 |ISO                   |LZMA (256kB bs) |ZLIB
878 |grml_sid              |666M | 771M
879 |grml_squeeze          |659M | 761M
880 |grml_lenny            |624M | 723M
881 |grml64_sid            |677M | 791M
882 |grml64_squeeze        |671M | 785M
883 |grml64_lenny          |639M | 745M
884 |grml-medium_sid       |208M | 236M
885 |grml-medium_squeeze   |206M | 234M
886 |grml-medium_lenny     |193M | 220M
887 |grml64-medium_sid     |213M | 245M
888 |grml64-medium_squeeze |213M | 244M
889 |grml64-medium_lenny   |201M | 231M
890 |grml-small_sid        |102M | 118M
891 |grml-small_squeeze    |101M | 117M
892 |grml-small_lenny      |97M  | 112M
893 |grml64-small_sid      |103M | 120M
894 |grml64-small_squeeze  |103M | 120M
895 |grml64-small_lenny    |99M  | 116M
896 |============================================================
897
898 Build time of grml-medium's squashfs file (depends on your system, though just
899 to get the ratio between the different options):
900
901 * 10 minutes and 4 seconds with LZMA default blocksize (128k)
902 * 7 minutes 27 seconds with LZMA and blocksize 256k
903 * 6 minutes and 8 seconds with LZMA blocksize 512k
904 * 1 minute and 40 seconds with ZLIB
905
906 [[install-local-files]]
907 How do I install further files into the chroot/ISO?
908 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
909
910 Just point the configuration variable CHROOT_INSTALL to the directory which
911 provides the files you would like to install. Note that the files are installed
912 under '/' in the chroot - so you have to create the rootfs structure on your
913 own. Usage example:
914
915   echo "CHROOT_INSTALL=\$GRML_FAI_CONFIG/chroot_install" >> /etc/grml/grml-live.local
916   mkdir -p /etc/grml/fai/chroot_install/usr/src/
917   wget example.org/foo.tar.gz
918   mv foo.tar.gz /etc/grml/fai/chroot_install/usr/src/
919   grml-live ...
920
921 [[local-debian-mirror]]
922 Can I use my own (local) Debian mirror?
923 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
924
925 Sure. Just adjust the variables GRML_LIVE_SOURCES and FAI_DEBOOTSTRAP (if not
926 already using NFSROOT's base.tgz) inside /etc/grml/grml-live.conf according to
927 your needs. Please don't forget that you should use the grml servers as well
928 (see default configuration) so all the grml packages can be downloaded as well.
929
930 If you want to use a local (for example NFS mount) mirror additionally, just
931 adjust MIRROR_DIRECTORY and MIRROR_SOURCES inside /etc/grml/grml-live.conf as
932 well.
933
934 Unless you specify GRML_LIVE_SOURCES and/or FAI_DEBOOTSTRAP the default from
935 ${GRML_FAI_CONFIG}/apt/sources.list and ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf will be
936 taken. If you customise the variables in /etc/grml/grml-live.conf then the two
937 files will be adjusted during runtime automatically.
938
939 If MIRROR_DIRECTORY and MIRROR_SOURCES are specified the local mirror will be
940 taken as first entry in the generated sources.list so it's preferred over
941 non-local mirrors. Using a fallback mirror (via providing several mirrors in
942 GRML_LIVE_SOURCES as used by default) is a recommended setting.
943
944 If you want to use a HTTP Proxy (like apt-cacher-ng), set APT_PROXY. Example:
945 APT_PROXY="http://localhost:3142/"
946
947 [[add-additional-debian-packages]]
948 How do I add additional Debian package(s) to my CD/ISO?
949 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
950
951 Just create a new class (using the package_config directory):
952
953   # cat > /etc/grml/fai/config/package_config/MIKA << EOF
954   PACKAGES aptitude
955
956   vim
957   another_name_of_a_debian_package
958   and_another_one
959   EOF
960
961 and specify it when invoking grml-live then:
962
963   # grml-live -c GRMLBASE,GRML_SMALL,I386,MIKA
964
965 [[reset-grml-live-configuration]]
966 I fscked up my grml-live configuration. How do I reset it to the defaults?
967 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
968
969 Notice: this deletes all your grml-live configuration files. If that's really
970 what you are searching for just run:
971
972   rm -rf /etc/grml/fai /etc/grml/grml-live.conf
973   dpkg -i --force-confnew --force-confmiss /path/to/grml-live_..._all.deb
974
975 [NOTE]
976
977 If you don't control your /etc using a version control system (VCS) yet it's a
978 good chance to start using it now. Check out
979 link:http://michael-prokop.at/blog/2007/03/14/maintain-etc-with-mercurial-on-debian/[http://michael-prokop.at/blog/2007/03/14/maintain-etc-with-mercurial-on-debian/]
980 for more details how to maintain /etc using the mercurial VCS.
981
982 [[create-a-base-tgz]]
983 How do I create a base.tgz for use as NFSROOT?
984 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
985
986 First of all build the chroot system:
987
988   mkdir /tmp/nfsroot && cd /tmp/nfsroot
989   debootstrap squeeze /tmp/nfsroot/ http://cdn.debian.net/debian
990   tar zcf base.tgz ./
991
992 Then check out where your NFSROOT is located:
993
994   # grep '^NFSROOT' /etc/grml/fai/make-fai-nfsroot.conf
995   NFSROOT=/grml/fai/nfsroot
996
997 So as /grml/fai/nfsroot is your NFSROOT place the file under
998 /grml/fai/nfsroot/live/filesystem.dir/var/tmp/:
999
1000   mv base.tgz /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz
1001
1002 or even better use /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz instead.
1003 Use I386 as $CLASSNAME for i386 builds and AMD64 for amd64 builds.
1004
1005 Now running "grml-live ..." will use this file as main system instead of
1006 executing debootstrap. Check out the output for the following lines if using
1007 NFSROOT:
1008
1009   [...]
1010   Calling task_extrbase
1011   Unpacking Debian base archive
1012   Extracting /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz
1013   Calling task_mirror
1014   [...]
1015
1016 or if using /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz for:
1017
1018   [...]
1019   ftar: extracting /etc/grml/fai/config/basefiles///AMD64.tar.gz to
1020   /grml-live/grml-live_20071029.22138/grml_chroot//
1021   [...]
1022
1023 [TIP]
1024 Existing base.tgz can be found at http://daily.grml.org/
1025
1026 [[apt-cacher]]
1027 Set up apt-cacher-ng for use with grml-live
1028 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1029
1030 Make sure /etc/grml/grml-live.local provides according APT_PROXY and
1031 FAI_DEBOOTSTRAP:
1032
1033   # cat /etc/grml/grml-live.local
1034   [...]
1035   APT_PROXY="http://localhost:3142/"
1036   [...]
1037   FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free"
1038
1039 Make sure apt-cacher-ng is running ('/etc/init.d/apt-cacher-ng restart').
1040 That's it.  All downloaded files will be cached in /var/cache/apt-cacher-ng then.
1041
1042 [[approx]]
1043 Set up approx for use with grml-live
1044 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1045
1046 Make sure /etc/grml/grml-live.conf provides according GRML_LIVE_SOURCES and
1047 FAI_DEBOOTSTRAP:
1048
1049   # cat /etc/grml/grml-live.conf
1050   [...]
1051   GRML_LIVE_SOURCES="
1052   deb http://localhost:9999/grml            grml-stable  main
1053   deb http://localhost:9999/grml            grml-testing main
1054   deb http://localhost:9999/debian squeeze  main contrib non-free
1055   "
1056   FAI_DEBOOTSTRAP="squeeze http://localhost:9999/debian"
1057
1058 Configure approx:
1059
1060   # cat /etc/approx/approx.conf
1061   [...]
1062   debian http://ftp.at.debian.org/debian
1063   grml   http://deb.grml.org/
1064
1065 Don't forget to restart approx (/etc/init.d/approx restart). That's it.
1066 All downloaded files will be cached in /var/cache/approx now.
1067
1068 [[revert_manifold]]
1069 How do I revert the manifold feature from an ISO?
1070 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1071
1072 The so called manifold feature Grml ISOs use by default allows one to use the same
1073 ISO for CD boot and USB boot. If you notice any problems when booting just
1074 revert the manifold feature running:
1075
1076   % dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc
1077
1078 To switch from manifold to isohybrid mode (an alternative approach provided by
1079 syslinux) then just execute:
1080
1081   % isohybrid grml.iso
1082
1083 [[basetgz]]
1084 How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz)
1085 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1086
1087 Execute the following commands (requires root):
1088
1089   ARCH='amd64' # replace with i386 if necessary
1090   SUITE='squeeze' # using the current stable release should always work
1091   debootstrap --arch "$ARCH" --exclude=info,tasksel,tasksel-data "$SUITE" "$ARCH" http://debian.netcologne.de/debian
1092   cd "$ARCH"
1093   rm var/cache/apt/archives/*.deb
1094   tar zcf ../"${ARCH}".tar.gz *
1095
1096 And finally place the generated tarball in /etc/grml/fai/config/basefiles/ (note
1097 that it needs to be uppercase letters matching the class names, so: AMD64.tar.gz
1098 for amd64 and I386.tar.gz for i386).
1099
1100 [[autobuild]]
1101 How do I set up an autobuild environment?
1102 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1103
1104 If you want to set up a system like link:http://daily.grml.org/[daily.grml.org]
1105 the Debian package grml-live-buildd provides all you need to start. Start with
1106 figuring out the cron job script /usr/share/grml-live/buildd/cronjob.sh.
1107
1108 If you want to automatically update the grml-live Debian package on your build
1109 system based on the git tree of grml-live (so you get bleeding edge of
1110 development which might is interesting for services like daily.grml.org) the
1111 provided release_helper.sh script provides everything you need. Execute as root:
1112
1113   echo "deb file:/home/grml-live-git/grml-live.build-area/ ./" >> /etc/apt/sources.list.d/grml-live.list
1114   adduser --disabled-login --disabled-password grml-live-git
1115
1116 Execute 'visudo' to update sudo configuration and add the following line:
1117
1118   grml-live-git ALL=NOPASSWD: /usr/bin/apt-get
1119
1120 Switch to user grml-live-git and configure the rest:
1121
1122   su - grml-live-git
1123   mkdir grml-live.build-area
1124   git clone git://git.grml.org/grml-live.git
1125   git config --global user.name "Grml-Live Git Autobuild"
1126   git config --global user.email "grml-live-git@$(hostname)"
1127
1128 Finally install a cron job (as user grml-live-git) like:
1129
1130   30 00 * * * cd /home/grml-live-git/grml-live.git/ && env AUTOBUILD=1 scripts/release_helper.sh >/home/grml-live-git/grml-live-build.log
1131
1132 Tip: To find out the build date of the installed grml-live package just execute:
1133
1134   % apt-cache policy grml-live | grep 'Installed.*autobuild'
1135    Installed: 0.13.1~autobuild1300450381
1136
1137 and run "date -ud @$STRING" where $STRING is the number behind the "autobuild",
1138 like:
1139
1140   % date -ud @1300450081
1141   Fri Mar 18 12:08:01 UTC 2011
1142
1143 [[question]]
1144 I've a question which isn't answered by this document
1145 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1146
1147 Don't hesitate to contact the author: <mika@grml.org>
1148
1149 [[download]]
1150 Download / install grml-live as a Debian package
1151 ------------------------------------------------
1152
1153 Debian packages are available through the grml-repository at
1154 link:http://deb.grml.org/pool/main/g/grml-live/[deb.grml.org].  If you want to
1155 build a Debian package on your own (using for example a specific version or the
1156 current development tree), just execute:
1157
1158   git clone git://git.grml.org/grml-live
1159   cd grml-live
1160   debuild -us -uc
1161
1162 [[source]]
1163 Source
1164 ------
1165
1166 The source of grml-live is available at
1167 link:http://git.grml.org/?p=grml-live.git[http://git.grml.org/?p=grml-live.git]
1168
1169 [[todo-list]]
1170 TODO list
1171 ---------
1172
1173 Check out the link:http://git.grml.org/?p=grml-live.git;a=blob;f=TODO;hb=HEAD[TODO file].
1174
1175 [[bugs]]
1176 Bugs
1177 ----
1178
1179 Please report feedback, link:http://grml.org/bugs/[bugreports] and wishes
1180 link:http://grml.org/contact/[to the grml-team]!
1181
1182 [[documentation]]
1183 Documentation
1184 -------------
1185
1186 The most recent grml-live documentation is available online at
1187 http://grml.org/grml-live/ and for offline reading also available
1188 in different formats:
1189
1190 * http://grml.org/grml-live/grml-live.epub
1191 * http://grml.org/grml-live/grml-live.pdf
1192
1193 [[authors]]
1194 Authors
1195 -------
1196 Michael Prokop <mika@grml.org>
1197
1198 /////////////////////////////////////
1199 // vim:ai tw=80 ft=asciidoc expandtab
1200 /////////////////////////////////////