Update for kernel 2.6.38-grml[64], featuring LZMA/XZ support - requiring squashfs...
[grml-live.git] / docs / grml-live.txt
index 8e859a4..3809075 100644 (file)
@@ -3,103 +3,235 @@ grml-live(8)
 
 Name
 ----
-grml-live - build process script for generating a (grml based) Linux Live-ISO
+
+grml-live - build framework based on FAI for generating a grml and Debian based
+Linux Live system (CD/ISO)
 
 Synopsis
 --------
-grml-live [-c <classe[s]>] [-t <target_directory>] [-F] [-h|--help]
 
-*******************************************************************************
-Important! grml-live is under heavy construction, though your feedback is highly
-appreciated.  This document is growing as requested. If you have questions which
-aren't answered by this document yet please let me (mika@grml.org) know!
-*******************************************************************************
+grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [-g
+<grml_name>] [-i <iso_name> ] [-o <output_directory>] [-r <release_name>] [-s
+<suite>] [-t <template_directory>] [-v <version_number>] [-bBFhquVz]
+
+CAUTION: Please check out <<current_state,the 'Current state of grml-live with
+squashfs-tools and kernel' section>> for details about current state of involved
+tools before starting with grml-live or if you encounter any problems.
 
 Description
 -----------
 
-grml-live provides the build system for creating (a grml based) live-cd. The
-build system is based on link:http://www.informatik.uni-koeln.de/fai/[FAI]
-(Fully Automatic Installation).
+grml-live provides the build system for creating a grml and Debian based Linux
+Live-CD. The build system is based on
+link:http://fai-project.org/[FAI] (Fully Automatic
+Installation). grml-live uses the "fai dirinstall" feature to generate a chroot
+system based on the class concept of FAI (see later sections for further
+details) and provides the framework to be able to generate a full-featured ISO.
+It does not use all the FAI features by default though and you don't have to
+know FAI to be able to use it.
 
-FAI uses a class based system. This gives you the flexibility to choose the
-packages you would like to include on your very own Linux live-cd without having
-to deal with all the details of a build process.
+The use of FAI gives you the flexibility to choose the packages you would like
+to include on your very own Linux Live-CD without having to deal with all the
+details of a build process.
 
-CAUTION: grml-live does not use /etc/fai for configuration but instead provides
-and uses /etc/grml/fai. This ensures that it does not clash with default FAI
-configuration and packages, so you can use grml-live and FAI completely
-independent!
+CAUTION: grml-live does **not** use /etc/fai for configuration but instead
+provides and uses /etc/grml/fai. This ensures that it does not clash with
+default FAI configuration and packages, so you can use grml-live and FAI
+completely independent at the same time!
 
 [NOTE]
 
 Please notice that you should have a fast network connection as all the Debian
-packages will be installed via network. If you want to use a local mirror
-(strongly recommended!) checkout mkdebmirror (see
-/usr/share/doc/grml-live/examples/mkdebmirror), debmirror(1), reprepro(1) (see
-/usr/share/doc/grml-live/examples/reprepro/ for a sample configuration) and
-approx(8). To avoid downloading of the base system check out FAI's NFSROOT (check
-docs for ../fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz).
+packages will be downloaded and installed via network. If you want to use a
+local mirror (strongly recommended if you plan to use grml-live more than once)
+checkout mkdebmirror (see /usr/share/doc/grml-live/examples/mkdebmirror),
+debmirror(1), reprepro(1) (see /usr/share/doc/grml-live/examples/reprepro/ for a
+sample configuration), apt-cacher(1) and approx(8). To avoid downloading the
+base system again and again check out FAI's NFSROOT (see FAQ of this document
+for details).
 
 Options
 -------
 
-  -c **CLASSES**::
+  -a **ARCHITECTURE**::
 
-Specify the CLASSES to be used for building the ISO via fai.  By default only
-the classes GRMLBASE and I386 are assumed, resulting in a small base system
-(being about ~150MB ISO size).
+Use the specified architecture instead of the currently running one.  This
+allows building a 32bit system on a 64bit host (though you can't build a 64bit
+system on a 32bit system/kernel of course). Please notice that real
+crosscompiling (like building a ppc system on x86) isn't possible due to the
+nature and the need of working in a chroot. Currently supported values: i386
+and amd64.
 
-  -s **SUITE**::
+  -b::
 
-Specify the Debian suite you want to use for your live-system.  Defaults to
-"etch"; support values are: etch, lenny, sid, stable, testing, unstable.
+Build the ISO without updating the chroot via FAI. This option is useful for
+example when working on stable releases: if you have a working base
+system/chroot and do not want to execute any further updates (via "-u" option)
+but intend to only build the ISO.
+
+  -B::
 
-  -t **TARGET_DIRECTORY**::
+Build the ISO without touching the chroot at all. This option is useful if
+you modified anything that FAI or grml-live might adjust via grml's FAI
+scripts.  It's like the '-b' option but even more advanced. Use only if you
+really know that you do not want to update the chroot.
+
+  -c **CLASSES**::
 
-Main output directory of the build process of FAI.  Three directories are
-created inside the target directory, being: grml_cd/ - where the files for
-creating the ISO are located (including the compressed squashfs file),
-grml_chroot/ - the generated chroot system and grml_isos/ - where the resulting
-ISO is stored.
+Specify the CLASSES to be used for building the ISO via FAI.  By default only
+the classes GRMLBASE, GRML_MEDIUM and I386 are assumed, resulting in a small base
+system (being about ~180MB total ISO size). If using a non-I386 system (like
+AMD64) you should specify the appropriate architecture as well. Additionally you
+can specify a class providing a grml-kernel (see
+<<classes,the 'CLASSES' section in this document>> for details about available classes).
+So instead of GRML_MEDIUM you can also use GRML_SMALL and GRML_FULL.
+
+[IMPORTANT]
+All class names should be written in uppercase letters. Do not use a dash, use
+an underscore. So do not use "amd64" but "AMD64", do not use "FOO BAR" but
+"FOO_BAR".
+
+
+  -C **CONFIGURATION_FILE**::
+
+The specified file is used as configuration file for grml-live. By default
+/etc/grml/grml-live.conf is used as default configuration. If a file named
+/etc/grml/grml-live.local exists it is used as well (sourced after reading
+/etc/grml/grml-live.conf meant as main file for local configuration). As a last
+option the specified configuration file is sourced so it is possible to override
+settings of /etc/grml/grml-live.conf as well as of /etc/grml/grml-live.local.
+Please notice that all configuration files have to be adjusted during execution
+of grml-live, so please make sure you use /etc/grml/grml-live.conf as a base for
+your own configuration file (usually /etc/grml/grml-live.local). Please also
+notice that the configuration file specified via this option is **not** (yet)
+supported inside the scripts/hooks/classes at /etc/grml/fai/config. Instead use
+/etc/grml/grml-live.local for configuration stuff used inside
+/etc/grml/fai/config.
+
+  -d **DATE**::
+
+Use specified date as build date information on the ISO instead of the default.
+The default is the date when grml-live is being executed (retrieved via
+executing 'date +%Y-%m-%d'). The information is stored inside the file
+/GRML/grml-version on the ISO, /etc/grml_version in the squashfs file and in all
+the bootsplash related files. This option is useful if you want to provide an
+ISO with release information for a specific date but have to build it in
+advance. Usage example: '-d 2009-10-30'
 
   -F::
 
