+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
+
+[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.
+
+Using squashfs-tools 1:4.0-X on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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).
+
+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/]
+
+It provides support for the new squashfs file format version 4 and therefore
+requires kernel versions newer than 2.6.28-grml[64].
+
+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.
+
+* 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)
+
+[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.
+
+Outdated, JFTR:
+
+Using squashfs-lzma-tools 3.3-1 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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.
+
+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/].
+
+[NOTE]
+Please use squashfs-lzma-tools 3.3-1 only if you want to remaster Grml releases
+2008.11 or 2009.05.
+
+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 lenny /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:
+
+ [...]
+ ftar: extracting /etc/grml/fai/config/basefiles///AMD64.tar.gz to
+ /grml-live/grml-live_20071029.22138/grml_chroot//
+ [...]
+
+[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 lenny main contrib non-free
+ "
+ [...]
+ FAI_DEBOOTSTRAP="lenny http://localhost:3142/cdn.debian.net/debian lenny 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 lenny main contrib non-free
+ "
+ FAI_DEBOOTSTRAP="lenny 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
+
+[[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://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]]