# grml-live
X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=grml-live%2Findex.html;h=a3cd5ca5a53069b3918fd9c5bc73d87d0c85be29;hb=37982511926ad24c7c513a1c603f67f06b861913;hp=93eb3bd5007deb4979b41babb0c6b638f7a11c7d;hpb=9e415c6c4a54d8a6e55aed2d2f5482a29933fe72;p=grml.org.git diff --git a/grml-live/index.html b/grml-live/index.html index 93eb3bd..a3cd5ca 100644 --- a/grml-live/index.html +++ b/grml-live/index.html @@ -745,32 +745,24 @@ asciidoc.install(2);
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)
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>] [ --AbBFnNquVz]
-![]() |
-Please check out the Current state of grml-live with squashfs-tools and kernel section for details about current state of involved -tools before starting with grml-live or if you encounter any problems. | -
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]
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 FAI (Fully Automatic Installation). grml-live uses the "fai dirinstall" feature to generate a chroot @@ -787,7 +779,7 @@ details of a build process.
-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.
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 +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.
@@ -864,8 +855,8 @@ 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 small base system (being about ~180MB -total ISO size). If using a non-I386 system (like AMD64) you should specify the +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 the CLASSES section in this document for details about available classes). So instead of GRML_FULL you can also use @@ -930,6 +921,15 @@ throughout this documentation.
+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. +
+-Unpack chroot tar archive before starting. Most useful in combination with --A and -b or -u. -
-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:
# grml-live -s sid -c GRMLBASE,GRML_SMALL,AMD64 -o /home/mika/grml-live-
To get a medium sized, Debian-unstable and grml-based Live-CD for amd64 -architecture using /grml/grml-live as build and output directory just run:
# grml-live -s sid -a amd64 -c GRMLBASE,GRML_FULL,AMD64-
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:
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 -o /tmp -c GRMLBASE,GRML_SMALL,AMD64 -s sid -i grml_0.0-3.iso+
# grml-live -s testing -c GRMLBASE,GRML_SMALL,AMD64 -o /srv/grml-live
![]() |
-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 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. |
-create a grml-/Debian-based Linux Live-CD with one single command +create a Grml-/Debian-based Linux Live-CD with one single command
-multi-arch support (work in progress) -
--DEBORPHAN: get rid of all packages listed in output of Deborphan +DEBORPHAN: get rid of all packages listed in output of deborphan
-GRML_FULL: full featured grml, also known as the "normal", full grml as -introduced in november 2011 (~350MB ISO size). +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 november 2011 (~220MB 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 +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 -november 2011 (~700MB ISO size). +December 2011 (~700MB ISO size).
This file specifies the package list for creating the NFSROOT.
${GRML_FAI_CONFIG}/apt/sources.list-
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 -on-the-fly via grml-live then. If you want to generally adjust apt configuration
${GRML_FAI_CONFIG}/config/
The main directory for configuration of FAI/grml-live. More details below.
grml-live itself logs to /var/log/grml-live.log. Unless you set PRESERVE_LOGFILE -in your grml-live configuration the file is cleared on each new invocation of -grml-live.
The FAI part of grml-live logs to /var/log/fai/$HOSTNAME/ - so the -default being /var/log/fai/grml/.
If you are using the grml-live buildd you will find the logs of the grml-live -run at /var/log/grml-buildd.log.
If you want to store build information in a database just install the -grml-live-db Debian package. Further details available in the grml-live-db -manpage.
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.
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 -grml2hd harddisk installation (using grml or -grml-medium) ships all you need]. Check out How do I deploy grml-live on a plain Debian installation for details how to set up grml-live +please send us a bug report then). Check out How do I deploy grml-live on a plain Debian installation for details how to set up grml-live on a plain, original Debian system.
Use squashfs-tools >=4.2-1 (available from Grml repositories as well as from -Debian/unstable) to build Grml (based) ISOs featuring kernel version -2.6.38-grml[64].
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 amd64 -architecture using grml-live.
-![]() |
-If you encounter any problems while booting the resulting ISO please be aware of -the current state of grml-live with squashfs-tools and kernel section. | -
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.
# 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@@ -1552,14 +1483,14 @@ 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 install -t squeeze-backports squashfs-tools +apt-get --no-install-recommends install grml-live
# just optional(!) - upgrade FAI to latest available version: cat >> /etc/apt/sources.list << EOF # fai: - deb http://fai-project.org/download lenny koeln + deb http://fai-project.org/download squeeze koeln EOF
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 <mika@grml.org>:
# history | grep grml-live > /etc/grml/grml_live.cmdline -# tar zcf grml_live_problem.tar.gz /etc/grml/grml-live.conf \ - /etc/grml/grml_live.cmdline /etc/grml/grml-buildd.conf \ - /var/log/fai /etc/grml/fai --> finally mail grml_live_problem.tar.gz to <mika@grml.org>-
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 Grml Solutions.
ISO size (bs = blocksize):
ISO |
-LZMA (256kB bs) |
-ZLIB |
-
grml_sid |
-666M |
-771M |
-
grml_squeeze |
-659M |
-761M |
-
grml_lenny |
-624M |
-723M |
-
grml64_sid |
-677M |
-791M |
-
grml64_squeeze |
-671M |
-785M |
-
grml64_lenny |
-639M |
-745M |
-
grml-medium_sid |
-208M |
-236M |
-
grml-medium_squeeze |
-206M |
-234M |
-
grml-medium_lenny |
-193M |
-220M |
-
grml64-medium_sid |
-213M |
-245M |
-
grml64-medium_squeeze |
-213M |
-244M |
-
grml64-medium_lenny |
-201M |
-231M |
-
grml-small_sid |
-102M |
-118M |
-
grml-small_squeeze |
-101M |
-117M |
-
grml-small_lenny |
-97M |
-112M |
-
grml64-small_sid |
-103M |
-120M |
-
grml64-small_squeeze |
-103M |
-120M |
-
grml64-small_lenny |
-99M |
-116M |
-
Build time of grml-medium’s squashfs file (depends on your system, though just -to get the ratio between the different options):
-10 minutes and 4 seconds with LZMA default blocksize (128k) -
--7 minutes 27 seconds with LZMA and blocksize 256k -
--6 minutes and 8 seconds with LZMA blocksize 512k -
--1 minute and 40 seconds with ZLIB -
-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 @@ -1788,7 +1568,7 @@ grml-live ...
Yes. Set up an according sources.list configuration as class file in 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 @@ -1802,7 +1582,7 @@ adjust MIRROR_DIRECTORY in /etc/grml/grml-live.conf[.local] as well.
Just create a new class (using the package_config directory):
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
First of all create the chroot using debootstrap:
BASECHROOT='/tmp/basefile' +debootstrap squeeze "$BASECHROOT" http://cdn.debian.net/debian +tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf base.tar.gz ./+
-![]() ![]() |
-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 -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. | +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. |
First of all build the chroot system:
mkdir /tmp/nfsroot && cd /tmp/nfsroot -debootstrap squeeze /tmp/nfsroot/ http://cdn.debian.net/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:
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 -/grml-live/grml-live_20071029.22138/grml_chroot// +ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot// [...]
Set up apt-cacher-ng for use with grml-live
Make sure /etc/grml/grml-live.local provides according APT_PROXY and -FAI_DEBOOTSTRAP: - - # cat /etc/grml/grml-live.local - [...] - APT_PROXY="http://localhost:3142/" - [...] - FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze 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. - -[[approx]] -Set up approx 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:9999/grml grml-stable main -deb http://localhost:9999/grml grml-testing main -deb http://localhost:9999/debian squeeze main contrib non-free -" -FAI_DEBOOTSTRAP="squeeze http://localhost:9999/debian"-
Configure approx:
# cat /etc/approx/approx.conf +APT_PROXY="http://localhost:3142/" [...] -debian http://ftp.at.debian.org/debian -grml http://deb.grml.org/+FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free"
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.
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.
If you want to set up a system like daily.grml.org -the Debian package grml-live-buildd provides all you need to start. Start with -figuring out the cron job script /usr/share/grml-live/buildd/cronjob.sh.
If you want to automatically update the grml-live Debian package on your build -system based on the git tree of grml-live (so you get bleeding edge of -development which might is interesting for services like daily.grml.org) the -provided release_helper.sh script provides everything you need. Execute as root:
echo "deb file:/home/grml-live-git/grml-live.build-area/ ./" >> /etc/apt/sources.list.d/grml-live.list -adduser --disabled-login --disabled-password grml-live-git-
Execute visudo to update sudo configuration and add the following line:
grml-live-git ALL=NOPASSWD: /usr/bin/apt-get-
Switch to user grml-live-git and configure the rest:
su - grml-live-git -mkdir grml-live.build-area -git clone git://git.grml.org/grml-live.git -git config --global user.name "Grml-Live Git Autobuild" -git config --global user.email "grml-live-git@$(hostname)"-
Finally install a cron job (as user grml-live-git) like:
30 00 * * * cd /home/grml-live-git/grml-live.git/ && env AUTOBUILD=1 scripts/release_helper.sh >/home/grml-live-git/grml-live-build.log-
Tip: To find out the build date of the installed grml-live package just execute:
% apt-cache policy grml-live | grep 'Installed.*autobuild' - Installed: 0.13.1~autobuild1300450381-
and run "date -ud @$STRING" where $STRING is the number behind the "autobuild", -like:
% date -ud @1300450081 -Fri Mar 18 12:08:01 UTC 2011-
Don’t hesitate to contact the author: <mika@grml.org>
The source of grml-live is available at -http://git.grml.org/?p=grml-live.git
Check out the TODO file.
Please report feedback, bugreports and wishes -to the grml-team!
The most recent grml-live documentation is available online at http://grml.org/grml-live/ and for offline reading also available @@ -2077,7 +1750,7 @@ in different formats:
Michael Prokop <mika@grml.org>