-Force execution and do not prompt for / display summary of configuration
-details.
+Force execution and do not prompt for acknowledgment of configuration.
+
+  -g **GRML_NAME**::
+
+Set the grml flavour name. Common usage examples: grml, grml-small, grml64.
+Please do NOT use blanks and any special characters like '/', ';' inside
+GRML_NAME, otherwise you might notice problems while booting.
 
   -h::
 
 Display short usage information and exit.
 
-  -v::
+  -i **ISO_NAME**::
+
+Specify name of ISO which will be available inside $OUTPUT_DIRECTORY/grml_isos
+by default.
+
+  -I **CHROOT_INSTALL**::
+
+Specify name of source directory which provides files that should become part of
+the chroot/ISO. Not enabled by default. Note: the files are installed under '/'
+in the chroot so you have to create the rootfs structure on your own.
+
+  -n::
+
+Skip creation of the ISO file. This option is useful if you want to build/update
+the chroot and/or recreate the squashfs file without building an ISO file.
+
+  -o **OUTPUT_DIRECTORY**::
+
+Main output directory of the build process of FAI.  Some directories are created
+inside this target directory, being: grml_cd (where the files for creating the
+ISO are located, including the compressed squashfs file), grml_chroot (the
+chroot system) and grml_isos (where the resulting ISO is stored).
+
+  -q::
+
+Build the ISO without (re-)creating the squashfs compressed file using mksquashfs.
+This option is useful if you just want to update parts outside the chroot in the ISO.
+Consider combining this option with the build-only option '-b'.
+
+  -r **RELEASENAME**::
+
+Specify name of the release.
+
+  -s **SUITE**::
+
+Specify the Debian suite you want to use for your live-system.  Defaults to
+"squeeze" (being current Debian/stable). Supported values are: etch, lenny,
+squeeze, sid. Debian "squeeze" requires a recent base.tgz
+(/etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz) or a recent version of
+debootstrap.
+
+  -t **TEMPLATE_DIRECTORY**::
+
+Specify place of the templates used for building the ISO. By default
+(and if not manually specified) this is /usr/share/grml-live/templates/.
+
+  -u::
+
+Update existing chroot instead of rebuilding it from scratch. This option is
+based on the softupdate feature of FAI.
+
+  -v **VERSION_NUMBER**::
+
+Specify version number of the release.
+
+  -V::
 
 Increase verbosity in the build process.
 
-How to get your own live-cd - the easy, fast and simple way
------------------------------------------------------------
+  -z::
+
+Use ZLIB instead of LZMA/XZ compression in mksquashfs part of the build process.
+
+[[usage-examples]]
+Usage examples
+--------------
 
-To get a small, Debian-stable and grml based live-cd using /grml/grml-live
-as build and output directory:
+To get a small, Debian-stable and grml-based Live-CD using /grml/grml-live
+as build and output directory just run:
 
   # grml-live
 
-To get a small Debian-unstable and grml-small based live-cd using
-/home/mika/grml-live as build and output directory:
+To get a small Debian-unstable and grml-small based Live-CD using
+/home/mika/grml-live as build and output directory just use:
+
+  # grml-live -s sid -c GRMLBASE,GRML_SMALL,I386 -o /home/mika/grml-live
+
+To get a medium sized, Debian-unstable and grml-based Live-CD for i386
+architecture using /grml/grml-live as build and output directory just run:
+
+  # grml-live -s sid -a i386 -c GRMLBASE,GRML_MEDIUM,I386
 
-  # grml-live -c GRMLBASE,GRML_SMALL,I386 -t /home/mika/grml-live
+To get a small, Debian-unstable and grml-based Live-CD using /tmp as build and
+output directory and use grml_0.0-3.iso as ISO name (placed inside
+/tmp/grml_isos) just invoke:
+
+  # grml-live -o /tmp -c GRMLBASE,GRML_SMALL,I386 -s sid -i grml_0.0-3.iso
 
 [NOTE]
 
 If you have about 700MB of free space inside /dev/shm (being a tmpfs, usually
-you have >=1GB of RAM) just run "mount -o remount,suid,dev,rw /dev/shm" and use
-/dev/shm as build and output directory - resulting in very fast build process.
-But please be aware of the fact that rebooting your system will result in an
-empty /dev/shm, so please another directory for $CHROOT_TARGET, $BUILD_TARGET
-and $ISO_TARGET if you plan to create more persistent output. :)
+you should have >=1GB of RAM) just run "mount -o remount,suid,dev,rw /dev/shm"
+and use /dev/shm as build and output directory - resulting in very fast build
+process.  But please be aware of the fact that rebooting your system will result
+in an empty /dev/shm, so please use another directory for $CHROOT_OUTPUT,
+$BUILD_OUTPUT and $ISO_OUTPUT if you plan to create more persistent output. :)
 
-Features
---------
+[[main-features]]
+Main features of grml-live
+--------------------------
 
 * create a grml-/Debian-based Linux Live-CD with one single command
 
@@ -107,25 +239,27 @@ Features
 
 * supports integration of own hooks, scripts and configuration
 
-* supports use and integration of own Software and/or Kernels via use of Debian
-repositories
+* supports use and integration of own Software and/or Kernels via simple use of
+Debian repositories
 
 * native support of FAI features
 
 * multi-arch support (work in progress)
 
+[[class-concept]]
 The class concept
 -----------------
 
-grml-live uses FAI and its class based concept for adjusting configuration
-according to your needs. This gives you flexibility and strength without losing
-the simplicity in the build process.
+grml-live uses FAI and its class based concept for adjusting configuration and
+setup according to your needs. This gives you flexibility and strength without
+losing the simplicity in the build process.
 
 The main and base class provided by grml-live is named GRMLBASE. It's strongly
 recommended to **always** use the class GRMLBASE when building an ISO using
