X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=docs%2Fgrml-live.txt;h=caef1ee9e0ff1fa8906d5e48706e3f62971e9da6;hp=293cfd22054e017722b7ce5caac8152b66f776b5;hb=7833e771fd46dad67cf85db849f798204ca6bb9d;hpb=83d621a9e61c969169b90b75619aacd12637564c diff --git a/docs/grml-live.txt b/docs/grml-live.txt index 293cfd2..caef1ee 100644 --- a/docs/grml-live.txt +++ b/docs/grml-live.txt @@ -43,8 +43,7 @@ completely independent at the same time! Please notice that you should have a fast network connection as all the Debian 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 +checkout 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 <>. @@ -84,12 +83,10 @@ really know that you do not want to update the chroot. Specify the CLASSES to be used for building the ISO via FAI. By default only 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. +architecture) are assumed. 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 e.g. +GRML_SMALL. [IMPORTANT] All class names should be written in uppercase letters. Do not use a dash, use @@ -205,7 +202,7 @@ Specify name of the release. Specify the Debian suite you want to use for your live-system. If unset defaults to "testing". Supported values are: stable, testing, unstable (or their -corresponding release names like "jessie"). Please be aware that recent Debian +corresponding release names like "stretch"). Please be aware that recent Debian suites might require a recent base.tgz (${GRML_FAI_CONFIG}/config/basefiles/$CLASSNAME.tar.gz) or a recent version of debootstrap. @@ -256,7 +253,7 @@ Use ZLIB instead of LZMA/XZ compression in mksquashfs part of the build process. Usage examples -------------- -To get a Debian-stable and Grml-based Live-CD using /grml/grml-live +To get a Debian-stable and Grml-based Live-CD using ./grml as build and output directory just run: # grml-live @@ -335,6 +332,13 @@ selected. The following classes are predefined: * DEBORPHAN: get rid of all packages listed in output of deborphan +* FILE_RC: instead of using systemd as init system use file-rc instead. file-rc +was the init system used by Grml until and including stable release 2014.11, +starting with beginning of 2016 Grml switched to systemd instead. If you want to +build a live system in the old style using file-rc instead of systemd then enable +this class. Please notice that the Grml team no longer provides support for it +though. + * FRESHCLAM: execute freshclam (if it's present) to update clamav definitions (increases resulting ISO size ~70MB). By default it's skipped to avoid bigger ISO size. @@ -342,12 +346,18 @@ ISO size. * 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. +use this class. Please be aware that using *just* the GRMLBASE class won't be +enough, because the kernel packages (e.g. linux-image-pass:[*]) are chosen in +further GRML_pass:[*] classes (to provide maximum flexibility with kernel +selection). If you don't want to use the existing GRML_FULL or GRML_SMALL +classes, define your own CLASS file choosing the kernel package you want to use +(and don't forget to include your CLASS in the arguments of grml-live's `-c...` +command line option). * GRML_FULL: full featured Grml, also known as the "normal", full grml as -introduced in December 2011 (~460MB ISO size). +introduced in December 2011 (~750 ISO size). -* GRML_SMALL: minimum sized Grml version, known as grml-small (~230MB ISO +* GRML_SMALL: minimum sized Grml version, known as grml-small (~360MB ISO size). * LATEX: LaTeX(-related) packages like auctex, texlive,... @@ -440,7 +450,7 @@ installation process. 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,AMD64 ..." only the configuration of GRMLBASE, -GRML_SMALL and and AMD64 will be taken. If you use 'grml-live -c +GRML_SMALL 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 @@ -475,11 +485,11 @@ 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 -[$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 +* enough free disk space; at least ~2GB are required for a minimal grml-live +run (\~1GB for the chroot [$CHROOT_OUTPUT], \~400MB for the build target +[$BUILD_OUTPUT], \~35MB for the netboot files and \~350MB 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 retrieving the Debian packages used for creating the chroot (check out "local mirror" to workaround this problem as far as possible) @@ -506,9 +516,9 @@ 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 jessie (8.x). +What we have: plain, original Debian stretch (9.x). -What we want: build a Grml ISO based on Debian/jessie for the amd64 architecture +What we want: build a Grml ISO based on Debian/stretch for the amd64 architecture using grml-live. Instructions @@ -548,9 +558,9 @@ Instructions # 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): + ## adjust if necessary (defaults to ./grml/): ## OUTPUT="/srv/grml-live" - FAI_DEBOOTSTRAP="jessie http://ftp.debian.org/debian/" + FAI_DEBOOTSTRAP="stretch http://ftp.debian.org/debian/" # ARCH="amd64" CLASSES="GRMLBASE,GRML_FULL,AMD64" EOF @@ -635,7 +645,7 @@ 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 + PACKAGES install vim another_name_of_a_debian_package @@ -656,35 +666,6 @@ 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 -[[create-a-base-tgz]] -How do I create a base.tgz? -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -First of all create the chroot using debootstrap: - - BASECHROOT='/tmp/basefile' - debootstrap jessie "$BASECHROOT" http://ftp.debian.org/debian - tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf base.tar.gz ./ - -[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. - -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 executing grml-live should use this file as base system instead of executing -debootstrap. Check out the output for something like: - - [...] - ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot// - [...] - -[TIP] -Existing base.tgz can be found at http://daily.grml.org/ - [[apt-cacher]] Set up apt-cacher-ng for use with grml-live ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -696,7 +677,7 @@ FAI_DEBOOTSTRAP: [...] APT_PROXY="http://localhost:3142/" [...] - FAI_DEBOOTSTRAP="jessie http://localhost:3142/ftp.debian.org/debian jessie main contrib non-free" + FAI_DEBOOTSTRAP="stretch http://localhost:3142/ftp.debian.org/debian stretch main contrib non-free" 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. @@ -705,40 +686,58 @@ That's it. All downloaded files will be cached in /var/cache/apt-cacher-ng then How do I revert the manifold feature from an ISO? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -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: +The so-called manifold feature Grml ISOs can, but by default do not, use allows +one to use the same ISO for CD boot and USB boot. If you notice any problems +when booting manifold-crafted media, 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: +syslinux, used by default for official Grml images) then just execute: % isohybrid grml.iso -[[basetgz]] +[[create-a-base-tgz]] How do I create a base tar.gz (I386.tar.gz or AMD64.tar.gz) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[[basetgz]] -Execute the following commands (requires root): +First of all create the chroot using debootstrap (requires root): - ARCH='amd64' # replace with i386 if necessary - SUITE='jessie' # 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 * + BASECHROOT='/tmp/basefile' # path where the chroot gets generated + SUITE='stretch' # using the current stable release should always work + debootstrap --exclude=info,tasksel,tasksel-data "$SUITE" "$BASECHROOT" http://ftp.debian.org/debian + tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf "${SUITE}".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). +[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. + +Finally place the generated tarball in /etc/grml/fai/config/basefiles/ (note +that it needs to be uppercase letters matching the class names, so: e.g. +AMD64.tar.gz for amd64 and I386.tar.gz for i386). + +Then executing grml-live should use this file as base system instead of executing +debootstrap. Check out the output for something like: + + [...] + ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot// + [...] [[localrepos]] How to use your own local repository ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Let's assume you have Debian package(s) in your filesystem inside -`/home/foobar/local-packages` and want to include that in your grml-live build. +`/home/foobar/local-packages` and want to provide them to your grml-live build. +This can be achieved either 1) through a bind mount (using the MIRROR_DIRECTORY +configuration) or 2) by serving a repository via HTTP. + +Serving via bind mount / MIRROR_DIRECTORY +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + Make sure to create an according sources.list configuration file, e.g. using your own class name `CUSTOM`: @@ -752,24 +751,69 @@ Add the according MIRROR_DIRECTORY configuration to your grml-live configuration Make sure the local directory looks like a mirror: - % cd /home/foobar/packages && /usr/bin/dpkg-scanpackages . /dev/null > ./Packages + % cd /home/foobar/packages + % dpkg-scanpackages . /dev/null | gzip > Packages.gz + +Finally invoke grml-live with your class name (`CUSTOM` in this example) added +to the list of classes on the command line (see grml-live option `-c`). + +Serving a repository via HTTP +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Make sure to create an according sources.list configuration file, e.g. using +your own class name `CUSTOM`: + + # cat > /etc/grml/fai/config/files/etc/apt/sources.list.d/local-packages.list/CUSTOM << EOF + deb http://127.0.0.1:8000/ ./ + EOF + +Make sure the local directory is served via HTTP on the according IP address and +port. For the `http://127.0.0.1:8000/` example from above it should be enough to +just invoke: + + % cd /home/foobar/packages + % dpkg-scanpackages . /dev/null | gzip > Packages.gz + % python -m SimpleHTTPServer 8000 + +[TIP] +Of course you can also use a real Debian repository setup using tools like +reprepro(1) and/or using a real web server, though for quick debugging sessions +python's SimpleHTTPServer in combination with dpkg-scanpackages from package +dpkg-dev is a simple and easy approach. Finally invoke grml-live with your class name (`CUSTOM` in this example) added -to the list of classes (see grml-live option `-c`). +to the list of classes on the command line (see grml-live option `-c`). [[download]] Download / install grml-live as a Debian package ------------------------------------------------ -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: +Stable Debian packages are available through the grml-repository at +link:http://deb.grml.org/pool/main/g/grml-live/[deb.grml.org] and the latest +Git commits are available as Debian packages from +link:http://jenkins.grml.org/job/grml-live-binaries/[jenkins.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: git clone git://git.grml.org/grml-live cd grml-live debuild -us -uc +[[run-from-git]] +Run grml-live directly from git +------------------------------- + +In case you want to run grml-live directly from the git repository checkout +(after making sure all dependencies are installed), you should set +`GRML_FAI_CONFIG` so that a) it finds the according FAI configuration files and +b) does not use the config files of an possibly installed `grml-live` package. +Usage example: + + # export GRML_FAI_CONFIG=$(pwd)/etc/grml/fai + # export SCRIPTS_DIRECTORY=$(pwd)/scripts + # export TEMPLATE_DIRECTORY=$(pwd)/templates + # ./grml-live -s sid -a amd64 -c GRMLBASE,GRML_FULL,AMD64 + [[source]] Source ------