X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=docs%2Fgrml-live.txt;h=f3274bcb309ed2cf580743948d85680ddf64c8e4;hp=2a746e56efe7ca1382d87cf2754664eb20797e8c;hb=6c567af989192cc468d284ae8532ed34cb406bfa;hpb=fb8667c77b777eba9c9ff4eb29ec4b709382f92b diff --git a/docs/grml-live.txt b/docs/grml-live.txt index 2a746e5..eb92388 100644 --- a/docs/grml-live.txt +++ b/docs/grml-live.txt @@ -4,28 +4,24 @@ grml-live(8) Name ---- -grml-live - build framework based on FAI for generating a grml and Debian based +grml-live - build framework based on FAI for generating a Grml and Debian based Linux Live system (CD/ISO) Synopsis -------- -grml-live [-a ] [-c ] [-g ] [-i ] -[-o ] [-r ] [-s ] [-t -] [-v ] [-FVh] - -******************************************************************************* -Important! This document is growing as requested. If you have questions which -aren't answered by this document yet please let me know: ! -This document currently applies to grml-live version 0.0.6. -******************************************************************************* +grml-live [-a ] [-c ] [-C ] [ +-e ] [-g ] [-i ] [ +-o ] [-r ] [-s ] [ +-t ] [-v ] [-U ] [ +-AbBFnNqQuVz] Description ----------- -grml-live provides the build system for creating a grml and Debian based Linux +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. @@ -37,8 +33,9 @@ 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 +provides and uses ${GRML_FAI_CONFIG} which is pointing to /etc/grml/fai by default +(unless overridden using the ''-D'' option). 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] @@ -49,28 +46,97 @@ 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). +base system again and again check out <>. Options ------- + -A:: + +Clean up all output directories before running the build process. After finishing, +clean up the Chroot target and Build target directories. + -a **ARCHITECTURE**:: Use the specified architecture instead of the currently running one. This -allows building a 32bit system on a 64bit host. Please notice that real +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. +nature and the need of working in a chroot. Currently supported values: i386 +and amd64. + + -b:: + +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_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 -can specify a class providing a grml-kernel (see -/etc/grml/fai/config/package_config/ for a full list). So instead of GRML_SMALL -you can also use GRML_MEDIUM and GRML_FULL instead. +the classes GRMLBASE, GRML_FULL and I386/AMD64 (depending on system +architecture) are assumed, resulting in a base system of about 350MB +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_FULL 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 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 ${GRML_FAI_CONFIG}/config. Instead use +/etc/grml/grml-live.local for configuration stuff used inside +${GRML_FAI_CONFIG}/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' + + -D **CONFIGURATION_DIRECTORY**:: + +The specified directory is used as configuration directory for grml-live and its +FAI. By default /etc/grml/fai is used as default configuration directory. If +you want to have different configuration scripts, package definitions, etc. with +without messing with the global configuration under /etc/grml/fai provided by +grml-live this option provides you the option to use your own configuration +directory. This directory is what's being referred to as ${GRML_FAI_CONFIG} +throughout this documentation. + + -e **EXTRACT_ISO_NAME**:: + +The squashfs inside the specified ISO will be extracted and used as the chroot. +This option is useful for remastering, in combination with -A and -b or -u. -F:: @@ -79,6 +145,8 @@ Force execution and do not prompt for acknowledgment of configuration. -g **GRML_NAME**:: 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:: @@ -89,6 +157,29 @@ 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. + + -N:: + +Bootstrap the chroot without building bootloader, squashfs, or finalizing the +ISO. Use this option if installation of some packages fails, you want to run +custom commands or similar. +The main use of this option is to save time by skipping stages which aren't +necessary for bootstrapping the chroot and which would get executed more than +once when iterating through the initial bootstrapping. +Alternatively, use this option as a test run of grml-live. Once you are +satisfied with the state of your grml_chroot, use grml-live **-u** to build the +remaining stages and finalize the ISO. + -o **OUTPUT_DIRECTORY**:: Main output directory of the build process of FAI. Some directories are created @@ -96,6 +187,16 @@ 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'. + + -Q:: + +Build the ISO without generating a netboot package. + -r **RELEASENAME**:: Specify name of the release. @@ -103,13 +204,25 @@ 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. +"squeeze" (being current Debian/stable). Supported values are: etch, lenny, +squeeze, sid. Debian "squeeze" requires a recent base.tgz +(${GRML_FAI_CONFIG}/config/basefiles/$CLASSNAME.tar.gz) or a recent version of +debootstrap. -t **TEMPLATE_DIRECTORY**:: -Specify place of the templates used for building the ISO. By default +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. + + -U **USERNAME**:: + +Sets ownership of all build output files to specified username before exiting. + -v **VERSION_NUMBER**:: Specify version number of the release. @@ -118,38 +231,37 @@ Specify version number of the release. Increase verbosity in the build process. + -z:: + +Use ZLIB instead of LZMA/XZ 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 +To get a 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: +To get a 64bit Debian-testing and grml-small based Live-CD using /srv/grml-live +as build and output directory use the following command line on your amd64 +system: - # grml-live -c GRMLBASE,GRML_SMALL,I386 -o /home/mika/grml-live - -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 + # grml-live -s testing -c GRMLBASE,GRML_SMALL,AMD64 -o /srv/grml-live [NOTE] -If you have about 700MB of free space inside /dev/shm (being a tmpfs, usually -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 another directory for $CHROOT_OUTPUT, -$BUILD_OUTPUT and $ISO_OUTPUT if you plan to create more persistent output. :) +If you have enough RAM, just run "mount -t tmpfs none /media/ramdisk" to get a +tmpfs ("RAMDISK"), and use /media/ramdisk as build and output directory - this +results in a very fast build process. Note that these files will be gone when +rebooting. +[[main-features]] Main features of grml-live -------------------------- -* create a grml-/Debian-based Linux Live-CD with one single command +* create a Grml-/Debian-based Linux Live-CD with one single command * class based concept, providing a maximum of flexibility @@ -160,8 +272,7 @@ Debian repositories * native support of FAI features -* multi-arch support (work in progress) - +[[class-concept]] The class concept ----------------- @@ -176,11 +287,11 @@ grml-live, as well as the architecture dependent class which provides the kernel GRML_SMALL, GRML_MEDIUM or GRML_FULL). The following files and directories are relevant for class GRMLBASE by default: - /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 + ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/ + ${GRML_FAI_CONFIG}/config/debconf/GRMLBASE + ${GRML_FAI_CONFIG}/config/class/GRMLBASE.var + ${GRML_FAI_CONFIG}/config/hooks/instsoft.GRMLBASE + ${GRML_FAI_CONFIG}/config/package_config/GRMLBASE Take a look at the next section for information about the concept of those files/directories. @@ -188,25 +299,75 @@ 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,AMD64,FOOBAR" inside /etc/grml/grml-live.local +or invoke grml-live using the classes option: "grml-live -c +GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...". More details regarding the class concept can be found in the documentation of FAI itself (being available at /usr/share/doc/fai-doc/). +[[X7]] +[[classes]] Available classes ----------------- -To be done... +The package selection part of the classes can be found in +${GRML_FAI_CONFIG}/config/package_config whereas some further classes are defined for +example in ${GRML_FAI_CONFIG}/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_FULL: full featured Grml, also known as the "normal", full grml as +introduced in December 2011 (~350MB ISO size). + +* GRML_MEDIUM: medium sized Grml version, used to be known as grml-medium +until December 2011 (~220MB ISO size). + +* GRML_SMALL: minimum sized Grml version, known as grml-small (~110MB ISO +size). + +* GRML_XL: large size Grml version, used to be known as "full grml" until +December 2011 (~700MB ISO size). + +* 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,...) + +* SOURCES: retrieve Debian source packages after installation. Files will be +placed in the output directory under grml_sources. + +* 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 +fai-client) grml uses ${GRML_FAI_CONFIG}/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 @@ -218,88 +379,96 @@ 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 + ${GRML_FAI_CONFIG}/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 +GRML_FAI_CONFIG=/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 + ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf 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 + ${GRML_FAI_CONFIG}/NFSROOT 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. - - /etc/grml/fai/config/ + ${GRML_FAI_CONFIG}/config/ The main directory for configuration of FAI/grml-live. More details below. - /etc/grml/fai/config/class/ + ${GRML_FAI_CONFIG}/config/class/ This directory contains files which specify main configuration variables for the FAI classes. - /etc/grml/fai/config/debconf/ + ${GRML_FAI_CONFIG}/config/debconf/ This directory provides the files for preseeding/configuration of debconf through files. - /etc/grml/fai/config/hooks/ + ${GRML_FAI_CONFIG}/config/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/ + ${GRML_FAI_CONFIG}/config/package_config/ 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 +"grml-live -c GRMLBASE,GRML_SMALL,AMD64 ..." only the configuration of GRMLBASE, +GRML_SMALL and and AMD64 will be taken. If you use 'grml-live -c +GRMLBASE,GRML_SMALL,AMD64,FOOBAR ...' then the files of GRMLBASE, GRML_SMALL, +AMD64 **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/ + ${GRML_FAI_CONFIG}/config/scripts/ 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/ + ${GRML_FAI_CONFIG}/live-initramfs/ This directory provides the files used for building the initramfs/initrd via live-initramfs(8). +[[log-files]] +Available log files +------------------- + +Starting with grml-live version 0.17.0 you should find log files in a directory +named 'grml_logs' in the output directory (next to grml_isos, grml_chroot,...). + +grml-live versions before 0.17.0 used to log into /var/log/grml-live.log +and /var/log/fai/grml. + +[[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). 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 @@ -307,57 +476,158 @@ 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. +[[X8]] +[[current_state]] +Current state of grml-live with squashfs-tools and kernel +--------------------------------------------------------- + +Use squashfs-tools >=4.2-1 (available from Grml repositories as well as from +Debian/testing and Debian/unstable) to build Grml (based) ISOs featuring kernel +version 2.6.38-grml[64] or newer. + +[[faq]] FAQ --- -Help, I'm using Debian etch and I don't have FAI version >3.2 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[[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 just use Grml. +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 squeeze (6.0) with debian-backports +enabled. (This is important for squashfs-tools.) + +What we want: build a Grml ISO based on Debian/wheezy for the amd64 architecture +using grml-live. + +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 + + # 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 I386.tar.gz /etc/grml/fai/config/basefiles/ + # mv AMD64.tar.gz /etc/grml/fai/config/basefiles/ + + # install relevant tools + apt-get install -t squeeze-backports squashfs-tools + apt-get --no-install-recommends install grml-live + + # 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="wheezy http://cdn.debian.net/debian/" + # ARCH="amd64" + CLASSES="GRMLBASE,GRML_FULL,AMD64" + EOF + + # just optional(!) - upgrade FAI to latest available version: + cat >> /etc/apt/sources.list << EOF + # fai: + deb http://fai-project.org/download squeeze 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: - wget http://www.informatik.uni-koeln.de/fai/download/etch/fai-client_3.2.1_all.deb \ - http://www.informatik.uni-koeln.de/fai/download/etch/fai-server_3.2.1_all.deb - dpkg -i fai-client_3.2.1_all.deb fai-server_3.2.1_all.deb + [*] Successfully finished execution of grml-live [running 687 seconds] -or check out the link:http://www.informatik.uni-koeln.de/fai/[FAI-homepage] for -further details. +and the ISO can be found inside /grml-live/grml-live/grml_isos/ then. +[[grml_fai_config_variable]] +What is $GRML_FAI_CONFIG? +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The variable '$GRML_FAI_CONFIG' is pointing to the directory /etc/grml/fai by +default. To provide you a maximum of flexibility you can set up your own +configuration directory (e.g. based on /etc/grml/fai) and use this directory +running grml-live with the '-D ' option. Now '$GRML_FAI_CONFIG' +points to the specified directory instead of using /etc/grml/fai and all the +configuration files, scripts and hooks will be taken from your +'$GRML_FAI_CONFIG' directory. + +[[how-to-debug]] I've problems with the build process. How to start debugging? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Check out the logs inside /var/log/fai/dirinstall/... 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 the directory 'grml_logs' next to your grml_chroot, +grml_isos,... directories. + +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]. - # history | grep grml-live > /etc/grml/grml_live.cmdline - # tar zcf grml_live_problem.tar.gz /etc/grml/grml-live.conf \ - /var/log/fai/dirinstall /etc/grml/fai +[[install-local-files]] +How do 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. +Yes. Set up an according sources.list configuration as class file in +${GRML_FAI_CONFIG}/config/files/etc/apt/sources.list.d/ and adjust the variable +FAI_DEBOOTSTRAP (if not already using NFSROOT's base.tgz) inside +/etc/grml/grml-live.conf[.local]. If you're setting up your own class file don't +forget to include the class name in the class list (grml-live -c ...). -If you want to use a local (for example NFS mount) mirror additionally, just -adjust MIRROR_DIRECTORY and MIRROR_SOURCES insede /etc/grml/grml-live.conf as -well. +If you want to use a local (for example NFS mount) mirror additionally then +adjust MIRROR_DIRECTORY in /etc/grml/grml-live.conf[.local] 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 you want to use a HTTP Proxy (like apt-cacher-ng), set APT_PROXY. Example: -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. + APT_PROXY="http://localhost:3142/" +[[add-additional-debian-packages]] How do I add additional Debian package(s) to my CD/ISO? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -373,8 +643,9 @@ Just create a new class (using the package_config directory): and specify it when invoking grml-live then: - # grml-live -c GRMLBASE,GRML_SMALL,I386,MIKA + # grml-live -c GRMLBASE,GRML_SMALL,AMD64,MIKA +[[reset-grml-live-configuration]] I fscked up my grml-live configuration. How do I reset it to the defaults? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -384,98 +655,84 @@ 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. - -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 - tar zcf base.tgz ./ +[[create-a-base-tgz]] +How do I create a base.tgz? +~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Then check out where your NFSROOT is located: +First of all create the chroot using debootstrap: - # grep '^NFSROOT' /etc/grml/fai/make-fai-nfsroot.conf - NFSROOT=/grml/fai/nfsroot + BASECHROOT='/tmp/basefile' + debootstrap squeeze "$BASECHROOT" http://cdn.debian.net/debian + tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf base.tar.gz ./ -So as /grml/fai/nfsroot is your NFSROOT place the file under -/grml/fai/nfsroot/live/filesystem.dir/var/tmp/: +[TIP] +By default debootstrap builds a chroot matching the architecture of the running +host system. If you're using an amd64 system and want to build an i386 base.tgz +then invoke debootstrap using the '--arch i386' option. Disclaimer: building an +AMD64 base.tgz won't work if you are using a 32bit kernel system of course. - mv base.tgz /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz +Then move the base.tar.gz to /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz. +Use e.g. I386 as $CLASSNAME for i386 chroots and AMD64 for amd64 chroots. -Now running "grml-live ..." will use this file as main system instead of -executing debootstrap. Check out the output for the following lines: +Now executing grml-live should use this file as base system instead of executing +debootstrap. Check out the output for something like: [...] - Calling task_extrbase - Unpacking Debian base archive - Extracting /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz - Calling task_mirror + ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot// [...] -[NOTE] - -Notice that you can also use /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz if -you prefer to use /etc as the main configuration directory instead of -/path/to/nfsroot/.... (Thanks to Thomas Lange for the tip.) +[TIP] +Existing base.tgz can be found at http://daily.grml.org/ -Set up apt-cacher for use with grml-live -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[[apt-cacher]] +Set up apt-cacher-ng for use with grml-live +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Make sure /etc/grml/grml-live.conf provides according GRML_LIVE_SOURCES and +Make sure /etc/grml/grml-live.local provides according APT_PROXY and FAI_DEBOOTSTRAP: - # cat /etc/grml/grml-live.conf + # cat /etc/grml/grml-live.local [...] - 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 - " + APT_PROXY="http://localhost:3142/" [...] - FAI_DEBOOTSTRAP="etch http://localhost:3142/ftp.de.debian.org/debian etch main contrib non-free" + FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze 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-ng is running ('/etc/init.d/apt-cacher-ng restart'). +That's it. All downloaded files will be cached in /var/cache/apt-cacher-ng then. -Set up approx for use with grml-live -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[[revert_manifold]] +How do I revert the manifold feature from an ISO? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Make sure /etc/grml/grml-live.conf provides according GRML_LIVE_SOURCES and -FAI_DEBOOTSTRAP: +The so called manifold feature Grml ISOs use by default allows one to use the same +ISO for CD boot and USB boot. If you notice any problems when booting just +revert the manifold feature running: - # 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 etch main contrib non-free - " - FAI_DEBOOTSTRAP="etch http://localhost:9999/debian" + % dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc -Configure approx: +To switch from manifold to isohybrid mode (an alternative approach provided by +syslinux) then just execute: - # cat /etc/approx/approx.conf - [...] - debian http://ftp.at.debian.org/debian - grml http://deb.grml.org/ + % isohybrid grml.iso + +[[basetgz]] +How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -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. +Execute the following commands (requires root): -I've a question which isn't answered by this document -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 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 * -Don't hesitate to ask on IRC (channel #grml on irc.freenode.org) or just drop me -a mail: +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). +[[download]] Download / install grml-live as a Debian package ------------------------------------------------ @@ -484,31 +741,39 @@ 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: - hg clone http://hg.grml.org/grml-live + git clone git://git.grml.org/grml-live cd grml-live debuild -us -uc +[[source]] Source ------ The source of grml-live is available at -link:http://hg.grml.org/grml-live/[http://hg.grml.org/grml-live/] - -TODO list ---------- - -Check out link:http://wiki.grml.org/doku.php?id=grml-live[grml-live@grml-wiki] -for details. +link:https://github.com/grml/grml-live/[https://github.com/grml/grml-live/] +[[bugs]] Bugs ---- Please report feedback, link:http://grml.org/bugs/[bugreports] and wishes -link:http://grml.org/contact/[to the grml-team]! +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 . +Michael Prokop ///////////////////////////////////// // vim:ai tw=80 ft=asciidoc expandtab