docs: simplify and improve base.tgz instructions
[grml-live.git] / docs / grml-live.txt
index 932e7c6..eb92388 100644 (file)
@@ -4,25 +4,24 @@ grml-live(8)
 Name
 ----
 
-grml-live - build framework based on FAI for generating a grml and Debian based
+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>] [-s <suite>] [-Fvh]
-
-*******************************************************************************
-Important! This document is growing as requested. If you have questions which
-aren't answered by this document yet please let me know: <mika@grml.org>!
-*******************************************************************************
+grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [
+-e <extract_iso_name>] [-g <grml_name>] [-i <iso_name>] [
+-o <output_directory>] [-r <release_name>] [-s <suite>] [
+-t <template_directory>] [-v <version_number>] [-U <username>] [
+-AbBFnNqQuVz]
 
 Description
 -----------
 
-grml-live provides the build system for creating a grml and Debian based Linux
+grml-live provides the build system for creating a Grml and Debian based Linux
 Live-CD. The build system is based on
-link:http://www.informatik.uni-koeln.de/fai/[FAI] (Fully Automatic
+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.
@@ -34,8 +33,9 @@ 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
+provides and uses ${GRML_FAI_CONFIG} which is pointing to /etc/grml/fai by default
+(unless overridden using the ''-D'' option). 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]
@@ -45,69 +45,223 @@ 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) and approx(8). To avoid downloading the base system again
-and again check out FAI's NFSROOT (see FAQ of this document for details).
+sample configuration), apt-cacher(1) and approx(8). To avoid downloading the
+base system again and again check out <<create-a-base-tgz,the base tar.gz
+feature>>.
 
 Options
 -------
 
+  -A::
+
+Clean up all output directories before running the build process. After finishing,
+clean up the Chroot target and Build target directories.
+
+  -a **ARCHITECTURE**::
+
+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.
+
+  -b::
+
+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::
+
+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**::
 
 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 total ISO size) for x86 (32bit).
+the classes GRMLBASE, GRML_FULL and I386/AMD64 (depending on system
+architecture) are assumed, resulting in a base system of about 350MB
+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_FULL 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 ${GRML_FAI_CONFIG}/config. Instead use
+/etc/grml/grml-live.local for configuration stuff used inside
+${GRML_FAI_CONFIG}/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'
+
+  -D **CONFIGURATION_DIRECTORY**::
+
+The specified directory is used as configuration directory for grml-live and its
+FAI. By default /etc/grml/fai is used as default configuration directory.  If
+you want to have different configuration scripts, package definitions, etc. with
+without messing with the global configuration under /etc/grml/fai provided by
+grml-live this option provides you the option to use your own configuration
+directory. This directory is what's being referred to as ${GRML_FAI_CONFIG}
+throughout this documentation.
+
+  -e **EXTRACT_ISO_NAME**::
+
+The squashfs inside the specified ISO will be extracted and used as the chroot.
+This option is useful for remastering, in combination with -A and -b or -u.
 
-  -s **SUITE**::
+  -F::
 
-Specify the Debian suite you want to use for your live-system.  Defaults to
-"etch" (being current Debian/stable). Supported values are: etch, lenny, sid,
-stable, testing, unstable.
+Force execution and do not prompt for acknowledgment of configuration.
+
+  -g **GRML_NAME**::
 
-  -t **TARGET_DIRECTORY**::
+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.
+
+  -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.
+
+  -N::
+
+Bootstrap the chroot without building bootloader, squashfs, or finalizing the
+ISO. Use this option if installation of some packages fails, you want to run
+custom commands or similar.
+The main use of this option is to save time by skipping stages which aren't
+necessary for bootstrapping the chroot and which would get executed more than
+once when iterating through the initial bootstrapping.
+Alternatively, use this option as a test run of grml-live. Once you are
+satisfied with the state of your grml_chroot, use grml-live **-u** to build the
+remaining stages and finalize the ISO.
+
+  -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).
 
-  -F::
+  -q::
 
-Force execution and do not prompt for acknowledgment of configuration.
+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'.
 
-  -h::
+  -Q::
 