-grml-live as well as the architecture dependend class (being 'I386' for x86_32
-currently only). The following files and directories are relevant for class GRML
-by default:
+grml-live, as well as the architecture dependent class which provides the kernel
+(being 'I386' for x86_32 and 'AMD64' for x86_64) and a GRML_* class (like
+GRML_SMALL, GRML_MEDIUM or GRML_FULL). The following files and directories are
+relevant for class GRMLBASE by default:
 
   /etc/grml/fai/config/scripts/GRMLBASE/
   /etc/grml/fai/config/debconf/GRMLBASE
@@ -137,51 +271,122 @@ Take a look at the next section for information about the concept of those
 files/directories.
 
 If you want to use your own configuration, extend an existing configuration
-and/or add additional packages to your ISO just invent a new class. For example
-if you want to use your own class named "FOOBAR" just extend CLASSES="GRMLBASE"
-inside /etc/grml/grml-live.conf to CLASSES="GRMLBASE,FOOBAR" or invoke grml-live
-using the classes option: "grml-live -c GRMLBASE,FOOBAR ...".
+and/or add additional packages to your ISO just invent a new class (or extend an
+existing one). For example if you want to use your own class named "FOOBAR" just
+set CLASSES="GRMLBASE,GRML_SMALL,I386,FOOBAR" inside /etc/grml/grml-live.local
+or invoke grml-live using the classes option: "grml-live -c
+GRMLBASE,GRML_SMALL,I386,FOOBAR ...".
 
 More details regarding the class concept can be found in the documentation of
-FAI (available at /usr/share/doc/fai-doc/).
+FAI itself (being available at /usr/share/doc/fai-doc/).
+
+[[X7]]
+[[classes]]
+Available classes
+-----------------
+
+The package selection part of the classes can be found in
+/etc/grml/fai/config/package_config whereas some further classes are defined for
+example in /etc/grml/fai/config/scripts/ so specific feature sets can be
+selected. The following classes are predefined:
+
+* DEBORPHAN: get rid of all packages listed in output of Deborphan
+
+* GRMLBASE: the main class responsible for getting a minimal subset of what's
+defining a grml system. Important parts of the buildprocess are specified in
+this class as well, so unless you have a really good reason you should always
+use this class.
 
+* GRML_FULL: full featured grml, also known as the "normal", full grml.
+
+* GRML_MEDIUM: medium sized grml version, known as grml-medium
+
+* GRML_POWERPC: grml for PowerPC architecture, not supported yet (still work in
+progress)
+
+* GRML_SMALL: minimum sized grml version, known as grml-small
+
+* LATEX: LaTeX(-related) packages like auctex, texlive,...
+(which used to be shipped by grml before the LaTeX removal)
+
+* LATEX_CLEANUP: get rid of several very large LaTeX directories
+(like some /usr/share/doc/texlive-*, /usr/share/doc/texmf,...)
+
+* LOCALES: use full featured locales setup (see /etc/locale.gen.grml). This
+avoids to get rid of /usr/share/locale - which happens by default otherwise - as
+well.
+
+* NO_ONLINE: do not run scripts during the chroot build process which require a
+network connection
+
+* RELEASE: run some specific scripts and commands to provide the workflow for an
+official grml release
+
+* REMOVE_DOCS: get rid of documentation directories (like /usr/share/doc,
+/usr/share/man/, /usr/share/info,...)
+
+* XORG: providing important packages for use with a base grml-featured X.org
+setup
+
+[[files]]
 Files
 -----
 
 Notice that grml-live ships FAI configuration files that do not use the same
-namespace as the FAI packages itself.  This ensures that grml-live does not
-clash with your usual FAI configuration, so instead of /etc/fai/fai.conf
-(package fai-client) grml uses /etc/grml/fai/fai.conf instead. For more details
-see below. To get an idea how another configuration or example files could look
-like check out /usr/share/doc/fai-doc/examples/simple/ (provided by Debian package
-fai-doc). /usr/share/doc/fai-doc/fai-guide.html/ch-config.html also provides
-documentation regarding configuration possibilities.
+namespace as the FAI packages itself. This ensures that grml-live does not clash
+with your usual FAI configuration, so instead of /etc/fai/fai.conf (package
+fai-client) grml uses /etc/grml/fai/fai.conf instead. For more details see
+below. To get an idea how another configuration or example files could look like
+check out /usr/share/doc/fai-doc/examples/simple/ (provided by Debian package
+fai-doc). Furthermore /usr/share/doc/fai-doc/fai-guide.html/ch-config.html
+provides documentation regarding configuration possibilities.
 
   /usr/sbin/grml-live
 
-Script for the main build process (being a wrapper around FAI currently).
-Requires root permissions for execution.
+Script for the main build process. Requires root permissions for execution.
+
+  /etc/grml/grml-live.conf
+
+Main configuration file for grml-live which should be considered as a reference
+configuration file only. Please use /etc/grml/grml-live.local for local
+configuration instead.
+
+  /etc/grml/grml-live.local
+
+All the local configuration should go to this file. This file overrides any
+defaults of grml-live. Configurations via /etc/grml/grml-live.local are preferred
+over the ones from /etc/grml/grml-live.conf. If you want to override settings
+from /etc/grml/grml-live.local as well you have to specify them on the grml-live
+commandline.
 
   /etc/grml/fai/fai.conf
 
-Main configuration file which specifies where all the configuration files and
-scripts for FAI/grml-live can be found. By default it is
-FAI_CONFIGDIR=/etc/grml/fai/config, a directory shipped by grml-live
-out-of-the-box so you shouldn't have to configure anything in this file.
+Main configuration file for FAI which specifies where all the configuration
+files and scripts for FAI/grml-live can be found. By default the configuration
+variables are FAI_CONFIG_SRC=file:///etc/grml/fai/config and
+FAI_CONFIGDIR=/etc/grml/fai/config - both pointing to a directory shipped by
+grml-live out-of-the-box so you shouldn't have to configure anything in this
+file.
 
   /etc/grml/fai/make-fai-nfsroot.conf
 
-TODO: documentation
+This file is used by make-fai-nfsroot(8) only. Usually you don't have to change
+anything inside this file. If you want to modify NFSROOT though you can adjust
+it there.
 
   /etc/grml/fai/NFSROOT
 
-TODO: documentation
+This file specifies the package list for creating the NFSROOT.
 
   /etc/grml/fai/apt/sources.list
 
-This file specifies which mirrors should be used for retreiving the Debian
-packages used for creating the ISO. If you want to use a local mirror you have
-to adjust this file.
+This file specifies which mirrors should be considered for retrieving the Debian
+packages when creating the main chroot (including all the software you would
+like to see included). Important: this file should *not* be adjusted manually!
+Instead use the GRML_LIVE_SOURCES variable inside /etc/grml/grml-live.conf or
+/etc/grml/grml-live.local which modifies /etc/grml/fai/apt/sources.list
+on-the-fly via grml-live then. If you want to generally adjust apt configuration
+use FAI's fcopy command with /etc/grml/fai/config/files instead.
 
   /etc/grml/fai/config/
 
