Update docs regarding squashfs-lzma-tools
[grml-live.git] / docs / grml-live.txt
index bbb75e4..fb27bc0 100644 (file)
@@ -89,18 +89,18 @@ So instead of GRML_MEDIUM you can also use GRML_SMALL and GRML_FULL.
   -C **CONFIGURATION_FILE**::
 
 The specified file is used as configuration file for grml-live. By default
-/etc/grml/grml-live.conf is used for main configuration. If a file named
+/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 to allow overriding settings). 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. 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.conf and/or /etc/grml/grml-live.local for configuration
-stuff used inside /etc/grml/fai/config.
+/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.
 
   -F::
 
@@ -121,6 +121,17 @@ Display short usage information and exit.
 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
@@ -143,7 +154,7 @@ Specify name of the release.
 Specify the Debian suite you want to use for your live-system.  Defaults to
 "lenny" (being current Debian/stable). Supported values are: etch, lenny, sid.
 Debian "squeeze" (current Debian/testing) requires base.tgz
-(/etc/grml/fai/config/basefiles/....tar.gz) until it's supported by debootstrap.
+(/etc/grml/fai/config/basefiles/....tar.gz) or a recent version of debootstrap.
 
   -t **TEMPLATE_DIRECTORY**::
 
@@ -245,9 +256,9 @@ 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,GRML_SMALL,I386" inside /etc/grml/grml-live.conf to
-CLASSES="GRMLBASE,GRML_SMALL,I386,FOOBAR" or invoke grml-live using the classes
-option: "grml-live -c GRMLBASE,GRML_SMALL,I386,FOOBAR ...".
+set CLASSES="GRMLBASE,GRML_SMALL,I386" 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 itself (being available at /usr/share/doc/fai-doc/).
@@ -322,8 +333,17 @@ 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/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 prefered
+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
 
@@ -445,15 +465,106 @@ Current state of grml-live with squashfs-tools and kernel
 To make it easier to track problems this section documents current state of
 grml-live playing together with squashfs-tools / squashfs-lzma-tools (for
 building the compressed file) and the kernel version. Documentation of this
-section is up2date by 04nd of august 2009, please report any bugs you
+section is up2date by 7rd of september 2009, please report any bugs you
 encounter.
 
+Difference between squashfs-lzma-tools 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 had to be introduced by the Grml team. Different
+kernel versions provide different squashfs file formats (version 3.x for kernel
+versions until 2.6.28-grml[64], since kernel 2.6.31-grml[64] it's the 4.x
+format).
+
+If you're wondering which package supports what, here's a short overview:
+
+* squashfs-tools 1:4.0-1: ZLIB as default, no LZMA support/options, file format
+version 4
+
+* 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 4.0-1: LZMA as default, no ZLIB support/options, file format 4
+
+* squashfs-lzma-tools 3.3-1: LZMA as default, ZLIB support via -nolzma option,
+file format version 3
+
+Depending on the kernel version you want to use you need different versions
+squashfs-tools/squashfs-lzma-tools. Yes, that's pretty a mess (don't ask how
+much this sucks for us developers) - though this is supposed to calm down with
+the recent integration of squashfs file format 4 in the mainline kernel. Support
+for LZMA is pending and should dramatically simplify the situation for
+developers as well as users as soon as it's available mainline.
+
+Using squashfs-lzma-tools 4.0-1 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+squashfs-lzma-tools 4.0-1 is available via the grml repositories. It provides
+the mksquashfs-lzma and unsquashfs-lzma binaries and the package does NOT
+conflict with the 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 and therefore
+requires kernel versions newer than 2.6.28-grml[64].
+
+It does NOT provide support for ZLIB compression. If you need ZLIB support
+please use squashfs-tools 1:4.0-1 instead and use the '-z' option of grml-live
+or set "SQUASHFS_OPTIONS='-nolzma'" in the grml-live configuration file.
+
+* Kernel 2.6.23-grml[64]: does not work
+* Kernel 2.6.26-grml[64]: does not work
+* Kernel 2.6.28-grml[64]: does not work
+* Kernel 2.6.31-grml[64]: works
+
+[NOTE]
+Please use squashfs-lzma-tools 4.0-1 if you want to remaster grml releases
+MORE RECENT than 2009.05 using the LZMA compression.
+
+Using squashfs-tools 1:4.0-1 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 and the package does NOT
+conflict with the squashfs-lzma-tools 4.0-1 package (you can install both of
+them at the same time).
+
+The packages can be downloaded from
+link:ftp://ftp.de.debian.org/debian/pool/main/s/squashfs/[ftp://ftp.de.debian.org/debian/pool/main/s/squashfs/]
+
+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. If you need LZMA support please use
+squashfs-lzma-tools instead.
+
+* Kernel 2.6.23-grml[64]: does not work
+* Kernel 2.6.26-grml[64]: does not work
+* Kernel 2.6.28-grml[64]: does not work
+* Kernel 2.6.31-grml[64]: supposed to work (verification in progress)
+
+[NOTE]
+Please use squashfs-tools 1:4.0-1 if you want to remaster grml releases
+MORE RECENT than 2009.05 using the ZLIB compression.
+
 Using squashfs-lzma-tools 3.3-1 on the build system
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-squashfs-lzma-tools from the grml repository supports kernel 2.6.26-grml[64] and
-2.6.28-grml[64] using both lzma and zlib (-nolzma) compression. It's the
-recommended package for building ISOs with grml-live currently!
+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. It's the recommended package for building ISOs with grml-live
+currently!
 
 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/].
