Update for kernel 2.6.38-grml[64], featuring LZMA/XZ support - requiring squashfs...
[grml-live.git] / docs / grml-live.txt
index 51a1554..3809075 100644 (file)
@@ -23,7 +23,7 @@ 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://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.
@@ -168,8 +168,8 @@ Specify name of the release.
   -s **SUITE**::
 
 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
+"squeeze" (being current Debian/stable). Supported values are: etch, lenny,
+squeeze, sid. Debian "squeeze" requires a recent base.tgz
 (/etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz) or a recent version of
 debootstrap.
 
@@ -193,7 +193,7 @@ Increase verbosity in the build process.
 
   -z::
 
-Use ZLIB instead of LZMA compression in mksquashfs part of the build process.
+Use ZLIB instead of LZMA/XZ compression in mksquashfs part of the build process.
 
 [[usage-examples]]
 Usage examples
@@ -475,14 +475,13 @@ For further information see next section.
 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 7rd of september 2009, please report any bugs you
-encounter.
+Use squashfs-tools >=4.2-1 (available from Grml repositories as well as from
+Debian/unstable) to build Grml (based) ISOs featuring kernel version
+2.6.38-grml[64].
 
-Difference between squashfs-lzma-tools and squashfs-tools
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+////////////////////////////////////////////////////////////////////////////////
+Difference between squashfs-lzma-tools, squashfs-lzma-tools4 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
@@ -490,39 +489,93 @@ 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).
+therefore squashfs-lzma-tools[4] had to be introduced and maintained by the Grml
+team. Different kernel versions provide different squashfs file formats. Kernel
+versions until 2.6.28-grml[64] used the 3.x file format but those outdated
+kernels aren't supported by grml-live automatically anymore nowdays (manual
+handling through SQUASHFS_BINARY possible though). Kernel versions
+2.6.31-grml[64] and 2.6.33-grml[64] use openwrt's squashfs lzma file format
+version 4. Kernel versions starting with 2.6.35-grml[64] use the mainline ondisk
+file format version 4.
 
 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-lzma-tools4 4.0-x: ZLIB as default, LZMA support via '-comp lzma'
+option (enabled by grml-live by default), file format version 4 (mainline
+version), package maintained and available from Grml, recommended for current
+grml-live builds featuring kernels >=2.6.35-grml[64]
+
+* squashfs-lzma-tools 4.0-2: ZLIB as default, LZMA support via '-lzma' option
+(enabled by grml-live by default), file format version 4 (openwrt style),
+package maintained and available from Grml, recommended for any grml-live builds
+with kernel versions 2.6.31-grml[64] and 2.6.33-grml[64]
+
+* squashfs-tools 1:4.0-x: ZLIB as default, no LZMA support/options, file format
+version 4, package maintained and available from Debian, recommended only for
+ZLIB-only builds of any grml-live builds with kernel versions >=2.6.31-grml[64]
+
+Outdated, JFTR:
 
 * 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
+* squashfs-tools 1:3.2r2-9exp1: LZMA as default, ZLIB support via '-nolzma'
 option, file format version 3
 
-* squashfs-lzma-tools 4.0-2: ZLIB as default, LZMA support via -lzma option,
-file format version 4
-
-* squashfs-lzma-tools 3.3-1: LZMA as default, ZLIB support via -nolzma option,
+* 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.
+Now, depending on the kernel version you want to use you need different versions
+of squashfs-tools/squashfs-lzma-tools[4]. Yes, that's a mess (don't ask how much
+this sucks for us developers) - though we're putting lots of effort into our
+toolchain to automatically handle this for you through the grml-live build
+system and provide proper documentation. The situation is supposed to calm down
+with the recent integration of the squashfs file format 4 in the mainline
+kernel. Support for LZMA is pending and as soon as it's available mainline this
+should dramatically simplify the situation for developers as well as users.
+
+[TIP]
+If you want to force usage of a specific mksquashfs binary just set the
+SQUASHFS_BINARY configuration/environment variable. Set SQUASHFS_OPTIONS for
+customizing the options that should be used by the mksquashfs binary during
+build process.
+
+Using squashfs-lzma-tools4 4.0-1 on the build system
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+squashfs-lzma-tools4 4.0-1 is available via the Grml repositories. It provides
+the mksquashfs-lzma4 and unsquashfs-lzma4 binaries. The package does NOT
+conflict with neither Debian's squashfs-tools package nor Grml's
+squashfs-lzma-tools package, so you can install all of them at the same time and
+the build system will try to figure out the best matching binary automatically
+for you.
+
+The packages can be downloaded from
+link:http://deb.grml.org/pool/main/s/squashfs-lzma-tools4/[http://deb.grml.org/pool/main/s/squashfs-lzma-tools4/]
+
+It provides support for the new squashfs file format version 4 (as available in
+mainline, so *not* the one being used by squashfs-lzma-tools and kernel
+2.6.33-grml) and therefore requires kernel versions starting with
+2.6.35-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 compression instead.
+
+* Kernel 2.6.31-grml[64]: works with ZLIB compression, fails with LZMA
+* Kernel 2.6.33-grml[64]: works with ZLIB compression, fails with LZMA
+* Kernel 2.6.35-grml[64]: works with ZLIB *and* LZMA compression
+* Kernel 2.6.36-grml[64]: works with ZLIB *and* LZMA compression
+
+[NOTE]
+squashfs-tools >=4.1-1 and/or squashfs-lzma-tools4 are the recommended package
+for building up2date ISOs with grml-live! Please use other squashfs-* packages
+only if you want to build live systems providing kernel versions older than
+2.6.35-grml*. Use squashfs-tools >=4.1-1 or squashfs-lzma-tools4 from Grml if
+you want to remaster any Grml releases MORE RECENT than 2010.04.
 
 Using squashfs-lzma-tools 4.0-2 on the build system
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-squashfs-lzma-tools 4.0-2 is available via the grml repositories. It provides
+squashfs-lzma-tools 4.0-2 is available via the Grml repositories. It provides
 the mksquashfs-lzma and unsquashfs-lzma binaries. The package does NOT conflict
 with Debian's squashfs-tools package (you can install both of them at the same
 time).