-Display short usage information and exit.
+Build the ISO without generating a netboot package.
+
+  -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
+(${GRML_FAI_CONFIG}/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.
+
+  -U **USERNAME**::
+
+Sets ownership of all build output files to specified username before exiting.
+
+  -v **VERSION_NUMBER**::
 
-  -v::
+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.
 
-To get a small, Debian-stable and grml-based Live-CD using /grml/grml-live
+[[usage-examples]]
+Usage examples
+--------------
+
+To get a 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 just use:
+To get a 64bit Debian-testing and grml-small based Live-CD using /srv/grml-live
+as build and output directory use the following command line on your amd64
+system:
 
-  # grml-live -c GRMLBASE,GRML_SMALL,I386 -t /home/mika/grml-live
+  # grml-live -s testing -c GRMLBASE,GRML_SMALL,AMD64 -o /srv/grml-live
 
 [NOTE]
 
-If you have about 700MB of free space inside /dev/shm (being a tmpfs, usually
-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 another directory for $CHROOT_TARGET,
-$BUILD_TARGET and $ISO_TARGET if you plan to create more persistent output. :)
+If you have enough RAM, just run "mount -t tmpfs none /media/ramdisk" to get a
+tmpfs ("RAMDISK"), and use /media/ramdisk as build and output directory - this
+results in a very fast build process. Note that these files will be gone when
+rebooting.
 
+[[main-features]]
 Main features of grml-live
 --------------------------
 
-* create a grml-/Debian-based Linux Live-CD with one single command
+* create a Grml-/Debian-based Linux Live-CD with one single command
 
 * class based concept, providing a maximum of flexibility
 
@@ -118,8 +272,7 @@ Debian repositories
 
 * native support of FAI features
 
-* multi-arch support (work in progress)
-
+[[class-concept]]
 The class concept
 -----------------
 
@@ -129,15 +282,16 @@ 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 which provides the kernel
-(being 'I386' for x86_32 currently only). The following files and directories
-are relevant for class GRMLBASE 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
-  /etc/grml/fai/config/class/GRMLBASE.var
-  /etc/grml/fai/config/hooks/instsoft.GRMLBASE
-  /etc/grml/fai/config/package_config/GRMLBASE
+  ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/
+  ${GRML_FAI_CONFIG}/config/debconf/GRMLBASE
+  ${GRML_FAI_CONFIG}/config/class/GRMLBASE.var
+  ${GRML_FAI_CONFIG}/config/hooks/instsoft.GRMLBASE
+  ${GRML_FAI_CONFIG}/config/package_config/GRMLBASE
 
 Take a look at the next section for information about the concept of those
 files/directories.
@@ -145,20 +299,75 @@ 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 (or extend an
 existing one). For example if you want to use your own class named "FOOBAR" just
-extend CLASSES="GRMLBASE,I386" inside /etc/grml/grml-live.conf to
-CLASSES="GRMLBASE,I386,FOOBAR" or invoke grml-live using the classes option:
-"grml-live -c GRMLBASE,I386,FOOBAR ...".
+set CLASSES="GRMLBASE,GRML_SMALL,AMD64,FOOBAR" inside /etc/grml/grml-live.local
+or invoke grml-live using the classes option: "grml-live -c
+GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...".
 
 More details regarding the class concept can be found in the documentation of
 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
+${GRML_FAI_CONFIG}/config/package_config whereas some further classes are defined for
+example in ${GRML_FAI_CONFIG}/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 as
+introduced in December 2011 (~350MB ISO size).
+
+* GRML_MEDIUM: medium sized Grml version, used to be known as grml-medium
+until December 2011 (~220MB ISO size).
+
+* GRML_SMALL: minimum sized Grml version, known as grml-small (~110MB ISO
+size).
+
+* GRML_XL: large size Grml version, used to be known as "full grml" until
+December 2011 (~700MB ISO size).
+
+* 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,...)
+
+* SOURCES: retrieve Debian source packages after installation. Files will be
+placed in the output directory under grml_sources.
+
+* 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
+fai-client) grml uses ${GRML_FAI_CONFIG}/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
@@ -170,145 +379,255 @@ Script for the main build process. Requires root permissions for execution.
 
   /etc/grml/grml-live.conf
 
