<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.6" />\r
+<meta name="generator" content="AsciiDoc 8.6.9" />\r
<title>grml-live(8)</title>\r
<style type="text/css">\r
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
ul > li { color: #aaa; }\r
ul > li > * { color: black; }\r
\r
-pre {\r
+.monospaced, code, pre {\r
+ font-family: "Courier New", Courier, monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
padding: 0;\r
margin: 0;\r
}\r
+pre {\r
+ white-space: pre-wrap;\r
+}\r
\r
#author {\r
color: #527bbd;\r
}\r
\r
div.imageblock div.content { padding-left: 0; }\r
-span.image img { border-style: none; }\r
+span.image img { border-style: none; vertical-align: text-bottom; }\r
a.image:visited { color: white; }\r
\r
dl {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
margin-top: 0;\r
margin-bottom: 0;\r
}\r
span.overline { text-decoration: overline; }\r
span.line-through { text-decoration: line-through; }\r
\r
+div.unbreakable { page-break-inside: avoid; }\r
+\r
\r
/*\r
* xhtml11 specific\r
*\r
* */\r
\r
-tt {\r
- font-family: monospace;\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
div.tableblock {\r
margin-top: 1.0em;\r
margin-bottom: 1.5em;\r
*\r
* */\r
\r
-.monospaced {\r
- font-family: monospace;\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
table.tableblock {\r
margin-top: 1.0em;\r
margin-bottom: 1.5em;\r
@media print {\r
body.manpage div#toc { display: none; }\r
}\r
+\r
+\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
\r
function tocEntries(el, toclevels) {\r
var result = new Array;\r
- var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');\r
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
// Function that scans the DOM tree for header elements (the DOM2\r
// nodeIterator API would be a better technique but not supported by all\r
// browsers).\r
var i;\r
for (i = 0; i < toc.childNodes.length; i++) {\r
var entry = toc.childNodes[i];\r
- if (entry.nodeName == 'div'\r
+ if (entry.nodeName.toLowerCase() == 'div'\r
&& entry.getAttribute("class")\r
&& entry.getAttribute("class").match(/^toclevel/))\r
tocEntriesToRemove.push(entry);\r
var entriesToRemove = [];\r
for (i = 0; i < noteholder.childNodes.length; i++) {\r
var entry = noteholder.childNodes[i];\r
- if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
entriesToRemove.push(entry);\r
}\r
for (i = 0; i < entriesToRemove.length; i++) {\r
<div class="sect1">\r
<h2 id="_synopsis">2. Synopsis</h2>\r
<div class="sectionbody">\r
-<div class="paragraph"><p>grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [-g\r
-<grml_name>] [-i <iso_name> ] [-o <output_directory>] [-r <release_name>] [-s\r
-<suite>] [-t <template_directory>] [-v <version_number>] [-U <username>] [\r
+<div class="paragraph"><p>grml-live [-a <architecture>] [-c <classe[s]>] [-C <configfile>] [\r
+-e <extract_iso_name>] [-g <grml_name>] [-i <iso_name>] [\r
+-o <output_directory>] [-r <release_name>] [-s <suite>] [\r
+-t <template_directory>] [-v <version_number>] [-U <username>] [\r
-AbBFnNqQuVz]</p></div>\r
</div>\r
</div>\r
</dt>\r
<dd>\r
<p>\r
-Clean up output directories before attempting the build. Packs the chroot\r
-into a tar archive, and removes chroot and ISO build directories before exiting.\r
+Clean up all output directories before running the build process. After finishing,\r
+clean up the Chroot target and Build target directories.\r
</p>\r
</dd>\r
<dt class="hdlist1">\r
</p>\r
</dd>\r
<dt class="hdlist1">\r
+-e <strong>EXTRACT_ISO_NAME</strong>\r
+</dt>\r
+<dd>\r
+<p>\r
+The squashfs inside the specified ISO will be extracted and used as the chroot.\r
+This option is useful for remastering, in combination with -A and -b or -u.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
-F\r
</dt>\r
<dd>\r
</dt>\r
<dd>\r
<p>\r
-Specify the Debian suite you want to use for your live-system. Defaults to\r
-"squeeze" (being current Debian/stable). Supported values are: etch, lenny,\r
-squeeze, sid. Debian "squeeze" requires a recent base.tgz\r
+Specify the Debian suite you want to use for your live-system. If unset defaults\r
+to "testing". Supported values are: stable, testing, unstable (or their\r
+corresponding release names like "wheezy"). Please be aware that recent Debian\r
+suites might require a recent base.tgz\r
debootstrap.\r
</p>\r
</dd>\r
</p>\r
</dd>\r
<dt class="hdlist1">\r
--T <strong>CHROOT_ARCHIVE</strong>\r
-</dt>\r
-<dd>\r
-<p>\r
-Unpack chroot tar archive before starting. Most useful in combination with\r
--A and -b or -u.\r
-</p>\r
-</dd>\r
-<dt class="hdlist1">\r
-u\r
</dt>\r
<dd>\r
as build and output directory just run:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># grml-live</tt></pre>\r
+<pre><code># grml-live</code></pre>\r
</div></div>\r
<div class="paragraph"><p>To get a 64bit Debian-testing and grml-small based Live-CD using /srv/grml-live\r
as build and output directory use the following command line on your amd64\r
system:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># grml-live -s testing -c GRMLBASE,GRML_SMALL,AMD64 -o /srv/grml-live</tt></pre>\r
+<pre><code># grml-live -s testing -c GRMLBASE,GRML_SMALL,AMD64 -o /srv/grml-live</code></pre>\r
</div></div>\r
<div class="admonitionblock">\r
<table><tr>\r
<td class="icon">\r
<img src="./images/icons/note.png" alt="Note" />\r
</td>\r
-<td class="content">If you have enough free space inside /dev/shm (being a tmpfs, usually you should\r
-have >=1GB of RAM) just run "mount -o remount,suid,dev,rw /dev/shm" and use\r
-/dev/shm as build and output directory - resulting in very fast build process.\r
-But please be aware of the fact that rebooting your system will result in an\r
-empty /dev/shm, so please use another directory for $CHROOT_OUTPUT,\r
-$BUILD_OUTPUT and $ISO_OUTPUT if you plan to create more persistent output. :)</td>\r
+<td class="content">If you have enough RAM, just run "mount -t tmpfs none /media/ramdisk" to get a\r
+tmpfs ("RAMDISK"), and use /media/ramdisk as build and output directory - this\r
+results in a very fast build process. Note that these files will be gone when\r
+rebooting.</td>\r
</tr></table>\r
</div>\r
</div>\r
relevant for class GRMLBASE by default:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/\r
+<pre><code>${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/\r
${GRML_FAI_CONFIG}/config/debconf/GRMLBASE\r
${GRML_FAI_CONFIG}/config/class/GRMLBASE.var\r
${GRML_FAI_CONFIG}/config/hooks/instsoft.GRMLBASE\r
-${GRML_FAI_CONFIG}/config/package_config/GRMLBASE</tt></pre>\r
+${GRML_FAI_CONFIG}/config/package_config/GRMLBASE</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Take a look at the next section for information about the concept of those\r
files/directories.</p></div>\r
</li>\r
<li>\r
<p>\r
+FRESHCLAM: execute freshclam (if it’s present) to update clamav definitions\r
+(increases resulting ISO size ~70MB). By default it’s skipped to avoid bigger\r
+ISO size.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
GRMLBASE: the main class responsible for getting a minimal subset of what’s\r
defining a Grml system. Important parts of the buildprocess are specified in\r
this class as well, so unless you have a really good reason you should always\r
provides documentation regarding configuration possibilities.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>/usr/sbin/grml-live</tt></pre>\r
+<pre><code>/usr/sbin/grml-live</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Script for the main build process. Requires root permissions for execution.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>/etc/grml/grml-live.conf</tt></pre>\r
+<pre><code>/etc/grml/grml-live.conf</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Main configuration file for grml-live which should be considered as a reference\r
configuration file only. Please use /etc/grml/grml-live.local for local\r
configuration instead.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>/etc/grml/grml-live.local</tt></pre>\r
+<pre><code>/etc/grml/grml-live.local</code></pre>\r
</div></div>\r
<div class="paragraph"><p>All the local configuration should go to this file. This file overrides any\r
defaults of grml-live. Configurations via /etc/grml/grml-live.local are preferred\r
commandline.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/fai.conf</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/fai.conf</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Main configuration file for FAI which specifies where all the configuration\r
files and scripts for FAI/grml-live can be found. By default the configuration\r
file.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/make-fai-nfsroot.conf</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>This file is used by make-fai-nfsroot(8) only. Usually you don’t have to change\r
-anything inside this file. If you want to modify NFSROOT though you can adjust\r
-it there.</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/NFSROOT</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>This file specifies the package list for creating the NFSROOT.</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/config/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>The main directory for configuration of FAI/grml-live. More details below.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/class/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/config/class/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>This directory contains files which specify main configuration variables for the\r
FAI classes.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/debconf/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/config/debconf/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>This directory provides the files for preseeding/configuration of debconf\r
through files.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/hooks/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/config/hooks/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>This directory provides files for customising the build process through hooks.\r
Hooks are user defined programs or scripts, which are called during the\r
installation process.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/package_config/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/config/package_config/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Directory with lists of software packages to be installed or removed. The\r
different classes describe what should find its way to your ISO. When running\r
reasonable package configuration.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/config/scripts/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/config/scripts/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Scripts for customising the ISO within the build process.</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>${GRML_FAI_CONFIG}/live-initramfs/</tt></pre>\r
+<pre><code>${GRML_FAI_CONFIG}/live-initramfs/</code></pre>\r
</div></div>\r
<div class="paragraph"><p>This directory provides the files used for building the initramfs/initrd via\r
live-initramfs(8).</p></div>\r
<li>\r
<p>\r
fast network access for retrieving the Debian packages used for creating the\r
-chroot (check out "local mirror" and "NFSROOT" to workaround this problem as far\r
-as possible)\r
+chroot (check out "local mirror" to workaround this problem as far as possible)\r
</p>\r
</li>\r
</ul></div>\r
<h2 id="current_state">12. Current state of grml-live with squashfs-tools and kernel</h2>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Use squashfs-tools >=4.2-1 (available from Grml repositories as well as from\r
-Debian/testing and Debian/unstable) to build Grml (based) ISOs featuring kernel\r
-version 2.6.38-grml[64] or newer.</p></div>\r
+Debian) to build Grml (based) ISOs featuring kernel version 2.6.38-grml[64] or\r
+newer.</p></div>\r
</div>\r
</div>\r
<div class="sect1">\r
<div class="paragraph"><p>The easiest way to get a running grml-live setup is to just use Grml.\r
Of course using grml-live on a plain, original Debian installation is supported\r
as well. So there we go.</p></div>\r
-<div class="paragraph"><p>What we have: plain, original Debian squeeze (6.0).</p></div>\r
+<div class="paragraph"><p>What we have: plain, original Debian wheezy (7.x).</p></div>\r
<div class="paragraph"><p>What we want: build a Grml ISO based on Debian/wheezy for the amd64 architecture\r
using grml-live.</p></div>\r
<div class="sect3">\r
<h4 id="_instructions">13.1.1. Instructions</h4>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># adjust sources.list:\r
-cat >> /etc/apt/sources.list << EOF</tt></pre>\r
+<pre><code># adjust sources.list:\r
+cat >> /etc/apt/sources.list << EOF</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># grml stable repository:\r
+<pre><code># grml stable repository:\r
deb http://deb.grml.org/ grml-stable main\r
-# deb-src http://deb.grml.org/ grml-stable main</tt></pre>\r
+# deb-src http://deb.grml.org/ grml-stable main</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># grml testing/development repository:\r
+<pre><code># grml testing/development repository:\r
deb http://deb.grml.org/ grml-testing main\r
# deb-src http://deb.grml.org/ grml-testing main\r
-EOF</tt></pre>\r
-</div></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt># adjust apt-pinning (only prefer squashfs stuff from grml):\r
-cat >> /etc/apt/preferences << EOF\r
-Package: *\r
-Pin: origin deb.grml.org\r
-Pin-Priority: 1</tt></pre>\r
+EOF</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>Package: squashfs-tools\r
-Pin: origin deb.grml.org\r
-Pin-Priority: 996\r
-EOF</tt></pre>\r
-</div></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt># get keyring for apt:\r
+<pre><code># get keyring for apt:\r
apt-get update\r
-apt-get --allow-unauthenticated install grml-debian-keyring</tt></pre>\r
+apt-get --allow-unauthenticated install grml-debian-keyring</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># optionally(!) install basefile so we don't have to build basic\r
+<pre><code># optionally(!) install basefile so we don't have to build basic\r
# chroot from scratch, grab from http://daily.grml.org/\r
# mkdir -p /etc/grml/fai/config/basefiles/\r
-# mv base.tgz /etc/grml/fai/config/basefiles/I386.tar.gz\r
-# mv base64.tgz /etc/grml/fai/config/basefiles/AMD64.tar.gz</tt></pre>\r
+# mv I386.tar.gz /etc/grml/fai/config/basefiles/\r
+# mv AMD64.tar.gz /etc/grml/fai/config/basefiles/</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># install relevant tools\r
-# please check out http://grml.org/grml-live/#current_state when encountering problems!\r
-apt-get -o APT::Install-Recommends=false install grml-live squashfs-tools</tt></pre>\r
+<pre><code># install relevant tools\r
+apt-get --no-install-recommends install grml-live</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># adjust grml-live configuration for our needs:\r
+<pre><code># adjust grml-live configuration for our needs:\r
cat > /etc/grml/grml-live.local << EOF\r
## want a faster build process and don't need smaller ISOs?\r
## if so use zlib compression\r
# CHROOT_INSTALL="/etc/grml/fai/chroot_install"\r
## adjust if necessary (defaults to /grml/grml-live):\r
## OUTPUT="/srv/grml-live"\r
-FAI_DEBOOTSTRAP="wheezy http://cdn.debian.net/debian/"\r
+FAI_DEBOOTSTRAP="wheezy http://http.debian.net/debian/"\r
# ARCH="amd64"\r
CLASSES="GRMLBASE,GRML_FULL,AMD64"\r
-EOF</tt></pre>\r
+EOF</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># just optional(!) - upgrade FAI to latest available version:\r
-cat >> /etc/apt/sources.list << EOF\r
-# fai:\r
- deb http://fai-project.org/download squeeze koeln\r
-EOF</tt></pre>\r
+<pre><code># just optional(!) - upgrade FAI to latest available version:\r
+cat >> /etc/apt/sources.list.d/fai.list << EOF\r
+deb http://jenkins.grml.org/debian fai main\r
+deb-src http://jenkins.grml.org/debian fai main\r
+EOF</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># get gpg key of FAI repos and install current FAI version:\r
-gpg -a --recv-keys AB9B66FD; gpg -a --export AB9B66FD | apt-key add -\r
+<pre><code># get gpg key of FAI repos and install current FAI version:\r
+wget -O - http://jenkins.grml.org/debian/C525F56752D4A654.asc | sudo apt-key add -\r
apt-get update\r
-apt-get install fai-client fai-server fai-doc</tt></pre>\r
+apt-get install fai-client fai-server fai-doc</code></pre>\r
</div></div>\r
<div class="paragraph"><p>That’s it. Now invoking <em>grml-live -V</em> should build the ISO. If everything\r
worked as expected the last line of the shell output should look like:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>[*] Successfully finished execution of grml-live [running 687 seconds]</tt></pre>\r
+<pre><code>[*] Successfully finished execution of grml-live [running 687 seconds]</code></pre>\r
</div></div>\r
<div class="paragraph"><p>and the ISO can be found inside /grml-live/grml-live/grml_isos/ then.</p></div>\r
</div>\r
own. Usage example:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>echo "CHROOT_INSTALL=\$GRML_FAI_CONFIG/chroot_install" >> /etc/grml/grml-live.local\r
+<pre><code>echo "CHROOT_INSTALL=\$GRML_FAI_CONFIG/chroot_install" >> /etc/grml/grml-live.local\r
mkdir -p /etc/grml/fai/chroot_install/usr/src/\r
wget example.org/foo.tar.gz\r
mv foo.tar.gz /etc/grml/fai/chroot_install/usr/src/\r
-grml-live ...</tt></pre>\r
+grml-live ...</code></pre>\r
</div></div>\r
</div>\r
<div class="sect2">\r
<h3 id="local-debian-mirror">13.5. Can I use my own (local) Debian mirror?</h3>\r
<div class="paragraph"><p>Yes. Set up an according sources.list configuration as class file in\r
-FAI_DEBOOTSTRAP (if not already using NFSROOT’s base.tgz) inside\r
+FAI_DEBOOTSTRAP (if not already using a base.tgz) inside\r
/etc/grml/grml-live.conf[.local]. If you’re setting up your own class file don’t\r
forget to include the class name in the class list (grml-live -c …).</p></div>\r
<div class="paragraph"><p>If you want to use a local (for example NFS mount) mirror additionally then\r
<div class="paragraph"><p>If you want to use a HTTP Proxy (like apt-cacher-ng), set APT_PROXY. Example:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>APT_PROXY="http://localhost:3142/"</tt></pre>\r
+<pre><code>APT_PROXY="http://localhost:3142/"</code></pre>\r
</div></div>\r
</div>\r
<div class="sect2">\r
<div class="paragraph"><p>Just create a new class (using the package_config directory):</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># cat > /etc/grml/fai/config/package_config/MIKA << EOF\r
-PACKAGES aptitude</tt></pre>\r
+<pre><code># cat > /etc/grml/fai/config/package_config/MIKA << EOF\r
+PACKAGES aptitude</code></pre>\r
</div></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>vim\r
+<pre><code>vim\r
another_name_of_a_debian_package\r
and_another_one\r
-EOF</tt></pre>\r
+EOF</code></pre>\r
</div></div>\r
<div class="paragraph"><p>and specify it when invoking grml-live then:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># grml-live -c GRMLBASE,GRML_SMALL,AMD64,MIKA</tt></pre>\r
+<pre><code># grml-live -c GRMLBASE,GRML_SMALL,AMD64,MIKA</code></pre>\r
</div></div>\r
</div>\r
<div class="sect2">\r
what you are searching for just run:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>rm -rf /etc/grml/fai /etc/grml/grml-live.conf\r
-dpkg -i --force-confnew --force-confmiss /path/to/grml-live_..._all.deb</tt></pre>\r
+<pre><code>rm -rf /etc/grml/fai /etc/grml/grml-live.conf\r
+dpkg -i --force-confnew --force-confmiss /path/to/grml-live_..._all.deb</code></pre>\r
</div></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="create-a-base-tgz">13.8. How do I create a base.tgz for use as NFSROOT?</h3>\r
-<div class="paragraph"><p>First of all build the chroot system:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>mkdir /tmp/nfsroot && cd /tmp/nfsroot\r
-debootstrap squeeze /tmp/nfsroot/ http://cdn.debian.net/debian\r
-tar zcf base.tgz ./</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>Then check out where your NFSROOT is located:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt># grep '^NFSROOT' /etc/grml/fai/make-fai-nfsroot.conf\r
-NFSROOT=/grml/fai/nfsroot</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>So as /grml/fai/nfsroot is your NFSROOT place the file under\r
-/grml/fai/nfsroot/live/filesystem.dir/var/tmp/:</p></div>\r
+<h3 id="create-a-base-tgz">13.8. How do I create a base.tgz?</h3>\r
+<div class="paragraph"><p>First of all create the chroot using debootstrap:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>mv base.tgz /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz</tt></pre>\r
+<pre><code>BASECHROOT='/tmp/basefile'\r
+debootstrap wheezy "$BASECHROOT" http://http.debian.net/debian\r
+tar -C "$BASECHROOT" --exclude='var/cache/apt/archives/*.deb' -zcf base.tar.gz ./</code></pre>\r
</div></div>\r
-<div class="paragraph"><p>or even better use /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz instead.\r
-Use I386 as $CLASSNAME for i386 builds and AMD64 for amd64 builds.</p></div>\r
-<div class="paragraph"><p>Now running "grml-live …" will use this file as main system instead of\r
-executing debootstrap. Check out the output for the following lines if using\r
-NFSROOT:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>[...]\r
-Calling task_extrbase\r
-Unpacking Debian base archive\r
-Extracting /grml/fai/nfsroot/live/filesystem.dir/var/tmp/base.tgz\r
-Calling task_mirror\r
-[...]</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>or if using /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz for:</p></div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<img src="./images/icons/tip.png" alt="Tip" />\r
+</td>\r
+<td class="content">By default debootstrap builds a chroot matching the architecture of the running\r
+host system. If you’re using an amd64 system and want to build an i386 base.tgz\r
+then invoke debootstrap using the <em>--arch i386</em> option. Disclaimer: building an\r
+AMD64 base.tgz won’t work if you are using a 32bit kernel system of course.</td>\r
+</tr></table>\r
+</div>\r
+<div class="paragraph"><p>Then move the base.tar.gz to /etc/grml/fai/config/basefiles/$CLASSNAME.tar.gz.\r
+Use e.g. I386 as $CLASSNAME for i386 chroots and AMD64 for amd64 chroots.</p></div>\r
+<div class="paragraph"><p>Now executing grml-live should use this file as base system instead of executing\r
+debootstrap. Check out the output for something like:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>[...]\r
-ftar: extracting /etc/grml/fai/config/basefiles///AMD64.tar.gz to\r
-/grml-live/grml-live_20071029.22138/grml_chroot//\r
-[...]</tt></pre>\r
+<pre><code>[...]\r
+ftar: extracting //etc/grml/fai/config/basefiles///AMD64.tar.gz to /srv/grml64_testing/grml_chroot//\r
+[...]</code></pre>\r
</div></div>\r
<div class="admonitionblock">\r
<table><tr>\r
FAI_DEBOOTSTRAP:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt># cat /etc/grml/grml-live.local\r
+<pre><code># cat /etc/grml/grml-live.local\r
[...]\r
APT_PROXY="http://localhost:3142/"\r
[...]\r
-FAI_DEBOOTSTRAP="squeeze http://localhost:3142/cdn.debian.net/debian squeeze main contrib non-free"</tt></pre>\r
+FAI_DEBOOTSTRAP="wheezy http://localhost:3142/http.debian.net/debian wheezy main contrib non-free"</code></pre>\r
</div></div>\r
<div class="paragraph"><p>Make sure apt-cacher-ng is running (<em>/etc/init.d/apt-cacher-ng restart</em>).\r
That’s it. All downloaded files will be cached in /var/cache/apt-cacher-ng then.</p></div>\r
revert the manifold feature running:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>% dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc</tt></pre>\r
+<pre><code>% dd if=/dev/zero of=grml.iso bs=512 count=1 conv=notrunc</code></pre>\r
</div></div>\r
<div class="paragraph"><p>To switch from manifold to isohybrid mode (an alternative approach provided by\r
syslinux) then just execute:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>% isohybrid grml.iso</tt></pre>\r
+<pre><code>% isohybrid grml.iso</code></pre>\r
</div></div>\r
</div>\r
<div class="sect2">\r
<div class="paragraph"><p>Execute the following commands (requires root):</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>ARCH='amd64' # replace with i386 if necessary\r
-SUITE='squeeze' # using the current stable release should always work\r
+<pre><code>ARCH='amd64' # replace with i386 if necessary\r
+SUITE='wheezy' # using the current stable release should always work\r
debootstrap --arch "$ARCH" --exclude=info,tasksel,tasksel-data "$SUITE" "$ARCH" http://debian.netcologne.de/debian\r
cd "$ARCH"\r
rm var/cache/apt/archives/*.deb\r
-tar zcf ../"${ARCH}".tar.gz *</tt></pre>\r
+tar zcf ../"${ARCH}".tar.gz *</code></pre>\r
</div></div>\r
<div class="paragraph"><p>And finally place the generated tarball in /etc/grml/fai/config/basefiles/ (note\r
that it needs to be uppercase letters matching the class names, so: AMD64.tar.gz\r
for amd64 and I386.tar.gz for i386).</p></div>\r
</div>\r
-<div class="sect2">\r
-<h3 id="autobuild">13.12. How do I set up an autobuild environment?</h3>\r
-<div class="paragraph"><p>If you want to set up a system like <a href="http://daily.grml.org/">daily.grml.org</a>\r
-the Debian package grml-live-buildd provides all you need to start. Start with\r
-figuring out the cron job script /usr/share/grml-live/buildd/cronjob.sh.</p></div>\r
-<div class="paragraph"><p>If you want to automatically update the grml-live Debian package on your build\r
-system based on the git tree of grml-live (so you get bleeding edge of\r
-development which might is interesting for services like daily.grml.org) the\r
-provided release_helper.sh script provides everything you need. Execute as root:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>echo "deb file:/home/grml-live-git/grml-live.build-area/ ./" >> /etc/apt/sources.list.d/grml-live.list\r
-adduser --disabled-login --disabled-password grml-live-git</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>Execute <em>visudo</em> to update sudo configuration and add the following line:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>grml-live-git ALL=NOPASSWD: /usr/bin/apt-get</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>Switch to user grml-live-git and configure the rest:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>su - grml-live-git\r
-mkdir grml-live.build-area\r
-git clone git://git.grml.org/grml-live.git\r
-git config --global user.name "Grml-Live Git Autobuild"\r
-git config --global user.email "grml-live-git@$(hostname)"</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>Finally install a cron job (as user grml-live-git) like:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>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</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>Tip: To find out the build date of the installed grml-live package just execute:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>% apt-cache policy grml-live | grep 'Installed.*autobuild'\r
- Installed: 0.13.1~autobuild1300450381</tt></pre>\r
-</div></div>\r
-<div class="paragraph"><p>and run "date -ud @$STRING" where $STRING is the number behind the "autobuild",\r
-like:</p></div>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>% date -ud @1300450081\r
-Fri Mar 18 12:08:01 UTC 2011</tt></pre>\r
-</div></div>\r
-</div>\r
</div>\r
</div>\r
<div class="sect1">\r
current development tree), just execute:</p></div>\r
<div class="literalblock">\r
<div class="content">\r
-<pre><tt>git clone git://git.grml.org/grml-live\r
+<pre><code>git clone git://git.grml.org/grml-live\r
cd grml-live\r
-debuild -us -uc</tt></pre>\r
+debuild -us -uc</code></pre>\r
</div></div>\r
</div>\r
</div>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 2011-12-12 16:10:01 CET\r
+Last updated 2013-12-11 11:53:34 CET\r
</div>\r
</div>\r
</body>\r