+ ${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 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 ~2GB are required for a minimal grml-live
+run (\~1GB for the chroot [$CHROOT_OUTPUT], \~400MB for the build target
+[$BUILD_OUTPUT], \~35MB for the netboot files and \~350MB 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 retrieving the Debian packages used for creating the
+chroot (check out "local mirror" to workaround this problem as far as possible)
+
+* your output directory should not be mounted with any of the "nodev", "noexec"
+or "nosuid" mount options. (/tmp typically is at least "nodev" and "nosuid" on
+most systems.)
+
+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 to build Grml (based) ISOs featuring kernel version
+2.6.38-grml[64] or newer.
+
+[[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 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 stretch (9.x).
+
+What we want: build a Grml ISO based on Debian/stretch 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
+
+ # 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 --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/):
+ ## OUTPUT="/srv/grml-live"
+ FAI_DEBOOTSTRAP="stretch http://ftp.debian.org/debian/"
+ # ARCH="amd64"
+ CLASSES="GRMLBASE,GRML_FULL,AMD64"
+ EOF
+
+ # just optional(!) - upgrade FAI to latest available version:
+ cat >> /etc/apt/sources.list.d/fai.list << EOF
+ deb http://jenkins.grml.org/debian fai main
+ deb-src http://jenkins.grml.org/debian fai main
+ EOF
+
+ # get gpg key of FAI repos and install current FAI version:
+ wget -O - http://jenkins.grml.org/debian/C525F56752D4A654.asc | sudo 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?
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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 the directory 'grml_logs' next to your grml_chroot,
+grml_isos,... directories.
+
+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].
+
+Note that FAI doesn't abort immediately on errors that will ultimately cause
+the build to fail. Be sure to look through the logs and find the actual error;
+look for lines that start with "E: " or contain "FAILED" or "exit code 1".
+Some messages that may look like errors are actually benign; e.g.
+"/tmp/grml64/grml_chroot/var/lib/dpkg is not a mounted ramdisk" is not an error.
+
+[[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?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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 a 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 then
+adjust MIRROR_DIRECTORY in /etc/grml/grml-live.conf[.local] as well.
+
+If you want to use a HTTP Proxy (like apt-cacher-ng), set APT_PROXY. Example:
+
+ APT_PROXY="http://localhost:3142/"
+
+[[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 install
+
+ 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,AMD64,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
+
+[[apt-cacher]]
+Set up apt-cacher-ng for use with grml-live
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Make sure /etc/grml/grml-live.local provides according APT_PROXY and
+FAI_DEBOOTSTRAP:
+
+ # cat /etc/grml/grml-live.local
+ [...]
+ APT_PROXY="http://localhost:3142/"
+ [...]
+ FAI_DEBOOTSTRAP="stretch http://localhost:3142/ftp.debian.org/debian stretch main contrib non-free"
+
+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.
+
+[[revert_manifold]]
+How do I revert the manifold feature from an ISO?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+By default, Grml ISOs use isohybrid to allow them to be booted from CDs as
+well as USB sticks. Manifold is an alternative to isohybrid.
+
+If you notice any problems
+when booting manifold-crafted media, 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, used by default for official Grml images) then just execute:
+
+ % isohybrid grml.iso
+
+[[create-a-base-tgz]]
+How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+[[basetgz]]
+
+First of all create the chroot using debootstrap (requires root):
+
+ BASECHROOT='/tmp/basefile' # path where the chroot gets generated
+ SUITE='stretch' # using the current stable release should always work
+ debootstrap --exclude=info,tasksel,tasksel-data "$SUITE" "$BASECHROOT" http://ftp.debian.org/debian
+ tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf "${SUITE}".tar.gz ./
+
+[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.
+
+Finally place the generated tarball in /etc/grml/fai/config/basefiles/ (note
+that it needs to be uppercase letters matching the class names, so: e.g.
+AMD64.tar.gz for amd64 and I386.tar.gz for i386).
+
+Then executing grml-live should use this file as base system instead of executing
+debootstrap. Check out the output for something like:
+
+ [...]
+ ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot//
+ [...]
+
+[[localrepos]]
+How to use your own local repository
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Let's assume you have Debian package(s) in your filesystem inside
+`/home/foobar/local-packages` and want to provide them to your grml-live build.
+This can be achieved either 1) through a bind mount (using the MIRROR_DIRECTORY
+configuration) or 2) by serving a repository via HTTP.
+
+Serving via bind mount / MIRROR_DIRECTORY
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Make sure to create an according sources.list configuration file, e.g. using
+your own class name `CUSTOM`:
+
+ # cat > /etc/grml/fai/config/files/etc/apt/sources.list.d/local-packages.list/CUSTOM << EOF
+ deb file:///home/foobar/local-packages ./
+ EOF
+
+Add the according MIRROR_DIRECTORY configuration to your grml-live configuration:
+
+ # echo "MIRROR_DIRECTORY='/home/foobar/packages'" >> /etc/grml/grml-live.local
+
+Make sure the local directory looks like a mirror:
+
+ % cd /home/foobar/packages
+ % dpkg-scanpackages . /dev/null | gzip > Packages.gz
+
+Finally invoke grml-live with your class name (`CUSTOM` in this example) added
+to the list of classes on the command line (see grml-live option `-c`).
+
+Serving a repository via HTTP
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Make sure to create an according sources.list configuration file, e.g. using
+your own class name `CUSTOM`:
+
+ # cat > /etc/grml/fai/config/files/etc/apt/sources.list.d/local-packages.list/CUSTOM << EOF
+ deb http://127.0.0.1:8000/ ./
+ EOF
+
+Make sure the local directory is served via HTTP on the according IP address and
+port. For the `http://127.0.0.1:8000/` example from above it should be enough to
+just invoke:
+
+ % cd /home/foobar/packages
+ % dpkg-scanpackages . /dev/null | gzip > Packages.gz
+ % python -m SimpleHTTPServer 8000
+
+[TIP]
+Of course you can also use a real Debian repository setup using tools like
+reprepro(1) and/or using a real web server, though for quick debugging sessions
+python's SimpleHTTPServer in combination with dpkg-scanpackages from package
+dpkg-dev is a simple and easy approach.
+
+Finally invoke grml-live with your class name (`CUSTOM` in this example) added
+to the list of classes on the command line (see grml-live option `-c`).
+
+[[download]]
+Download / install grml-live as a Debian package
+------------------------------------------------
+
+Stable Debian packages are available through the grml-repository at
+link:http://deb.grml.org/pool/main/g/grml-live/[deb.grml.org] and the latest
+Git commits are available as Debian packages from
+link:http://jenkins.grml.org/job/grml-live-binaries/[jenkins.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
+
+[[run-from-git]]
+Run grml-live directly from git
+-------------------------------
+
+In case you want to run grml-live directly from the git repository checkout
+(after making sure all dependencies are installed), you should set
+`GRML_FAI_CONFIG` so that a) it finds the according FAI configuration files and
+b) does not use the config files of an possibly installed `grml-live` package.
+Usage example:
+
+ # export GRML_FAI_CONFIG=$(pwd)/etc/grml/fai
+ # export SCRIPTS_DIRECTORY=$(pwd)/scripts
+ # export TEMPLATE_DIRECTORY=$(pwd)/templates
+ # ./grml-live -s sid -a amd64 -c GRMLBASE,GRML_FULL,AMD64
+
+[[source]]
+Source
+------
+
+The source of grml-live is available at
+link:https://github.com/grml/grml-live/[https://github.com/grml/grml-live/]
+
+[[bugs]]