-Main configuration file for grml-live. All the important steps can be configured
-at this stage.
+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/fai/fai.conf
+  /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.
+
+  ${GRML_FAI_CONFIG}/fai.conf
 
 Main configuration file for FAI which specifies where all the configuration
-files and scripts for FAI/grml-live can be found. By default it is set to
-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.
+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
+GRML_FAI_CONFIG=/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
+  ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf
 
 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
+  ${GRML_FAI_CONFIG}/NFSROOT
 
 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 main chroot (including all the software you would
-like to see included). If you want to use a local mirror you either have to
-adjust this file or use the GRML_LIVE_SOURCES variable inside
-/etc/grml/grml-live.conf which modifies /etc/grml/fai/apt/sources.list
-on-the-fly then.
-
-  /etc/grml/fai/config/
+  ${GRML_FAI_CONFIG}/config/
 
 The main directory for configuration of FAI/grml-live. More details below.
 
-  /etc/grml/fai/config/class/
+  ${GRML_FAI_CONFIG}/config/class/
 
 This directory contains files which specify main configuration variables for the
 FAI classes.
 
-  /etc/grml/fai/config/debconf/
+  ${GRML_FAI_CONFIG}/config/debconf/
 
 This directory provides the files for preseeding/configuration of debconf
 through files.
 
-  /etc/grml/fai/config/hooks/
+  ${GRML_FAI_CONFIG}/config/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/
+  ${GRML_FAI_CONFIG}/config/package_config/
 
 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,I386 ..." only the files from the directories GRMLBASE
-and I386 will be taken, if you use 'grml-live -c GRMLBASE,I386,FOOBAR ...' then
-the files of GRMLBASE, 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.
+"grml-live -c GRMLBASE,GRML_SMALL,AMD64 ..." only the configuration of GRMLBASE,
+GRML_SMALL and and AMD64 will be taken. If you use 'grml-live -c
+GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...' then the files of GRMLBASE, GRML_SMALL,
+AMD64 **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/
+  ${GRML_FAI_CONFIG}/config/scripts/
 
 Scripts for customising the ISO within the 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.
-
-  /etc/grml/fai/live-initramfs/
+  ${GRML_FAI_CONFIG}/live-initramfs/
 
 This directory provides the files used for building the initramfs/initrd via
 live-initramfs(8).
 
+[[log-files]]
+Available log files
+-------------------
+
+Starting with grml-live version 0.17.0 you should find log files in a directory
+named 'grml_logs' in the output directory (next to grml_isos, grml_chroot,...).
+
+grml-live versions before 0.17.0 used to log into /var/log/grml-live.log
+and /var/log/fai/grml.
+
+[[requirements]]
 Requirements for the build system
 ---------------------------------
 
-* any Debian based system should be sufficient (if not it's a bug, so please
-send us a bug report then) [a usual link:http://grml.org/grml2hd/[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). 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
+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/testing and Debian/unstable) to build Grml (based) ISOs featuring kernel
+version 2.6.38-grml[64] or newer.
+
+[[faq]]
 FAQ
 ---
 
