Synopsis
--------
-grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [-g
-<grml_name>] [-i <iso_name> ] [-o <output_directory>] [-r <release_name>] [-s
-<suite>] [-t <template_directory>] [-v <version_number>] [-U <username>] [
+grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [
+-e <extract_iso_name>] [-g <grml_name>] [-i <iso_name>] [
+-o <output_directory>] [-r <release_name>] [-s <suite>] [
+-t <template_directory>] [-v <version_number>] [-U <username>] [
-AbBFnNqQuVz]
Description
-A::
-Clean up output directories before attempting the build. Packs the chroot
-into a tar archive, and removes chroot and ISO build directories before exiting.
+Clean up all output directories before running the build process. After finishing,
+clean up the Chroot target and Build target directories.
-a **ARCHITECTURE**::
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::
Force execution and do not prompt for acknowledgment of configuration.
-s **SUITE**::
-Specify the Debian suite you want to use for your live-system. Defaults to
-"squeeze" (being current Debian/stable). Supported values are: etch, lenny,
-squeeze, sid. Debian "squeeze" requires a recent base.tgz
+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
+suites might require a recent base.tgz
(${GRML_FAI_CONFIG}/config/basefiles/$CLASSNAME.tar.gz) or a recent version of
debootstrap.
Specify place of the templates used for building the ISO. By default
(and if not manually specified) this is /usr/share/grml-live/templates/.
- -T **CHROOT_ARCHIVE**::
-
-Unpack chroot tar archive before starting. Most useful in combination with
--A and -b or -u.
-
-u::
Update existing chroot instead of rebuilding it from scratch. This option is
[NOTE]
-If you have enough 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 use 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
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
+GRML_SMALL or GRML_FULL). The following files and directories are
relevant for class GRMLBASE by default:
${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/
* DEBORPHAN: get rid of all packages listed in output of deborphan
+* 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.
+
* 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).
+introduced in December 2011 (~460MB ISO size).
-* GRML_SMALL: minimum sized Grml version, known as grml-small (~110MB ISO
+* GRML_SMALL: minimum sized Grml version, known as grml-small (~230MB 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)
grml-live out-of-the-box so you shouldn't have to configure anything in this
file.
- ${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.
-
- ${GRML_FAI_CONFIG}/NFSROOT
-
-This file specifies the package list for creating the NFSROOT.
-
${GRML_FAI_CONFIG}/config/
The main directory for configuration of FAI/grml-live. More details below.
total free disk space
* 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 possible)
+chroot (check out "local mirror" to workaround this problem as far as possible)
For further information see next section.
---------------------------------------------------------
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.
+Debian) to build Grml (based) ISOs featuring kernel version 2.6.38-grml[64] or
+newer.
[[faq]]
FAQ
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).
+What we have: plain, original Debian jessie (8.x).
-What we want: build a Grml ISO based on Debian/wheezy for the amd64 architecture
+What we want: build a Grml ISO based on Debian/jessie for the amd64 architecture
using grml-live.
Instructions
# deb-src http://deb.grml.org/ grml-testing main
EOF
- # adjust apt-pinning (only prefer squashfs stuff from grml):
- cat >> /etc/apt/preferences << EOF
- Package: *
- Pin: origin deb.grml.org
- Pin-Priority: 1
-
- Package: squashfs-tools
- Pin: origin deb.grml.org
- Pin-Priority: 996
- EOF
-
# get keyring for apt:
apt-get update
apt-get --allow-unauthenticated install grml-debian-keyring
# optionally(!) install basefile so we don't have to build basic
# chroot from scratch, grab from http://daily.grml.org/
# mkdir -p /etc/grml/fai/config/basefiles/
- # mv base.tgz /etc/grml/fai/config/basefiles/I386.tar.gz
- # mv base64.tgz /etc/grml/fai/config/basefiles/AMD64.tar.gz
+ # mv I386.tar.gz /etc/grml/fai/config/basefiles/
+ # mv AMD64.tar.gz /etc/grml/fai/config/basefiles/
# install relevant tools
- # please check out http://grml.org/grml-live/#current_state when encountering problems!
- apt-get -o APT::Install-Recommends=false install grml-live squashfs-tools
+ apt-get --no-install-recommends install grml-live
# adjust grml-live configuration for our needs:
cat > /etc/grml/grml-live.local << EOF
# 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/"
+ FAI_DEBOOTSTRAP="jessie http://ftp.debian.org/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
+ cat >> /etc/apt/sources.list.d/fai.list << EOF
+ deb http://jenkins.grml.org/debian fai main
+ deb-src http://jenkins.grml.org/debian fai main
EOF
# get gpg key of FAI repos and install current FAI version:
- gpg -a --recv-keys AB9B66FD; gpg -a --export AB9B66FD | apt-key add -
+ wget -O - http://jenkins.grml.org/debian/C525F56752D4A654.asc | sudo apt-key add -
apt-get update
apt-get install fai-client fai-server fai-doc
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
+FAI_DEBOOTSTRAP (if not already using a 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 ...).
dpkg -i --force-confnew --force-confmiss /path/to/grml-live_..._all.deb
[[create-a-base-tgz]]
-How do I create a base.tgz for use as NFSROOT?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-First of all build the chroot system:
+How do I create a base.tgz?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
- mkdir /tmp/nfsroot && cd /tmp/nfsroot
- debootstrap squeeze /tmp/nfsroot/ http://cdn.debian.net/debian
- tar zcf base.tgz ./
+First of all create the chroot using debootstrap:
-Then check out where your NFSROOT is located:
+ BASECHROOT='/tmp/basefile'
+ debootstrap jessie "$BASECHROOT" http://ftp.debian.org/debian
+ tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf base.tar.gz ./
- # 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:
+[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.
- [...]
- Calling task_extrbase
- Unpacking Debian base archive
- Extracting /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz
- Calling task_mirror
- [...]
+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.
-or if using /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz for:
+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
- /grml-live/grml-live_20071029.22138/grml_chroot//
+ ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot//
[...]
[TIP]
[...]
APT_PROXY="http://localhost:3142/"
[...]
- FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free"
+ FAI_DEBOOTSTRAP="jessie http://localhost:3142/ftp.debian.org/debian jessie 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.
Execute the following commands (requires root):
ARCH='amd64' # replace with i386 if necessary
- SUITE='squeeze' # using the current stable release should always work
+ 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
that it needs to be uppercase letters matching the class names, so: AMD64.tar.gz
for amd64 and I386.tar.gz for i386).
+[[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.
+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 file:///home/foobar/local-packages ./
+ EOF
+
+Add the according MIRROR_DIRECTORY configuration to your grml-live configuration:
+
+ # echo "MIRROR_DIRECTORY='/home/foobar/packages'" >> /etc/grml/grml-live.local
+
+Make sure the local directory looks like a mirror:
+
+ % cd /home/foobar/packages && /usr/bin/dpkg-scanpackages . /dev/null > ./Packages
+
+Finally invoke grml-live with your class name (`CUSTOM` in this example) added
+to the list of classes (see grml-live option `-c`).
+
[[download]]
Download / install grml-live as a Debian package
------------------------------------------------