@@ -199,118 +404,719 @@ through files.
 
   /etc/grml/fai/config/hooks/
 
-This directory provides files for customizing the build process through hooks.
+This directory provides files for customising the build process through hooks.
 Hooks are user defined programs or scripts, which are called during the
 installation process.
 
   /etc/grml/fai/config/package_config/
 
-File with lists of software packages to be installed or removed.  The different
-classes describe what should find its way to your ISO.  When running 'fai -v -C
-/etc/grml/fai -cGRMLBASE dirinstall ...' only the files from the directory GRML/
-will be taken, if you use 'fai -v -C /etc/grml/fai -cGRMLBASE,FOOBAR dirinstall
-...' then the files of GRML/ **plus** the files from FOOBAR/ will be taken. So
-just create a new class to adjust it to your needs. Please notice that the
-directory GRML contains a package list defining a minimum but still reasonable
-package configuration.
+Directory with lists of software packages to be installed or removed.  The
+different classes describe what should find its way to your ISO.  When running
+"grml-live -c GRMLBASE,GRML_SMALL,I386 ..." only the configuration of GRMLBASE,
+GRML_SMALL and and I386 will be taken. If you use 'grml-live -c
+GRMLBASE,GRML_SMALL,I386,FOOBAR ...' then the files of GRMLBASE, GRML_SMALL,
+I386 **plus** the files from FOOBAR will be taken. So just create a new class to
+adjust the package selection according to your needs.  Please notice that the
+directory GRMLBASE contains a package list defining a minimum but still
+reasonable package configuration.
 
   /etc/grml/fai/config/scripts/
 