-Help, I'm using Debian etch and I don't have FAI version >3.2
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+[[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 just use Grml.
+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 squeeze (6.0) with debian-backports
+enabled. (This is important for squashfs-tools.)
+
+What we want: build a Grml ISO based on Debian/wheezy for the amd64 architecture
+using grml-live.
+
+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
 
-  wget http://www.informatik.uni-koeln.de/fai/download/etch/fai-client_3.2.1_all.deb \
-       http://www.informatik.uni-koeln.de/fai/download/etch/fai-server_3.2.1_all.deb
-  dpkg -i fai-client_3.2.1_all.deb fai-server_3.2.1_all.deb
+  # 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 I386.tar.gz /etc/grml/fai/config/basefiles/
+  # mv AMD64.tar.gz /etc/grml/fai/config/basefiles/
+
+  # install relevant tools
+  apt-get install -t squeeze-backports squashfs-tools
+  apt-get --no-install-recommends install grml-live
+
+  # 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="wheezy http://cdn.debian.net/debian/"
+  # ARCH="amd64"
+  CLASSES="GRMLBASE,GRML_FULL,AMD64"
+  EOF
+
+  # just optional(!) - upgrade FAI to latest available version:
+  cat >> /etc/apt/sources.list << EOF
+  # fai:
+    deb http://fai-project.org/download squeeze 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.
+
+[[grml_fai_config_variable]]
+What is $GRML_FAI_CONFIG?
+~~~~~~~~~~~~~~~~~~~~~~~~~
 
-or check out the link:http://www.informatik.uni-koeln.de/fai/[FAI-homepage] for
-further details.
+The variable '$GRML_FAI_CONFIG' is pointing to the directory /etc/grml/fai by
+default.  To provide you a maximum of flexibility you can set up your own
+configuration directory (e.g. based on /etc/grml/fai) and use this directory
+running grml-live with the '-D <config_dir>' option. Now '$GRML_FAI_CONFIG'
+points to the specified directory instead of using /etc/grml/fai and all the
+configuration files, scripts and hooks will be taken from your
+'$GRML_FAI_CONFIG' directory.
 
+[[how-to-debug]]
 I've problems with the build process. How to start debugging?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Check out the logs inside /var/log/fai/dirinstall/... If you don't have the time
-to debug the problem in further detail or don't know how to proceed just send a
-copy of your config, logs and the commandline with a short problem description
-to <mika@grml.org>:
+Check out the logs inside the directory 'grml_logs' next to your grml_chroot,
+grml_isos,... directories.
 
-  # history | grep grml-live > /etc/grml/grml_live.cmdline
-  # tar zcf grml_live_problem.tar.gz /etc/grml/grml-live.conf \
-            /var/log/fai/dirinstall /etc/grml/fai
+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].
 
+[[install-local-files]]
+How do 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.
+Yes. Set up an according sources.list configuration as class file in
+${GRML_FAI_CONFIG}/config/files/etc/apt/sources.list.d/ and adjust the variable
+FAI_DEBOOTSTRAP (if not already using NFSROOT's base.tgz) inside
+/etc/grml/grml-live.conf[.local]. If you're setting up your own class file don't
+forget to include the class name in the class list (grml-live -c ...).
 
-If you want to use a local (for example NFS mount) mirror additionally, just
-adjust MIRROR_DIRECTORY and MIRROR_SOURCES insede /etc/grml/grml-live.conf as
-well.
+If you want to use a local (for example NFS mount) mirror additionally then
+adjust MIRROR_DIRECTORY in /etc/grml/grml-live.conf[.local] 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 you want to use a HTTP Proxy (like apt-cacher-ng), set APT_PROXY. Example:
 
-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 prefered over
-non-local mirrors. Using a fallback mirror (via providing several mirrors in
-GRML_LIVE_SOURCES as used by default) is a recommended setting.
+  APT_PROXY="http://localhost:3142/"
 
+[[add-additional-debian-packages]]
 How do I add additional Debian package(s) to my CD/ISO?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -324,8 +643,9 @@ Just create a new class (using the package_config directory):
 
 and specify it when invoking grml-live then:
 
-  # grml-live -c GRMLBASE,I386,MIKA
+  # grml-live -c GRMLBASE,GRML_SMALL,AMD64,MIKA
 
+[[reset-grml-live-configuration]]
 I fscked up my grml-live configuration. How do I reset it to the defaults?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -335,129 +655,125 @@ 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.
-
-How do I create a base.tgz for use as NFSROOT?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+[[create-a-base-tgz]]
+How do I create a base.tgz?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-First of all build the chroot system:
+First of all create the chroot using debootstrap:
 
-  mkdir /tmp/nfsroot && cd /tmp/nfsroot
-  debootstrap etch /tmp/nfsroot/ http://ftp.de.debian.org/debian
-  tar zcf base.tgz ./
+  BASECHROOT='/tmp/basefile'
+  debootstrap squeeze "$BASECHROOT" http://cdn.debian.net/debian
+  tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf base.tar.gz ./
 
-Then check out where your NFSROOT is located:
+[TIP]
+By default debootstrap builds a chroot matching the architecture of the running
+host system. If you're using an amd64 system and want to build an i386 base.tgz
+then invoke debootstrap using the '--arch i386' option. Disclaimer: building an
+AMD64 base.tgz won't work if you are using a 32bit kernel system of course.
 
-  # grep '^NFSROOT' /etc/grml/fai/make-fai-nfsroot.conf
-  NFSROOT=/grml/fai/nfsroot
+Then move the base.tar.gz to /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz.
+Use e.g. I386 as $CLASSNAME for i386 chroots and AMD64 for amd64 chroots.
 
-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
-
-Now running "grml-live ..." will use this file as main system instead of
-executing debootstrap. Check out the output for the following lines:
+Now executing grml-live should use this file as base system instead of executing
+debootstrap. Check out the output for something like:
 
   [...]
-  Calling task_extrbase
-  Unpacking Debian base archive
-  Extracting /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz
-  Calling task_mirror
+  ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot//
   [...]
 
-I've a question which isn't answered by this document
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Don't hesitate to ask on IRC (channel #grml on irc.freenode.org) or just drop me
-a mail: <mika@grml.org>
-
-Known TODOs
------------
-
-* "fai dirinstall" does not seem to always exit according to what happend during
-the build; make sure to exit on any error (check logs for stuff like "dpkg:
-error processing" [software.log], "FAILED with exit code" [shell.log],...)
-
-* support something like a directory /etc/grml/fai/packages to install
-additional Debian packages without the need for a Debian repository
+[TIP]
+Existing base.tgz can be found at http://daily.grml.org/
 
-* document the available classes in more detail
+[[apt-cacher]]
+Set up apt-cacher-ng for use with grml-live
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* add a check to make sure $TARGET is mounted rw,suid,dev?
+Make sure /etc/grml/grml-live.local provides according APT_PROXY and
+FAI_DEBOOTSTRAP:
 
-* 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)
-
-* support different grml-flavours through classes right out-of-the-box (being:
-grml and  grml-small (done), each for x86, amd64 and ppc)
-
-* support signed apt repositories (currently it's deactivated via FAI's
-FAI_ALLOW_UNSIGNED=1 for some packages in the toolchain)
+  # cat /etc/grml/grml-live.local
+  [...]
+  APT_PROXY="http://localhost:3142/"
+  [...]
+  FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free"
 
-* support setting stuff like ISO name, version,... on-the-fly (especially for
-stuff inside boot/isolinux/*)
+Make sure apt-cacher-ng is running ('/etc/init.d/apt-cacher-ng restart').
+That's it.  All downloaded files will be cached in /var/cache/apt-cacher-ng then.
 
-* support "final builds" (including stuff like generating md5sums, gpg,... -
-create a grml_release-directory including all the details about the build
-process like dpkg selection, logs,...)
+[[revert_manifold]]
+How do I revert the manifold feature from an ISO?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* the grml-live class(es) should send output to stdout and stderr as used inside
-FAI as well (so it's not as verbose unless you specify it, make it configurable
-though); check for errors inside the logs then as well
+The so called manifold feature Grml ISOs use by default allows one to use the same
+ISO for CD boot and USB boot. If you notice any problems when booting just
+revert the manifold feature running:
 
-* provide possibility for cleanup of all created build directories and
-a smart summary of the buildprocess (including "took ... minutes/seconds to
-build...")
+  % dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc
 
-* check out how FAI_DEBMIRROR of /etc/grml/fai/fai.conf could be merged with our
-MIRROR_DIRECTORY and MIRROR_SOURCES feature of /etc/grml/grml-live.conf
+To switch from manifold to isohybrid mode (an alternative approach provided by
+syslinux) then just execute:
 
-* support hooks to allow further customisation of the build process
+  % isohybrid grml.iso
 
-Long term goals
----------------
+[[basetgz]]
+How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* Provide all upcoming grml releases based on grml-live.
+Execute the following commands (requires root):
 
-* Provide a console interface (using dialog) for easy and common use of
-grml-live.
+  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 *
 
-* Provide a graphical interface (for example using pygtk) for easy and common
-use of grml-live.
+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).
 
+[[download]]
 Download / install grml-live as a Debian package
 ------------------------------------------------
 
-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:
+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:
 
-  hg clone http://hg.grml.org/grml-live
+  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:https://github.com/grml/grml-live/[https://github.com/grml/grml-live/]
 
+[[bugs]]
 Bugs
 ----
 
 Please report feedback, link:http://grml.org/bugs/[bugreports] and wishes
-link:http://grml.org/contact/[to the grml-team]!
+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