@@ -465,12 +576,7 @@ Please use squashfs-lzma-tools 3.3-1 if you want to remaster grml release
 Using squashfs-tools 1:3.3-7 on the build system
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-squashfs-tools 1:3.3-7 is available via the official Debian/unstable and
-Debian/testing (Lenny) pool running:
-
-  # aptitude install squashfs-tools=1:3.3-7
-
-or directly via downloading the files
+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].
@@ -509,10 +615,10 @@ option in grml-live cmdline):
 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 (see section above).
-* Kernel 2.6.28-grml: does NOT work, please use zlib mode instead or switch
-  to Debian package squashfs-lzma-tools (see section above).
+* 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
@@ -576,17 +682,20 @@ Instructions
   mkdir -p /etc/grml/fai/config/basefiles/
   mv base.tgz /etc/grml/fai/config/basefiles/I386.tar.gz
 
-  # install relevant tools:
+  # 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-lzma-tools
 
   # adjust grml-live configuration for our needs:
   cat > /etc/grml/grml-live.local << EOF
-  # consider using lzma only for space reasons (resulting in longer
+  # consider using LZMA only for space reasons (resulting in longer
   # build time but smaller ISO):
   SQUASHFS_OPTIONS="-nolzma"
+  # 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://ftp.de.debian.org/debian/"
+  FAI_DEBOOTSTRAP="squeeze http://cdn.debian.net/debian/"
   ARCH="i386"
   CLASSES="GRMLBASE,GRML_MEDIUM,I386"
   ZERO_LOGFILE='1'
@@ -594,7 +703,7 @@ Instructions
   GRML_LIVE_SOURCES="
   deb http://deb.grml.org/            grml-stable  main
   deb http://deb.grml.org/            grml-testing main
-  deb http://ftp.de.debian.org/debian squeeze main contrib non-free
+  deb http://cdn.debian.net/debian squeeze main contrib non-free
   "
   EOF
 
@@ -632,14 +741,33 @@ further details.
 I've problems with the build process. How to start debugging?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Check out the logs inside /var/log/fai/... 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 /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-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].
+
+[[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?
@@ -706,7 +834,7 @@ 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://ftp.de.debian.org/debian
+  debootstrap lenny /tmp/nfsroot/ http://cdn.debian.net/debian
   tar zcf base.tgz ./
 
 Then check out where your NFSROOT is located:
@@ -752,10 +880,10 @@ FAI_DEBOOTSTRAP:
   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/ftp.de.debian.org/debian lenny main contrib non-free
+  deb http://localhost:3142/cdn.debian.net/debian lenny main contrib non-free
   "
   [...]
-  FAI_DEBOOTSTRAP="lenny http://localhost:3142/ftp.de.debian.org/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
@@ -818,8 +946,7 @@ link:http://git.grml.org/?p=grml-live.git[http://git.grml.org/?p=grml-live.git]
 TODO list
 ---------
 
-Check out link:http://wiki.grml.org/doku.php?id=grml-live[grml-live in the grml-wiki]
-for details.
+Check out the link:http://git.grml.org/?p=grml-live.git;a=blob;f=TODO;hb=HEAD[TODO file].
 
 [[bugs]]
 Bugs