X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=docs%2Fgrml-live.txt;h=f5bfbd4ad3b039fc536a7352e75ecaba5441c194;hp=14b492b3fad7c3e13bad143f7f11083245b3bb87;hb=18de83fa6503c91a261c71ff05a7d407892d63ce;hpb=5984c749460d7fc5840a6ba4d63b997245b32ce8 diff --git a/docs/grml-live.txt b/docs/grml-live.txt index 14b492b..f5bfbd4 100644 --- a/docs/grml-live.txt +++ b/docs/grml-live.txt @@ -3,151 +3,369 @@ grml-live(8) Name ---- -grml-live - build process script for generating a (grml based) Linux Live-ISO + +grml-live - build framework based on FAI for generating a grml and Debian based +Linux Live system (CD/ISO) Synopsis -------- -grml-live [-c ] [-t ] [-F] [-h|--help] -******************************************************************************* -Important! grml-live is under heavy construction, your feedback is highly -appreciated. This document is growing as requested. If you have questions which -aren't answered by this document yet please let me (mika@grml.org) know! -******************************************************************************* +grml-live [-a ] [-c ] [-C ] [-g +] [-i ] [-o ] [-r ] [-s +] [-t ] [-v ] [-bBFhquVz] + +CAUTION: Please check out <> for details about current state of involved +tools before starting with grml-live or if you encounter any problems. Description ----------- -grml-live provides the build system for creating (a grml based) live-cd. The -build system is based on link:http://www.informatik.uni-koeln.de/fai/[FAI] -(Fully Automatic Installation). +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 +Installation). grml-live uses the "fai dirinstall" feature to generate a chroot +system based on the class concept of FAI (see later sections for further +details) and provides the framework to be able to generate a full-featured ISO. +It does not use all the FAI features by default though and you don't have to +know FAI to be able to use it. -FAI uses a class based system. This gives you the flexibility to choose the -packages you would like to include on your very own Linux live-cd without having -to deal with all the details of a build process. +The use of FAI gives you the flexibility to choose the packages you would like +to include on your very own Linux Live-CD without having to deal with all the +details of a build process. -CAUTION: grml-live does not use /etc/fai for configuration but instead provides -and uses /etc/grml/fai. This ensures that it does not clash with default FAI -configuration and packages, so you can use grml-live and FAI completely -independent! +CAUTION: grml-live does **not** use /etc/fai for configuration but instead +provides and uses /etc/grml/fai. This ensures that it does not clash with +default FAI configuration and packages, so you can use grml-live and FAI +completely independent at the same time! [NOTE] + Please notice that you should have a fast network connection as all the Debian -packages will be installed via network. If you want to use a local mirror -(strongly recommended!) checkout -mkdebmirror (see /usr/share/doc/grml-live/examples/mkdebmirror) -debmirro(1) and reprepro(1) (check out -/usr/share/doc/grml-live/examples/reprepro/ for a sample configuration). -To avoid downloading of the base system check out FAI's -NFSROOT (check docs for ../fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz). +packages will be downloaded and installed via network. If you want to use a +local mirror (strongly recommended if you plan to use grml-live more than once) +checkout mkdebmirror (see /usr/share/doc/grml-live/examples/mkdebmirror), +debmirror(1), reprepro(1) (see /usr/share/doc/grml-live/examples/reprepro/ for a +sample configuration), apt-cacher(1) and approx(8). To avoid downloading the +base system again and again check out FAI's NFSROOT (see FAQ of this document +for details). Options ------- - -c **CLASSES**:: + -a **ARCHITECTURE**:: -Specify the CLASSES to be used for building the ISO via fai. By default only -the classes GRML and I386 are assumed, resulting in a small base system (being -about ~150MB ISO size). +Use the specified architecture instead of the currently running one. This +allows building a 32bit system on a 64bit host (though you can't build a 64bit +system on a 32bit system/kernel of course). Please notice that real +crosscompiling (like building a ppc system on x86) isn't possible due to the +nature and the need of working in a chroot. Currently supported values: i386 +and amd64. - -t **TARGET_DIRECTORY**:: + -b:: -Output directory of the build process of FAI - being the chroot -used for building the ISO. +Build the ISO without updating the chroot via FAI. This option is useful for +example when working on stable releases: if you have a working base +system/chroot and do not want to execute any further updates (via "-u" option) +but intend to only build the ISO. + + -B:: + +Build the ISO without touching the chroot at all. This option is useful if +you modified anything that FAI or grml-live might adjust via grml's FAI +scripts. It's like the '-b' option but even more advanced. Use only if you +really know that you do not want to update the chroot. + + -c **CLASSES**:: + +Specify the CLASSES to be used for building the ISO via FAI. By default only +the classes GRMLBASE, GRML_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_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 as default configuration. If a file named +/etc/grml/grml-live.local exists it is used as well (sourced after reading +/etc/grml/grml-live.conf meant as main file for local configuration). As a last +option the specified configuration file is sourced so it is possible to override +settings of /etc/grml/grml-live.conf as well as of /etc/grml/grml-live.local. +Please notice that all configuration files have to be adjusted during execution +of grml-live, so please make sure you use /etc/grml/grml-live.conf as a base for +your own configuration file (usually /etc/grml/grml-live.local). Please also +notice that the configuration file specified via this option is **not** (yet) +supported inside the scripts/hooks/classes at /etc/grml/fai/config. Instead use +/etc/grml/grml-live.local for configuration stuff used inside +/etc/grml/fai/config. -F:: -Force execution and do not display summary of configuration details. +Force execution and do not prompt for acknowledgment of configuration. + + -g **GRML_NAME**:: - -h|--help:: +Set the grml flavour name. Common usage examples: grml, grml-small, grml64. +Please do NOT use blanks and any special characters like '/', ';' inside +GRML_NAME, otherwise you might notice problems while booting. + + -h:: Display short usage information and exit. -How to get your own live-cd - the easy, fast and simple way ------------------------------------------------------------ + -i **ISO_NAME**:: + +Specify name of ISO which will be available inside $OUTPUT_DIRECTORY/grml_isos +by default. + + -I **CHROOT_INSTALL**:: + +Specify name of source directory which provides files that should become part of +the chroot/ISO. Not enabled by default. Note: the files are installed under '/' +in the chroot so you have to create the rootfs structure on your own. + + -o **OUTPUT_DIRECTORY**:: + +Main output directory of the build process of FAI. Some directories are created +inside this target directory, being: grml_cd (where the files for creating the +ISO are located, including the compressed squashfs file), grml_chroot (the +chroot system) and grml_isos (where the resulting ISO is stored). + + -q:: + +Build the ISO without (re-)creating the squashfs compressed file using mksquashfs. +This option is useful if you just want to update parts outside the chroot in the ISO. +Consider combining this option with the build-only option '-b'. + + -r **RELEASENAME**:: + +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 +(/etc/grml/fai/config/basefiles/....tar.gz) or a recent version of debootstrap. + + -t **TEMPLATE_DIRECTORY**:: + +Specify place of the templates used for building the ISO. By default +(and if not manually specified) this is /usr/share/grml-live/templates/. + + -u:: + +Update existing chroot instead of rebuilding it from scratch. This option is +based on the softupdate feature of FAI. + + -v **VERSION_NUMBER**:: + +Specify version number of the release. + + -V:: -To get a small, Debian-stable and grml based live-cd using /dev/shm/ -as build and output directory: +Increase verbosity in the build process. + + -z:: + +Use ZLIB instead of LZMA compression in mksquashfs part of the build process. + +[[usage-examples]] +Usage examples +-------------- + +To get a small, Debian-stable and grml-based Live-CD using /grml/grml-live +as build and output directory just run: # grml-live +To get a small Debian-unstable and grml-small based Live-CD using +/home/mika/grml-live as build and output directory just use: + + # grml-live -s sid -c GRMLBASE,GRML_SMALL,I386 -o /home/mika/grml-live + +To get a medium sized, Debian-unstable and grml-based Live-CD for i386 +architecture using /grml/grml-live as build and output directory just run: + + # grml-live -s sid -a i386 -c GRMLBASE,GRML_MEDIUM,I386 + +To get a small, Debian-unstable and grml-based Live-CD using /tmp as build and +output directory and use grml_0.0-3.iso as ISO name (placed inside +/tmp/grml_isos) just invoke: + + # grml-live -o /tmp -c GRMLBASE,GRML_SMALL,I386 -s sid -i grml_0.0-3.iso + [NOTE] If you have about 700MB of free space inside /dev/shm (being a tmpfs, usually -you have >=1GB of RAM) just run "mount -o remount,suid,dev,rw /dev/shm" and use -/dev/shm as build and output directory - resulting in very fast build process. -But please be aware of the fact that rebooting your system will result in an -empty /dev/shm, so please another directory for $CHROOT_TARGET, $BUILD_TARGET -and $ISO_TARGET if you plan to create more persistent output. :) +you should have >=1GB of RAM) just run "mount -o remount,suid,dev,rw /dev/shm" +and use /dev/shm as build and output directory - resulting in very fast build +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 +-------------------------- + +* create a grml-/Debian-based Linux Live-CD with one single command + +* class based concept, providing a maximum of flexibility + +* supports integration of own hooks, scripts and configuration +* supports use and integration of own Software and/or Kernels via simple use of +Debian repositories + +* native support of FAI features + +* multi-arch support (work in progress) + +[[class-concept]] The class concept ----------------- -grml-live uses FAI and its class based concept for adjusting configuration -according to your needs. This gives you flexibility and strength without losing -the simplicity in the build process. +grml-live uses FAI and its class based concept for adjusting configuration and +setup according to your needs. This gives you flexibility and strength without +losing the simplicity in the build process. -The main and base class provided by grml-live is named GRML. It's strongly -recommended to **always** use the class GRML when building an ISO using -grml-live as well as the architecture dependend class (being 'I386' for x86_32 -currently only). The following files and directories are relevant for class GRML -by default: +The main and base class provided by grml-live is named GRMLBASE. It's strongly +recommended to **always** use the class GRMLBASE when building an ISO using +grml-live, as well as the architecture dependent class which provides the kernel +(being 'I386' for x86_32 and 'AMD64' for x86_64) and a GRML_* class (like +GRML_SMALL, GRML_MEDIUM or GRML_FULL). The following files and directories are +relevant for class GRMLBASE by default: - /etc/grml/fai/config/scripts/GRML/ - /etc/grml/fai/config/debconf/GRML - /etc/grml/fai/config/class/GRML.var - /etc/grml/fai/config/hooks/instsoft.GRML - /etc/grml/fai/config/package_config/GRML + /etc/grml/fai/config/scripts/GRMLBASE/ + /etc/grml/fai/config/debconf/GRMLBASE + /etc/grml/fai/config/class/GRMLBASE.var + /etc/grml/fai/config/hooks/instsoft.GRMLBASE + /etc/grml/fai/config/package_config/GRMLBASE Take a look at the next section for information about the concept of those files/directories. If you want to use your own configuration, extend an existing configuration -and/or add additional packages to your ISO just invent a new class. For example -if you want to use your own class named "FOOBAR" just extend CLASSES="GRML" inside -/etc/grml/grml-live.conf to CLASSES="GRML,FOOBAR" or invoke grml-live using -the classes option: "grml-live -c GRML,FOOBAR ...". +and/or add additional packages to your ISO just invent a new class (or extend an +existing one). For example if you want to use your own class named "FOOBAR" just +set CLASSES="GRMLBASE,GRML_SMALL,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 (available at /usr/share/doc/fai-doc/). +FAI itself (being available at /usr/share/doc/fai-doc/). + +[[X7]] +[[classes]] +Available classes +----------------- + +The package selection part of the classes can be found in +/etc/grml/fai/config/package_config whereas some further classes are defined for +example in /etc/grml/fai/config/scripts/ so specific feature sets can be +selected. The following classes are predefined: + +* DEBORPHAN: get rid of all packages listed in output of Deborphan + +* GRMLBASE: the main class responsible for getting a minimal subset of what's +defining a grml system. Important parts of the buildprocess are specified in +this class as well, so unless you have a really good reason you should always +use this class. + +* 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 + +* GRML_POWERPC: grml for PowerPC architecture, not supported yet (still work in +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). This +avoids to get rid of /usr/share/locale - which happens by default otherwise - as +well. + +* NO_ONLINE: do not run scripts during the chroot build process which require a +network connection + +* RELEASE: run some specific scripts and commands to provide the workflow for an +official grml release + +* REMOVE_DOCS: get rid of documentation directories (like /usr/share/doc, +/usr/share/man/, /usr/share/info,...) + +* XORG: providing important packages for use with a base grml-featured X.org +setup + +[[files]] Files ----- Notice that grml-live ships FAI configuration files that do not use the same -namespace as the FAI packages itself. This ensures that grml-live does not -clash with your usual FAI configuration, so instead of /etc/fai/fai.conf -(package fai-client) grml uses /etc/grml/fai/fai.conf instead. For more details -see below. To get an idea how another configuration or example files could look -like check out /usr/share/doc/fai-doc/examples/simple/ (provided by Debian package -fai-doc). /usr/share/doc/fai-doc/fai-guide.html/ch-config.html also provides -documentation regarding configuration possibilities. +namespace as the FAI packages itself. This ensures that grml-live does not clash +with your usual FAI configuration, so instead of /etc/fai/fai.conf (package +fai-client) grml uses /etc/grml/fai/fai.conf instead. For more details see +below. To get an idea how another configuration or example files could look like +check out /usr/share/doc/fai-doc/examples/simple/ (provided by Debian package +fai-doc). Furthermore /usr/share/doc/fai-doc/fai-guide.html/ch-config.html +provides documentation regarding configuration possibilities. /usr/sbin/grml-live -Script for the main build process (being a wrapper around FAI currently). -Requires root permissions for execution. +Script for the main build process. Requires root permissions for execution. + + /etc/grml/grml-live.conf + +Main configuration file for grml-live which should be considered as a reference +configuration file only. Please use /etc/grml/grml-live.local for local +configuration instead. + + /etc/grml/grml-live.local + +All the local configuration should go to this file. This file overrides any +defaults of grml-live. Configurations via /etc/grml/grml-live.local are 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 -Main configuration file which specifies where all the configuration files and -scripts for FAI/grml-live can be found. By default it is +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. /etc/grml/fai/make-fai-nfsroot.conf -TODO: documentation +This file is used by make-fai-nfsroot(8) only. Usually you don't have to change +anything inside this file. If you want to modify NFSROOT though you can adjust +it there. /etc/grml/fai/NFSROOT -TODO: documentation +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 ISO. If you want to use a local mirror you have -to adjust this file. +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 +check out /etc/grml/fai/files/etc/apt instead. /etc/grml/fai/config/ @@ -165,94 +383,491 @@ through files. /etc/grml/fai/config/hooks/ -This directory provides files for customizing the build process through hooks. +This directory provides files for customising the build process through hooks. Hooks are user defined programs or scripts, which are called during the installation process. /etc/grml/fai/config/package_config/ -File with lists of software packages to be installed or removed. The different -classes describe what should find its way to your ISO. When running 'fai -v -C -/etc/grml/fai -cGRML dirinstall ...' only the files from the directory GRML/ -will be taken, if you use 'fai -v -C /etc/grml/fai -cGRML,FOOBAR dirinstall ...' -then the files of GRML/ **plus** the files from FOOBAR/ will be taken. So just -create a new class to adjust it to your needs. Please notice that the directory -GRML contains a package list defining a minimum but still reasonable package -configuration. +Directory with lists of software packages to be installed or removed. The +different classes describe what should find its way to your ISO. When running +"grml-live -c GRMLBASE,GRML_SMALL,I386 ..." only the configuration of GRMLBASE, +GRML_SMALL and and I386 will be taken. If you use 'grml-live -c +GRMLBASE,GRML_SMALL,I386,FOOBAR ...' then the files of GRMLBASE, GRML_SMALL, +I386 **plus** the files from FOOBAR will be taken. So just create a new class to +adjust the package selection according to your needs. Please notice that the +directory GRMLBASE contains a package list defining a minimum but still +reasonable package configuration. /etc/grml/fai/config/scripts/ -Scripts for customising the ISO within build process. +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. + +The FAI part of grml-live logs to /var/log/fai/$HOSTNAME/ - so the +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. + +[[requirements]] Requirements for the build system --------------------------------- -* any Debian based system should be sufficient (if not please send a bug -report), for example a 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_TARGET], \~150MB for the build target -[$BUILD_TARGET] and \~150MB for the resulting ISO [$ISO_TARGET] plus some -temporary files) +run (\~400MB for the chroot [$CHROOT_OUTPUT], \~150MB for the build target +[$BUILD_OUTPUT] and \~150MB for the resulting ISO [$ISO_OUTPUT] plus some +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) -Known TODOs ------------ +For further information see next section. + +[[X8]] +[[current_state]] +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 +encounter. + +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! + +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 +2008.11 or 2009.05. + +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 +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 (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). + +[[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 + + Package: squashfs-lzma-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 + + # install basefile so we don't have to build basic chroot from scratch: + mkdir -p /etc/grml/fai/config/basefiles/ + mv base.tgz /etc/grml/fai/config/basefiles/I386.tar.gz + + # install relevant tools: + 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 + # 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/" + ARCH="i386" + CLASSES="GRMLBASE,GRML_MEDIUM,I386" + ZERO_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://ftp.de.debian.org/debian squeeze main contrib non-free + " + EOF + + # 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 + 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 + 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 +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 : + + # 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 + +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? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +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 prefered 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://ftp.de.debian.org/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// + [...] + +[[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/ftp.de.debian.org/debian lenny main contrib non-free + " + [...] + FAI_DEBOOTSTRAP="lenny http://localhost:3142/ftp.de.debian.org/debian lenny main contrib non-free" -* do not use /dev/shm/ als default target directory (which one do we want to use -instead?) +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. -* add support for amd64 [gebi?] + ppc [formorer?] (and identify all packages -that are arch specific so we have a clean package list in all classes) +[[approx]] +Set up approx for use with grml-live +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* support different grml-flavours through classes right out-of-the-box (being: -grml, grml64, grml-small for at least x86, amd64 and ppc) [currently it defaults -to Debian/stable I386] +Make sure /etc/grml/grml-live.conf provides according GRML_LIVE_SOURCES and +FAI_DEBOOTSTRAP: -* support setting grml-live configuration on the command line to provide -different flavours using the commandline only + # 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" -* really support signed apt repositories (currently it's deactivated via fai's -dirinstall for some packages) +Configure approx: -* explain (and provide configuration for) the use of NFSROOT + # cat /etc/approx/approx.conf + [...] + debian http://ftp.at.debian.org/debian + grml http://deb.grml.org/ -* support setting stuff like ISO name, version,... (especially for stuff inside -x86_files/boot/isolinux) +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. -* support "final builds" (including stuff like md5sums) +[[question]] +I've a question which isn't answered by this document +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* use hooks of FAI as far as possible in all grml-live scripts +Don't hesitate to ask on IRC (channel #grml on irc.freenode.org) or just drop me +a mail: -* the grml-live class(es) should send output as used inside FAI as well (so it's -not as verbose unless you specify it, make it configurable) +[[download]] +Download / install grml-live as a Debian package +------------------------------------------------ -* provide possibility for cleanup of all created build directories +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: -* support hooks to further allow customisation of the build process + git clone git://git.grml.org/grml-live + cd grml-live + debuild -us -uc -* support nocolor-option for /etc/grml/fai/grml/grml_cleanup_chroot +[[source]] +Source +------ -* copy files from $FAI_CONFIGDIR/... instead of using 'cat > $FILE << EOF ...' -inside all the /etc/grml/fai/config/scripts/GRML/-scripts +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. + +[[bugs]] Bugs ---- Please report feedback, link:http://grml.org/bugs/[bugreports] and wishes link:http://grml.org/contact/[to the grml-team]! +[[authors]] Authors ------- -Michael Prokop . +Michael Prokop ///////////////////////////////////// // vim:ai tw=80 ft=asciidoc expandtab