X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=docs%2Fgrml-live.txt;h=dcfb14b2a56958b68de29cb798affca49e73817e;hp=c813f5c220678982e6a2c3e8f4695798c2020dfb;hb=956db16430d4c373008e9b1a3b0a33e020e117ab;hpb=61bf45fc36e20596ae8bf3cebcde75be7e6c7c61 diff --git a/docs/grml-live.txt b/docs/grml-live.txt index c813f5c..dcfb14b 100644 --- a/docs/grml-live.txt +++ b/docs/grml-live.txt @@ -12,7 +12,7 @@ Synopsis grml-live [-a ] [-c ] [-C ] [-g ] [-i ] [-o ] [-r ] [-s -] [-t ] [-v ] [-bFhuVz] +] [-t ] [-v ] [-bBFhquVz] CAUTION: Please check out <> for details about current state of involved @@ -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. @@ -69,31 +69,54 @@ 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_SMALL and I386 are assumed, resulting in a small base -system (being about ~150MB total ISO size). If using a non-I386 system (like -amd64) you should specify the appropriate architecture as well. Additionally you +the classes GRMLBASE, GRML_MEDIUM and I386 are assumed, resulting in a small base +system (being about ~180MB total ISO size). If using a non-I386 system (like +AMD64) you should specify the appropriate architecture as well. Additionally you can specify a class providing a grml-kernel (see <> for details about available classes). -So instead of GRML_SMALL you can also use GRML_MEDIUM and GRML_FULL. +So instead of GRML_MEDIUM you can also use GRML_SMALL and GRML_FULL. + +[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 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. + + -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' -F:: @@ -103,7 +126,7 @@ Force execution and do not prompt for acknowledgment of configuration. 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 with booting. +GRML_NAME, otherwise you might notice problems while booting. -h:: @@ -114,6 +137,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 @@ -121,6 +155,12 @@ 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'. + -r **RELEASENAME**:: Specify name of the release. @@ -128,7 +168,10 @@ Specify name of the release. -s **SUITE**:: Specify the Debian suite you want to use for your live-system. Defaults to -"etch" (being current Debian/stable). Supported values are: etch, lenny, sid. +"lenny" (being current Debian/stable). Supported values are: etch, lenny, sid. +Debian "squeeze" (current Debian/testing) requires base.tgz +(/etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz) or a recent version of +debootstrap. -t **TEMPLATE_DIRECTORY**:: @@ -152,6 +195,7 @@ Increase verbosity in the build process. Use ZLIB instead of LZMA compression in mksquashfs part of the build process. +[[usage-examples]] Usage examples -------------- @@ -185,6 +229,7 @@ process. But please be aware of the fact that rebooting your system will result in an empty /dev/shm, so please use another directory for $CHROOT_OUTPUT, $BUILD_OUTPUT and $ISO_OUTPUT if you plan to create more persistent output. :) +[[main-features]] Main features of grml-live -------------------------- @@ -201,6 +246,7 @@ Debian repositories * multi-arch support (work in progress) +[[class-concept]] The class concept ----------------- @@ -227,9 +273,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,FOOBAR" 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/). @@ -251,9 +297,6 @@ 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. -* GRML_FORENSIC: tools for forensic investigations which has been created -by people from link:http://www.forensic-geeks.org/[forensic-geeks.org]. - * GRML_FULL: full featured grml, also known as the "normal", full grml. * GRML_MEDIUM: medium sized grml version, known as grml-medium @@ -263,10 +306,15 @@ progress) * GRML_SMALL: minimum sized grml version, known as grml-small +* 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) +* 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 @@ -280,6 +328,7 @@ official grml release * XORG: providing important packages for use with a base grml-featured X.org setup +[[files]] Files ----- @@ -298,15 +347,26 @@ 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 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. /etc/grml/fai/fai.conf Main configuration file for FAI which specifies where all the configuration -files and scripts for FAI/grml-live can be found. By default it is set to -FAI_CONFIGDIR=/etc/grml/fai/config, a directory shipped by grml-live -out-of-the-box so you shouldn't have to configure anything in this file. +files and scripts for FAI/grml-live can be found. By default the configuration +variables are FAI_CONFIG_SRC=file:///etc/grml/fai/config and +FAI_CONFIGDIR=/etc/grml/fai/config - both pointing to a directory shipped by +grml-live out-of-the-box so you shouldn't have to configure anything in this +file. /etc/grml/fai/make-fai-nfsroot.conf @@ -320,12 +380,13 @@ This file specifies the package list for creating the NFSROOT. /etc/grml/fai/apt/sources.list -This file specifies which mirrors should be used for retreiving the Debian -packages used for creating the main chroot (including all the software you would -like to see included). If you want to use a local mirror you either have to -adjust this file or use the GRML_LIVE_SOURCES variable inside -/etc/grml/grml-live.conf which modifies /etc/grml/fai/apt/sources.list -on-the-fly then. +This file specifies which mirrors should be considered for retrieving the Debian +packages when creating the main chroot (including all the software you would +like to see included). Important: this file should *not* be adjusted manually! +Instead use the GRML_LIVE_SOURCES variable inside /etc/grml/grml-live.conf or +/etc/grml/grml-live.local which modifies /etc/grml/fai/apt/sources.list +on-the-fly via grml-live then. If you want to generally adjust apt configuration +use FAI's fcopy command with /etc/grml/fai/config/files instead. /etc/grml/fai/config/ @@ -363,24 +424,18 @@ reasonable package configuration. Scripts for customising the ISO within the build process. - /etc/grml/fai/files/ - -This directory provides files used inside the scripts of -/etc/grml/fai/config/scripts/*. For a full documentation what happens with the -files please refer to the source of the scripts. - /etc/grml/fai/live-initramfs/ This directory provides the files used for building the initramfs/initrd via live-initramfs(8). +[[log-files]] Available log files ------------------- -grml-live itself logs to /var/log/grml-live.log. Unless you set ZERO_LOGFILE in -/etc/grml/grml-live.conf the output is appended to the file. If you set the -ZERO_LOGFILE configuration option the logfile will be truncated on each new -invocation of grml-live. +grml-live itself logs to /var/log/grml-live.log. Unless you set PRESERVE_LOGFILE +in your grml-live configuration the file is cleared on each new invocation of +grml-live. The FAI part of grml-live logs to /var/log/fai/$HOSTNAME/ - so the default being /var/log/fai/grml/. @@ -388,12 +443,20 @@ default being /var/log/fai/grml/. If you are using the grml-live buildd you will find the logs of the grml-live run at /var/log/grml-buildd.stdout and /var/log/grml-buildd.stderr. +If you want to store build information in a database just install the +grml-live-db Debian package. Further details available in the grml-live-db +manpage. + +[[requirements]] Requirements for the build system --------------------------------- -* any Debian based system should be sufficient (if not it's a bug, so please -send us a bug report then) [a usual link:http://grml.org/grml2hd/[grml2hd] -harddisk installation ships all you need] +* any Debian based system should be sufficient (if it doesn't work it's a bug, +please send us a bug report then) [a usual +link:http://grml.org/grml2hd/[grml2hd] harddisk installation (using grml or +grml-medium) ships all you need]. Check out <> for details how to set up grml-live +on a plain, original Debian system. * enough free disk space; at least 800MB are required for a minimal grml-live run (\~400MB for the chroot [$CHROOT_OUTPUT], \~150MB for the build target @@ -401,9 +464,9 @@ run (\~400MB for the chroot [$CHROOT_OUTPUT], \~150MB for the build target temporary files), if you plan to use GRML_FULL you should have at least 4GB of total free disk space -* fast network access for retreiving the Debian packages used for creating the +* fast network access for retrieving the Debian packages used for creating the chroot (check out "local mirror" and "NFSROOT" to workaround this problem as far -as possiblbe) +as possible) For further information see next section. @@ -412,57 +475,197 @@ 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 27th of september 2008. +Use squashfs-tools >=4.1-1 (available from Grml repositories as well as from +Debian/experimental) to build Grml (based) ISOs featuring kernel version +2.6.36-grml[64]. + +//////////////////////////////////////////////////////////////////////////////// +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 +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[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-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' +option, file format version 3 + +* squashfs-lzma-tools 3.3-1: LZMA as default, ZLIB support via '-nolzma' option, +file format version 3 + +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 +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). + +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/] -System -~~~~~~ +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. -* grml-live, version 0.9.4 +Using squashfs-tools 1:4.0-X on the build system +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* building grml-medium (Debian/unstable) +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). -* software versions used in the ISO (being installed automatically, recorded -just as a reference): +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. - ii busybox 1:1.10.2-2 Tiny utilities for small and embedded systems - ii initramfs-tools 0.92f.grml01 tools for generating an initramfs - ii klibc-utils 1.5.12-2 small utilities built with klibc for early boot - ii live-initramfs 1.139.1-2grml.01 Debian Live initramfs hook - ii lvm2 2.02.39-2 The Linux Logical Volume Manager - ii mdadm 2.6.7-3.1 tool to administer Linux MD arrays (software RAID) - ii udev 0.125-6grml0 /dev/ and hotplug management daemon +Outdated, JFTR: Using squashfs-lzma-tools 3.3-1 on the build system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -squashfs-lzma-tools from the grml repository supports kernel 2.6.26-grml -(version >=grml.05) 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. -Using squashfs-tools 1:3.3-7 on the build system -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +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/]. -squashfs-tools 1:3.3-7 is available via Debian/unstable and Debian/testing -(lenny) pool running: +[NOTE] +Please use squashfs-lzma-tools 3.3-1 only if you want to remaster Grml releases +2008.11 or 2009.05. - # aptitude install squashfs-tools=1:3.3-7 +Using squashfs-tools 1:3.3-7 on the build system +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -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]. Please notice that squashfs-tools 1:3.3-7 does NOT support LZMA compression at -all. 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. +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 -* Kernel 2.6.26-grml: works + 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -476,43 +679,210 @@ 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). -Versions with ZLIB compression (SQUASHFS_OPTIONS='-nolzma' or -z +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) -Versions with LZMA compression: +Using with LZMA compression: * Kernel 2.6.23-grml: works -* Kernel 2.6.26-grml: does NOT work, please use zlib mode instead +* 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 +<>. + +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://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]] 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 -: +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 : # 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 + /etc/grml/grml_live.cmdline /etc/grml/grml-buildd.conf \ + /var/log/fai /etc/grml/fai + -> finally mail grml_live_problem.tar.gz to +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? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -531,10 +901,11 @@ 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 prefered over +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? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -552,6 +923,7 @@ 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? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -568,13 +940,14 @@ 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 etch /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: @@ -608,8 +981,12 @@ or if using /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz for: /grml-live/grml-live_20071029.22138/grml_chroot// [...] -Set up apt-cacher for use with grml-live -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[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: @@ -619,14 +996,16 @@ 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 etch main contrib non-free + deb http://localhost:3142/cdn.debian.net/debian lenny main contrib non-free " [...] - FAI_DEBOOTSTRAP="etch http://localhost:3142/ftp.de.debian.org/debian etch main contrib non-free" + FAI_DEBOOTSTRAP="lenny http://localhost:3142/cdn.debian.net/debian lenny main contrib non-free" -Make sure apt-cacher is running (/etc/init.d/apt-cacher restart). That's it. -All downloaded files will be cached in /var/cache/apt-cacher/ now. +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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -638,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 etch main contrib non-free + deb http://localhost:9999/debian lenny main contrib non-free " - FAI_DEBOOTSTRAP="etch http://localhost:9999/debian" + FAI_DEBOOTSTRAP="lenny http://localhost:9999/debian" Configure approx: @@ -652,12 +1031,45 @@ 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Don't hesitate to ask on IRC (channel #grml on irc.freenode.org) or just drop me -a mail: +Don't hesitate to contact the author: +[[download]] Download / install grml-live as a Debian package ------------------------------------------------ @@ -670,24 +1082,38 @@ current development tree), just execute: 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 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 ---- 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 ------- Michael Prokop