@@ -530,29 +583,30 @@ 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 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.
+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.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.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 if you want to remaster any
-grml release being MORE RECENT than 2009.05.
+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 with the squashfs-lzma-tools 4.0-2 package (you can install both of
-them at the same time).
+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/]
@@ -560,32 +614,37 @@ link:ftp://ftp.de.debian.org/debian/pool/main/s/squashfs-tools/[ftp://ftp.de.deb
 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
-Grml's squashfs-lzma-tools (see section above) instead.
+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.
 
-* 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
-* Kernel 2.6.33-grml[64]: works
+* 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 >=1:4.0-1 only if you want to remaster grml releases
-MORE RECENT than 2009.05 using the ZLIB compression.
+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
+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!
+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 if you want to remaster grml release
+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
@@ -634,6 +693,7 @@ Using with LZMA compression:
   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
@@ -643,7 +703,7 @@ FAQ
 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
+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.
@@ -683,10 +743,6 @@ Instructions
   Package: squashfs-tools
   Pin: origin deb.grml.org
   Pin-Priority: 996
-
-  Package: squashfs-lzma-tools
-  Pin: origin deb.grml.org
-  Pin-Priority: 996
   EOF
 
   # get keyring for apt:
@@ -701,13 +757,15 @@ Instructions
 
   # 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 squashfs-lzma-tools
+  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
-  # consider using LZMA only for space reasons (resulting in longer
-  # build time but smaller ISO):
-  SQUASHFS_OPTIONS="-nolzma"
+  ## 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):
@@ -727,7 +785,7 @@ Instructions
   # just optional(!) - upgrade FAI to latest available version:
   cat >> /etc/apt/sources.list << EOF
   # fai:
-    deb http://www.informatik.uni-koeln.de/fai/download lenny koeln
+    deb http://fai-project.org/download lenny koeln
   EOF
 
   # get gpg key of FAI repos and install current FAI version:
@@ -746,12 +804,12 @@ and the ISO can be found inside /grml-live/grml-live/grml_isos/ then.
 Help, I'm using Debian etch and I don't have FAI version >3.2
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  wget http://www.informatik.uni-koeln.de/fai/download/etch/fai-client_3.2.8_all.deb \
-       http://www.informatik.uni-koeln.de/fai/download/etch/fai-server_3.2.8_all.deb \
-       http://www.informatik.uni-koeln.de/fai/download/etch/fai-doc_3.2.8_all.deb
+  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://www.informatik.uni-koeln.de/fai/[FAI-homepage] for
+or check out the link:http://fai-project.org/[FAI-homepage] for
 further details.
 
 [[how-to-debug]]
@@ -889,7 +947,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://cdn.debian.net/debian
+  debootstrap squeeze /tmp/nfsroot/ http://cdn.debian.net/debian
   tar zcf base.tgz ./
 
 Then check out where your NFSROOT is located:
@@ -938,10 +996,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/cdn.debian.net/debian lenny main contrib non-free
+  deb http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free
   "
   [...]
-  FAI_DEBOOTSTRAP="lenny http://localhost:3142/cdn.debian.net/debian lenny main contrib non-free"
+  FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze 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
@@ -959,9 +1017,9 @@ FAI_DEBOOTSTRAP:
   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
+  deb http://localhost:9999/debian squeeze  main contrib non-free
   "
-  FAI_DEBOOTSTRAP="lenny http://localhost:9999/debian"
+  FAI_DEBOOTSTRAP="squeeze http://localhost:9999/debian"
 
 Configure approx:
 
@@ -973,6 +1031,38 @@ Configure approx:
 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
+
+[[basetgz]]
+How to I create a base tar.gz (I386.tar.gz or AMD64.tar.gz)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Execute the following commands (requires root):
+
+  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 *
+
+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).
+
 [[question]]
 I've a question which isn't answered by this document
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1012,6 +1102,17 @@ Bugs
 Please report feedback, link:http://grml.org/bugs/[bugreports] and wishes
 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
 -------