-Scripts for customising the ISO within build process.
-
-  /etc/grml/fai/files/
-
-This directory provides files used inside the scripts of
-/etc/grml/fai/config/scripts/*. For a full documentation what happens with the
-files please refer to the source of the scripts.
+Scripts for customising the ISO within the build process.
 
   /etc/grml/fai/live-initramfs/
 
 This directory provides the files used for building the initramfs/initrd via
 live-initramfs(8).
 
+[[log-files]]
+Available log files
+-------------------
+
+grml-live itself logs to /var/log/grml-live.log. Unless you set PRESERVE_LOGFILE
+in your grml-live configuration the file is cleared on each new invocation of
+grml-live.
+
+The FAI part of grml-live logs to /var/log/fai/$HOSTNAME/ - so the
+default being /var/log/fai/grml/.
+
+If you are using the grml-live buildd you will find the logs of the grml-live
+run at /var/log/grml-buildd.stdout and /var/log/grml-buildd.stderr.
+
+If you want to store build information in a database just install the
+grml-live-db Debian package. Further details available in the grml-live-db
+manpage.
+
+[[requirements]]
 Requirements for the build system
 ---------------------------------
 
-* any Debian based system should be sufficient (if not please send a bug
-report), for example a grml2hd harddisk installation ships all you need
+* any Debian based system should be sufficient (if it doesn't work it's a bug,
+please send us a bug report then) [a usual
+link:http://grml.org/grml2hd/[grml2hd] harddisk installation (using grml or
+grml-medium) ships all you need]. Check out <<deploy-on-debian,How do I deploy
+grml-live on a plain Debian installation>> for details how to set up grml-live
+on a plain, original Debian system.
 
 * enough free disk space; at least 800MB are required for a minimal grml-live
-run (\~400MB for the chroot [$CHROOT_TARGET], \~150MB for the build target
-[$BUILD_TARGET] and \~150MB for the resulting ISO [$ISO_TARGET] plus some
-temporary files)
+run (\~400MB for the chroot [$CHROOT_OUTPUT], \~150MB for the build target
+[$BUILD_OUTPUT] and \~150MB for the resulting ISO [$ISO_OUTPUT] plus some
+temporary files), if you plan to use GRML_FULL you should have at least 4GB of
+total free disk space
 
-* fast network access for retreiving the Debian packages used for creating the
+* fast network access for retrieving the Debian packages used for creating the
 chroot (check out "local mirror" and "NFSROOT" to workaround this problem as far
-as possiblbe)
+as possible)
+
+For further information see next section.
+
+[[X8]]
+[[current_state]]
+Current state of grml-live with squashfs-tools and kernel
+---------------------------------------------------------
+
+Use squashfs-tools >=4.2-1 (available from Grml repositories as well as from
+Debian/unstable) to build Grml (based) ISOs featuring kernel version
+2.6.38-grml[64].
+
+////////////////////////////////////////////////////////////////////////////////
+Difference between squashfs-lzma-tools, squashfs-lzma-tools4 and squashfs-tools
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Whereas the ZLIB compression is much faster in the build process, the LZMA
+compression provides a smaller resulting ISO. If you're wondering: the official
+Grml builds use the LZMA compression.
+
+Squashfs-tools was introduced in Debian and once provided support for LZMA
+compression. Sadly LZMA compression within squashfs-tools became unsupported and
+therefore squashfs-lzma-tools[4] had to be introduced and maintained by the Grml
+team. Different kernel versions provide different squashfs file formats. Kernel
+versions until 2.6.28-grml[64] used the 3.x file format but those outdated
+kernels aren't supported by grml-live automatically anymore nowdays (manual
+handling through SQUASHFS_BINARY possible though). Kernel versions
+2.6.31-grml[64] and 2.6.33-grml[64] use openwrt's squashfs lzma file format
+version 4. Kernel versions starting with 2.6.35-grml[64] use the mainline ondisk
+file format version 4.
+
+If you're wondering which package supports what, here's a short overview:
+
+* squashfs-lzma-tools4 4.0-x: ZLIB as default, LZMA support via '-comp lzma'
+option (enabled by grml-live by default), file format version 4 (mainline
+version), package maintained and available from Grml, recommended for current
+grml-live builds featuring kernels >=2.6.35-grml[64]
+
+* squashfs-lzma-tools 4.0-2: ZLIB as default, LZMA support via '-lzma' option
+(enabled by grml-live by default), file format version 4 (openwrt style),
+package maintained and available from Grml, recommended for any grml-live builds
+with kernel versions 2.6.31-grml[64] and 2.6.33-grml[64]
+
+* squashfs-tools 1:4.0-x: ZLIB as default, no LZMA support/options, file format
+version 4, package maintained and available from Debian, recommended only for
+ZLIB-only builds of any grml-live builds with kernel versions >=2.6.31-grml[64]
+
+Outdated, JFTR:
+
+* squashfs-tools 1:3.3-7: ZLIB as default, no LZMA support/options, file format
+version 3
+
+* squashfs-tools 1:3.2r2-9exp1: LZMA as default, ZLIB support via '-nolzma'
+option, file format version 3
+
+* squashfs-lzma-tools 3.3-1: LZMA as default, ZLIB support via '-nolzma' option,
+file format version 3
+
+Now, depending on the kernel version you want to use you need different versions
+of squashfs-tools/squashfs-lzma-tools[4]. Yes, that's a mess (don't ask how much
+this sucks for us developers) - though we're putting lots of effort into our
+toolchain to automatically handle this for you through the grml-live build
+system and provide proper documentation. The situation is supposed to calm down
+with the recent integration of the squashfs file format 4 in the mainline
+kernel. Support for LZMA is pending and as soon as it's available mainline this
+should dramatically simplify the situation for developers as well as users.
+
+[TIP]
+If you want to force usage of a specific mksquashfs binary just set the
+SQUASHFS_BINARY configuration/environment variable. Set SQUASHFS_OPTIONS for
+customizing the options that should be used by the mksquashfs binary during
+build process.
+
+Using squashfs-lzma-tools4 4.0-1 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+squashfs-lzma-tools4 4.0-1 is available via the Grml repositories. It provides
+the mksquashfs-lzma4 and unsquashfs-lzma4 binaries. The package does NOT
+conflict with neither Debian's squashfs-tools package nor Grml's
+squashfs-lzma-tools package, so you can install all of them at the same time and
+the build system will try to figure out the best matching binary automatically
+for you.
+
+The packages can be downloaded from
+link:http://deb.grml.org/pool/main/s/squashfs-lzma-tools4/[http://deb.grml.org/pool/main/s/squashfs-lzma-tools4/]
+
+It provides support for the new squashfs file format version 4 (as available in
+mainline, so *not* the one being used by squashfs-lzma-tools and kernel
+2.6.33-grml) and therefore requires kernel versions starting with
+2.6.35-grml[64]. It supports LZMA as well as ZLIB compression. Just use the
+defaults for enabling LZMA or use grml-live's '-z' option if you want to use
+ZLIB compression instead.
+
+* Kernel 2.6.31-grml[64]: works with ZLIB compression, fails with LZMA
+* Kernel 2.6.33-grml[64]: works with ZLIB compression, fails with LZMA
+* Kernel 2.6.35-grml[64]: works with ZLIB *and* LZMA compression
+* Kernel 2.6.36-grml[64]: works with ZLIB *and* LZMA compression
 
-Known TODOs
------------
+[NOTE]
+squashfs-tools >=4.1-1 and/or squashfs-lzma-tools4 are the recommended package
+for building up2date ISOs with grml-live! Please use other squashfs-* packages
+only if you want to build live systems providing kernel versions older than
+2.6.35-grml*. Use squashfs-tools >=4.1-1 or squashfs-lzma-tools4 from Grml if
+you want to remaster any Grml releases MORE RECENT than 2010.04.
+
+Using squashfs-lzma-tools 4.0-2 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+squashfs-lzma-tools 4.0-2 is available via the Grml repositories. It provides
+the mksquashfs-lzma and unsquashfs-lzma binaries. The package does NOT conflict
+with Debian's squashfs-tools package (you can install both of them at the same
+time).
+
+The packages can be downloaded from
+link:http://deb.grml.org/pool/main/s/squashfs-lzma-tools/[http://deb.grml.org/pool/main/s/squashfs-lzma-tools/]
+
+It provides support for the new squashfs file format version 4 (based on openwrt
+patches, this is *not* the mainline file format that's being used by kernel
+2.6.35-grml and squashfs-lzma-tools4!) and therefore requires kernel versions
+newer than 2.6.28-grml[64]. It supports LZMA as well as ZLIB compression. Just
+use the defaults for enabling LZMA or use grml-live's '-z' option if you want to
+use ZLIB instead.
+
+* Kernel \<=2.6.28-grml[64]: does not work
+* Kernel 2.6.31-grml[64]: works
+* Kernel 2.6.33-grml[64]: works
+* Kernel 2.6.35-grml[64]: works for ZLIB compression, fails for LZMA
 
-* make sure the suite-target adjusts the mirror definitions according (working
-also vice versa!) and you can define the mirror more central (without having to
-deal with /etc/grml/grml-live.conf, /etc/grml/fai/make-fai-nfsroot.conf and
-/etc/grml/fai/apt/sources.list; debootstrap [FAI_DEBOOTSTRAP] vs. apt inside
-chroot [sources.list] as well)
+[NOTE]
+Please use squashfs-lzma-tools >=4.0-2 from Grml only if you want to remaster
+Grml releases 2009.10 and 2010.04 or live systems with their according kernel
+versions.
 
-* make sure $TARGET is mounted rw,suid,dev
+Using squashfs-tools 1:4.0-X on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* write a step-by-step guide **how** to adjust **what** at **which** place
+squashfs-tools >=1:4.0-1 is available in Debian/unstable and Debian/testing. It
+provides the mksquashfs and unsquashfs binaries. The package does NOT conflict
+neither with the squashfs-lzma-tools 4.0-2 package nor with the
+squashfs-lzma-tools4 package (so you can install all of them at the same time).
 
-* add support for amd64 [gebi?] + ppc [formorer?] (and identify all packages
-that are arch specific so we have a clean package list in all classes)
+The packages can be downloaded from
+link:ftp://ftp.de.debian.org/debian/pool/main/s/squashfs-tools/[ftp://ftp.de.debian.org/debian/pool/main/s/squashfs-tools/]
 
-* support different grml-flavours through classes right out-of-the-box (being:
-grml, grml64, grml-small (in progress) for at least x86, amd64 and ppc)
+It provides support for the new squashfs file format version 4 and therefore
+requires kernel versions newer than 2.6.28-grml[64].
 
-* support signed apt repositories (currently it's deactivated via FAI's
-FAI_ALLOW_UNSIGNED=1 for some packages in the toolchain)
+It does NOT support LZMA compression (dropped with
+link:http://packages.debian.org/changelogs/pool/main/s/squashfs-tools/current/changelog[version
+1:3.3-4] and not yet re-integrated yet, see
+link:http://bugs.debian.org/594595[#594595]). If you need LZMA support please
+use Grml's squashfs-lzma-tools[4] (see sections above) instead.
 
-* explain (and provide configuration for) use of NFSROOT
+* Kernels \<=2.6.28-grml[64]: does not work
+* Kernel 2.6.31-grml[64]: works (ZLIB only)
+* Kernel 2.6.33-grml[64]: works (ZLIB only)
+* Kernel 2.6.35-grml[64]: works (ZLIB only)
+* Kernel 2.6.36-grml[64]: works (ZLIB only)
 
-* support setting stuff like ISO name, version,... on-the-fly (especially for
-stuff inside boot/isolinux/*)
+[NOTE]
+Please use squashfs-tools between 4.0-1 and 4.1-1 only if you want to remaster
+Grml releases starting with 2009.10 using the ZLIB compression, please use other
+squashfs packages otherwise instead.
 
-* support "final builds" (including stuff like generating md5sums, gpg,...)
+Outdated, JFTR:
 
-* the grml-live class(es) should send output as used inside FAI as well (so it's
-not as verbose unless you specify it, make it configurable)
+Using squashfs-lzma-tools 3.3-1 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* provide possibility for cleanup of all created build directories and
-a smart summary of the buildprocess (including "took ... minutes/seconds to
-build...)
+squashfs-lzma-tools 3.3-1 from the Grml repository supports kernel
+2.6.26-grml[64] and 2.6.28-grml[64] using both LZMA and ZLIB (-nolzma)
+compression.
 
-* support hooks to allow further customisation of the build process
+The packages can be downloaded from
+link:http://deb.grml.org/pool/main/s/squashfs-lzma/[http://deb.grml.org/pool/main/s/squashfs-lzma/].
 
-* test the package on non-grml systems (and maybe even non-Debian) as well
+[NOTE]
+Please use squashfs-lzma-tools 3.3-1 only if you want to remaster Grml releases
+2008.11 or 2009.05.
 
-Debian package
---------------
+Using squashfs-tools 1:3.3-7 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+squashfs-tools 1:3.3-7 is available through
+http://grml.org/squashfs/squashfs-tools_3.3-7_i386.deb (for x86) or
+http://grml.org/squashfs/squashfs-tools_3.3-7_amd64.deb (for amd64) [both build
+on and for Debian/etch but working with testing and unstable as well].
+
+Please notice that squashfs-tools 1:3.3-7 does NOT support LZMA compression at
+all (so you won't be able to remaster release 2008.11 and 2009.05 using LZMA for
+example). The -nolzma option of mksquashfs is not available therefore (even
+though grml-live will deactivate it for you automatically anyway). Please use
+squashfs-lzma-tools instead.
+
+* Kernel 2.6.23-grml: does NOT work, please use squashfs-tools 1:3.2r2-9exp1
+                      instead if you still want to use kernel 2.6.23 (not
+                     recommended)
+* Kernel 2.6.26-grml: works (without LZMA compression only of course!)
+* Kernel 2.6.28-grml: works (without LZMA compression only of course!)
+
+Using squashfs-tools 1:3.2r2-9exp1 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+squashfs-tools 1:3.2r2-9exp1 is available via the grml-testing repository,
+running:
+
+  # aptitude install squashfs-tools=1:3.2r2-9exp1
+
+or directly via downloading the files
+http://grml.org/squashfs/squashfs-tools_3.2r2-9exp1_i386.deb (for x86) or
+http://grml.org/squashfs/squashfs-tools_3.2r2-9exp1_amd64.deb (for amd64).
+
+Using with ZLIB compression (SQUASHFS_OPTIONS='-nolzma' or -z
+option in grml-live cmdline):
+
+* Kernel 2.6.23-grml: works
+* Kernel 2.6.26-grml: works
+* Kernel 2.6.28-grml: supposed to work (not verified though)
+
+Using with LZMA compression:
+
+* Kernel 2.6.23-grml: works
+* Kernel 2.6.26-grml: does NOT work, please use ZLIB mode instead or switch
+  to Debian package squashfs-lzma-tools 3.3-1 (see section above).
+* Kernel 2.6.28-grml: does NOT work, please use ZLIB mode instead or switch
+  to Debian package squashfs-lzma-tools 3.3-1 (see section above).
+//////////////////////////////////////////////////////////////////////////////////
+
+[[faq]]
+FAQ
+---
+
+[[deploy-on-debian]]
+How do I deploy grml-live on a plain Debian installation?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The easiest way to get a running grml-live setup is to install Grml or
+grml-medium using grml2hd (for example inside KVM, Virtualbox, VMware,... if you
+don't want to run it on a physical system). Of course using grml-live on a
+plain, original Debian installation is supported as well. So there we go.
+
+What we have: plain, original Debian Lenny (5.0).
+
+What we want: build a grml-medium ISO based on Debian/squeeze for the i386
+architecture using grml-live.
+
+[IMPORTANT]
+
+If you encounter any problems while booting the resulting ISO please be aware of
+<<current_state,the 'current state of grml-live with squashfs-tools and kernel'
+section>>.
+
+Instructions
+^^^^^^^^^^^^
+
+  # adjust sources.list:
+  cat >> /etc/apt/sources.list << EOF
+
+  # grml stable repository:
+    deb     http://deb.grml.org/ grml-stable  main
+  # deb-src http://deb.grml.org/ grml-stable  main
+
+  # grml testing/development repository:
+    deb     http://deb.grml.org/ grml-testing main
+  # deb-src http://deb.grml.org/ grml-testing main
+  EOF
+
+  # adjust apt-pinning (only prefer squashfs stuff from grml):
+  cat >> /etc/apt/preferences << EOF
+  Package: *
+  Pin: origin deb.grml.org
+  Pin-Priority: 1
+
+  Package: squashfs-tools
+  Pin: origin deb.grml.org
+  Pin-Priority: 996
+  EOF
+
+  # get keyring for apt:
+  apt-get update
+  apt-get --allow-unauthenticated install grml-debian-keyring
+
+  # optionally(!) install basefile so we don't have to build basic
+  # chroot from scratch, grab from http://daily.grml.org/
+  # mkdir -p /etc/grml/fai/config/basefiles/
+  # mv base.tgz /etc/grml/fai/config/basefiles/I386.tar.gz
+  # mv base64.tgz /etc/grml/fai/config/basefiles/AMD64.tar.gz
+
+  # install relevant tools
+  # please check out http://grml.org/grml-live/#current_state when encountering problems!
+  apt-get -o APT::Install-Recommends=false install grml-live squashfs-tools
+
+  # adjust grml-live configuration for our needs:
+  cat > /etc/grml/grml-live.local << EOF
+  ## want a faster build process and don't need smaller ISOs?
+  ## if so use zlib compression
+  # SQUASHFS_OPTIONS="-comp gzip -b 256k"
+  ## want to use a specific squashfs binary?
+  # SQUASHFS_BINARY='/usr/bin/mksquashfs'
+  # install local files into the chroot
+  CHROOT_INSTALL="/etc/grml/fai/chroot_install"
+  ## adjust if necessary (defaults to /grml/grml-live):
+  ## OUTPUT="/srv/grml-live"
+  FAI_DEBOOTSTRAP="squeeze http://cdn.debian.net/debian/"
+  ARCH="i386"
+  CLASSES="GRMLBASE,GRML_MEDIUM,I386"
+  # PRESERVE_LOGFILE='1'
+  # ZERO_FAI_LOGFILE='1'
+  GRML_LIVE_SOURCES="
+  deb http://deb.grml.org/            grml-stable  main
+  deb http://deb.grml.org/            grml-testing main
+  deb http://cdn.debian.net/debian squeeze main contrib non-free
+  "
+  EOF
+
+  # just optional(!) - upgrade FAI to latest available version:
+  cat >> /etc/apt/sources.list << EOF
+  # fai:
+    deb http://fai-project.org/download lenny koeln
+  EOF
+
+  # get gpg key of FAI repos and install current FAI version:
+  gpg -a --recv-keys AB9B66FD; gpg -a --export AB9B66FD | apt-key add -
+  apt-get update
+  apt-get install fai-client fai-server fai-doc
+
+That's it. Now invoking 'grml-live -V' should build the ISO.  If everything
+worked as expected the last line of the shell output should look like:
+
+  [*] Successfully finished execution of grml-live [running 687 seconds]
+
+and the ISO can be found inside /grml-live/grml-live/grml_isos/ then.
+
+[[fai-on-etch]]
+Help, I'm using Debian etch and I don't have FAI version >3.2
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  wget http://fai-project.org/download/etch/fai-client_3.2.8_all.deb \
+       http://fai-project.org/download/etch/fai-server_3.2.8_all.deb \
+       http://fai-project.org/download/etch/fai-doc_3.2.8_all.deb
+  dpkg -i fai-client_3.2.8_all.deb fai-server_3.2.8_all.deb fai-doc_3.2.8_all.deb
+
+or check out the link:http://fai-project.org/[FAI-homepage] for
+further details.
+
+[[how-to-debug]]
+I've problems with the build process. How to start debugging?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Check out the logs inside /var/log/fai/... If you think it's a bug in grml-live
+send a copy of your config, logs and the commandline with a short problem
+description to <mika@grml.org>:
+
+  # history | grep grml-live > /etc/grml/grml_live.cmdline
+  # tar zcf grml_live_problem.tar.gz /etc/grml/grml-live.conf \
+            /etc/grml/grml_live.cmdline /etc/grml/grml-buildd.conf \
+            /var/log/fai /etc/grml/fai
+  -> finally mail grml_live_problem.tar.gz to <mika@grml.org>
+
+If you need help with grml-live or would like to see new features as part of
+grml-live you can get commercial support via
+link:http://grml-solutions.com/[Grml Solutions].
+
+[[lzma-vs-zlib]]
+How much is the difference between LZMA and ZLIB compression?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ISO size (bs = blocksize):
+
+[width="45%",cols="3,^2,^2"]
+|============================================================
+|ISO                   |LZMA (256kB bs) |ZLIB
+|grml_sid              |666M | 771M
+|grml_squeeze          |659M | 761M
+|grml_lenny            |624M | 723M
+|grml64_sid            |677M | 791M
+|grml64_squeeze        |671M | 785M
+|grml64_lenny          |639M | 745M
+|grml-medium_sid       |208M | 236M
+|grml-medium_squeeze   |206M | 234M
+|grml-medium_lenny     |193M | 220M
+|grml64-medium_sid     |213M | 245M
+|grml64-medium_squeeze |213M | 244M
+|grml64-medium_lenny   |201M | 231M
+|grml-small_sid        |102M | 118M
+|grml-small_squeeze    |101M | 117M
+|grml-small_lenny      |97M  | 112M
+|grml64-small_sid      |103M | 120M
+|grml64-small_squeeze  |103M | 120M
+|grml64-small_lenny    |99M  | 116M
+|============================================================
+
+Build time of grml-medium's squashfs file (depends on your system, though just
+to get the ratio between the different options):
+
+* 10 minutes and 4 seconds with LZMA default blocksize (128k)
+* 7 minutes 27 seconds with LZMA and blocksize 256k
+* 6 minutes and 8 seconds with LZMA blocksize 512k
+* 1 minute and 40 seconds with ZLIB
+
+[[install-local-files]]
+How to I install further files into the chroot/ISO?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Just point the configuration variable CHROOT_INSTALL to the directory which
+provides the files you would like to install. Note that the files are installed
+under '/' in the chroot - so you have to create the rootfs structure on your
+own. Usage example:
+
+  echo "CHROOT_INSTALL=\$GRML_FAI_CONFIG/chroot_install" >> /etc/grml/grml-live.local
+  mkdir -p /etc/grml/fai/chroot_install/usr/src/
+  wget example.org/foo.tar.gz
+  mv foo.tar.gz /etc/grml/fai/chroot_install/usr/src/
+  grml-live ...
+
+[[local-debian-mirror]]
+Can I use my own (local) Debian mirror?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Sure. Just adjust the variables GRML_LIVE_SOURCES and FAI_DEBOOTSTRAP (if not
+already using NFSROOT's base.tgz) inside /etc/grml/grml-live.conf according to
+your needs. Please don't forget that you should use the grml servers as well
+(see default configuration) so all the grml packages can be downloaded as well.
+
+If you want to use a local (for example NFS mount) mirror additionally, just
+adjust MIRROR_DIRECTORY and MIRROR_SOURCES inside /etc/grml/grml-live.conf as
+well.
+
+Unless you specify GRML_LIVE_SOURCES and/or FAI_DEBOOTSTRAP the default from
+/etc/grml/fai/apt/sources.list and /etc/grml/fai/make-fai-nfsroot.conf will be
+taken. If you customise the variables in /etc/grml/grml-live.conf then the two
+files will be adjusted during runtime automatically.
+
+If MIRROR_DIRECTORY and MIRROR_SOURCES are specified the local mirror will be
+taken as first entry in the generated sources.list so it's preferred over
+non-local mirrors. Using a fallback mirror (via providing several mirrors in
+GRML_LIVE_SOURCES as used by default) is a recommended setting.
+
+[[add-additional-debian-packages]]
+How do I add additional Debian package(s) to my CD/ISO?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Just create a new class (using the package_config directory):
+
+  # cat > /etc/grml/fai/config/package_config/MIKA << EOF
+  PACKAGES aptitude
+
+  vim
+  another_name_of_a_debian_package
+  and_another_one
+  EOF
+
+and specify it when invoking grml-live then:
+
+  # grml-live -c GRMLBASE,GRML_SMALL,I386,MIKA
+
+[[reset-grml-live-configuration]]
+I fscked up my grml-live configuration. How do I reset it to the defaults?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Notice: this deletes all your grml-live configuration files. If that's really
+what you are searching for just run:
+
+  rm -rf /etc/grml/fai /etc/grml/grml-live.conf
+  dpkg -i --force-confnew --force-confmiss /path/to/grml-live_..._all.deb
+
+[NOTE]
+
+If you don't control your /etc using a version control system (VCS) yet it's a
+good chance to start using it now. Check out
+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/]
+for more details how to maintain /etc using the mercurial VCS.
+
+[[create-a-base-tgz]]
+How do I create a base.tgz for use as NFSROOT?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First of all build the chroot system:
+
+  mkdir /tmp/nfsroot && cd /tmp/nfsroot
+  debootstrap squeeze /tmp/nfsroot/ http://cdn.debian.net/debian
+  tar zcf base.tgz ./
+
+Then check out where your NFSROOT is located:
+
+  # grep '^NFSROOT' /etc/grml/fai/make-fai-nfsroot.conf
+  NFSROOT=/grml/fai/nfsroot
+
+So as /grml/fai/nfsroot is your NFSROOT place the file under
+/grml/fai/nfsroot/live/filesystem.dir/var/tmp/:
+
+  mv base.tgz /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz
+
+or even better use /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz instead.
+Use I386 as $CLASSNAME for i386 builds and AMD64 for amd64 builds.
+
+Now running "grml-live ..." will use this file as main system instead of
+executing debootstrap. Check out the output for the following lines if using
+NFSROOT:
+
+  [...]
+  Calling task_extrbase
+  Unpacking Debian base archive
+  Extracting /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz
+  Calling task_mirror
+  [...]
+
+or if using /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz for:
 
-Debian packages will be available through the grml-repository at
-link:http://deb.grml.org/[http://deb.grml.org/] as soon as the grml-team
-considers grml-live as stable enough. In the meantime just build the package on
-your own:
+  [...]
+  ftar: extracting /etc/grml/fai/config/basefiles///AMD64.tar.gz to
+  /grml-live/grml-live_20071029.22138/grml_chroot//
+  [...]
 
-  hg clone http://hg.grml.org/grml-live
+[TIP]
+Existing base.tgz can be found at http://daily.grml.org/
+
+[[apt-cacher]]
+Set up apt-cacher / apt-cacher-ng for use with grml-live
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Make sure /etc/grml/grml-live.conf provides according GRML_LIVE_SOURCES and
+FAI_DEBOOTSTRAP:
+
+  # cat /etc/grml/grml-live.conf
+  [...]
+  GRML_LIVE_SOURCES="
+  deb http://localhost:3142/deb.grml.org grml-stable  main
+  deb http://localhost:3142/deb.grml.org grml-testing main
+  deb http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free
+  "
+  [...]
+  FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free"
+
+Make sure apt-cacher / apt-cacher-ng is running ('/etc/init.d/apt-cacher
+restart' or '/etc/init.d/apt-cacher-ng restart'). That's it.  All downloaded
+files will be cached in /var/cache/apt-cacher/ or /var/cache/apt-cacher-ng then.
+
+[[approx]]
+Set up approx for use with grml-live
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Make sure /etc/grml/grml-live.conf provides according GRML_LIVE_SOURCES and
+FAI_DEBOOTSTRAP:
+
+  # cat /etc/grml/grml-live.conf
+  [...]
+  GRML_LIVE_SOURCES="
+  deb http://localhost:9999/grml            grml-stable  main
+  deb http://localhost:9999/grml            grml-testing main
+  deb http://localhost:9999/debian squeeze  main contrib non-free
+  "
+  FAI_DEBOOTSTRAP="squeeze http://localhost:9999/debian"
+
+Configure approx:
+
+  # cat /etc/approx/approx.conf
+  [...]
+  debian http://ftp.at.debian.org/debian
+  grml   http://deb.grml.org/
+
+Don't forget to restart approx (/etc/init.d/approx restart). That's it.
+All downloaded files will be cached in /var/cache/approx now.
+
+[[revert_manifold]]
+How do I revert the manifold feature from an ISO?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The so called manifold feature Grml ISOs use by default allows to use the same
+ISO for CD boot and USB boot. If you notice any problems when booting just
+revert the manifold feature running:
+
+  % dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc
+
+To switch from manifold to isohybrid mode (an alternative approach provided by
+syslinux) then just execute:
+
+  % isohybrid grml.iso
+
+[[basetgz]]
+How to I create a base tar.gz (I386.tar.gz or AMD64.tar.gz)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Execute the following commands (requires root):
+
+  ARCH='amd64' # replace with i386 if necessary
+  SUITE='squeeze' # using the current stable release should always work
+  debootstrap --arch "$ARCH" --exclude=info,tasksel,tasksel-data "$SUITE" "$ARCH" http://debian.netcologne.de/debian
+  cd "$ARCH"
+  rm var/cache/apt/archives/*.deb
+  tar zcf ../"${ARCH}".tar.gz *
+
+And finally place the generated tarball in /etc/grml/fai/config/basefiles/ (note
+that it needs to be uppercase letters matching the class names, so: AMD64.tar.gz
+for amd64 and I386.tar.gz for i386).
+
+[[question]]
+I've a question which isn't answered by this document
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Don't hesitate to contact the author: <mika@grml.org>
+
+[[download]]
+Download / install grml-live as a Debian package
+------------------------------------------------
+
+Debian packages are available through the grml-repository at
+link:http://deb.grml.org/pool/main/g/grml-live/[deb.grml.org].  If you want to
+build a Debian package on your own (using for example a specific version or the
+current development tree), just execute:
+
+  git clone git://git.grml.org/grml-live
   cd grml-live
   debuild -us -uc
 
+[[source]]
 Source
 ------
 
 The source of grml-live is available at
-link:http://hg.grml.org/grml-live/[http://hg.grml.org/grml-live/]
+link:http://git.grml.org/?p=grml-live.git[http://git.grml.org/?p=grml-live.git]
+
+[[todo-list]]
+TODO list
+---------
+
+Check out the link:http://git.grml.org/?p=grml-live.git;a=blob;f=TODO;hb=HEAD[TODO file].
 
+[[bugs]]
 Bugs
 ----
 
 Please report feedback, link:http://grml.org/bugs/[bugreports] and wishes
 link:http://grml.org/contact/[to the grml-team]!
 
+[[documentation]]
+Documentation
+-------------
+
+The most recent grml-live documentation is available online at
+http://grml.org/grml-live/ and for offline reading also available
+in different formats:
+
+* http://grml.org/grml-live/grml-live.epub
+* http://grml.org/grml-live/grml-live.pdf
+
+[[authors]]
 Authors
 -------
-Michael Prokop <mika@grml.org>.
+Michael Prokop <mika@grml.org>
 
 /////////////////////////////////////
 // vim:ai tw=80 ft=asciidoc expandtab