+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>] [
+-w <date>] [-AbBFnNqQuVz]
+
+Description
+-----------
+
+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.
+
+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 ${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]
+
+Please notice that you should have a fast network connection as all the Debian
+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 <<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, GRML_FULL and I386/AMD64 (depending on system
+architecture) are assumed. 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 e.g.
+GRML_SMALL.
+
+[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.
+
+ -F::
+
+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.
+
+ -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).
+
+ -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'.
+
+ -Q::
+
+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. If unset defaults
+to "testing". Supported values are: stable, testing, unstable (or their
+corresponding release names like "jessie"). Please be aware that recent Debian
+suites might require 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**::
+
+Specify version number of the release.
+
+ -V::
+
+Increase verbosity in the build process.
+
+ -w **DATE**::
+
+The wayback machine. Build the system using Debian archives from the specified
+date. Valid date formats are yyyymmddThhmmssZ or simply yyyymmdd. To learn
+which snapshots exist, i.e. which date strings are valid, simply browse the
+lists on http://snapshot.debian.org/. If there is no import at the exact time
+you specified you will get the latest available timestamp which is before the
+time you specified.
+This option is useful especially for release and debugging builds - for example
+if you know that the Debian archive was in a good state on a specific date but
+you want to build it on another day in the future, where the archive might not
+be as needed anymore. Please be aware that this is restricted to the plain
+Debian repositories only, as referred to in /etc/apt/sources.list.d/debian.list
+(so neither the Grml repositories nor any further custom ones are affected by
+the wayback machine).
+
+ -z::
+
+Use ZLIB instead of LZMA/XZ compression in mksquashfs part of the build process.
+
+[[usage-examples]]
+Usage examples
+--------------
+
+To get a Debian-stable and Grml-based Live-CD using ./grml
+as build and output directory just run:
+
+ # grml-live
+
+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 -s testing -c GRMLBASE,GRML_SMALL,AMD64 -o /srv/grml-live
+
+[NOTE]
+
+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
+
+* class based concept, providing a maximum of flexibility
+
+* supports integration of own hooks, scripts and configuration
+
+* supports use and integration of own Software and/or Kernels via simple use of
+Debian repositories
+
+* native support of FAI features
+
+[[class-concept]]
+The class concept
+-----------------
+
+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 dependent class which provides the kernel
+(being 'I386' for x86_32 and 'AMD64' for x86_64) and a GRML_* class (like
+GRML_SMALL or GRML_FULL). The following files and directories are
+relevant for class GRMLBASE by default:
+
+ ${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.
+
+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
+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
+
+* FILE_RC: instead of using systemd as init system use file-rc instead. file-rc
+was the init system used by Grml until and including stable release 2014.11,
+starting with beginning of 2016 Grml switched to systemd instead. If you want to
+build a live system in the old style using file-rc instead of systemd then enable
+this class. Please notice that support for file-rc is no longer being actively
+maintained (the Grml team happily accepts patches though) and file-rc (upstream
+wise) might disappear too.
+
+* FRESHCLAM: execute freshclam (if it's present) to update clamav definitions
+(increases resulting ISO size ~70MB). By default it's skipped to avoid bigger
+ISO size.
+
+* 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. Please be aware that using *just* the GRMLBASE class won't be
+enough, because the kernel packages (e.g. linux-image-i386-grml +
+linux-image-amd64-grml) are chosen in further GRML_* classes (to provide maximum
+flexibility with kernel selection). If you don't want to use the existing
+GRML_FULL or GRML_SMALL classes, define your own CLASS file choosing the kernel
+package you want to use (and don't forget to include your CLASS in the arguments
+of grml-live's -c... command line option).
+
+* GRML_FULL: full featured Grml, also known as the "normal", full grml as
+introduced in December 2011 (~600MB ISO size).
+
+* GRML_SMALL: minimum sized Grml version, known as grml-small (~300MB 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 ${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
+provides documentation regarding configuration possibilities.
+
+ /usr/sbin/grml-live
+
+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.