:B~ Overview of tools

1~overview-of-tools Overview of tools

This chapter contains an overview of the three main tools used in building
Debian Live systems: live-build, live-boot and live-config.

2~live-build The live-build package

live-build is a collection of scripts to build Debian Live systems. These
scripts are also referred to as "commands".

The idea behind live-build is to be a framework that uses a configuration
directory to completely automate and customize all aspects of building a
Live image.

Many concepts are similar to those used to build Debian packages with
/{debhelper}/:

_* The scripts have a central location for configuring their operation. In
/{debhelper}/, this is the #{debian/}# subdirectory of a package tree. For
example, dh_install will look, amongst others, for a file called
#{debian/install}# to determine which files should exist in a particular
binary package. In much the same way, live-build stores its configuration
entirely under a #{config/}# subdirectory.

_* The scripts are independent - that is to say, it is always safe to run
each command.

Unlike /{debhelper}/, live-build contains a tool to generate a skeleton
configuration directory, #{lb config}#. This could be considered to be
similar to tools such as /{dh-make}/. For more information about #{lb
config}#, please see {The lb config command}#lb-config.

The remainder of this section discusses the three most important commands:

_* *{lb config}*: Responsible for initializing a Live system configuration
directory. See {The lb config command}#lb-config for more information.

_* *{lb build}*: Responsible for starting a Live system build. See {The lb
build command}#lb-build for more information.

_* *{lb clean}*: Responsible for removing parts of a Live system build. See
{The lb clean command}#lb-clean for more information.

3~lb-config The #{lb config}# command

As discussed in {live-build}#live-build, the scripts that make up live-build
read their configuration with the #{source}# command from a single directory
named #{config/}#. As constructing this directory by hand would be
time-consuming and error-prone, the #{lb config}# command can be used to
create skeleton configuration folders.

Issuing #{lb config}# without any arguments creates a #{config/}#
subdirectory which it populates with some default settings, and a skeleton
#{auto/}# subdirectory tree.

code{

 $ lb config
 [2013-01-01 09:14:22] lb_config
 P: Considering defaults defined in /etc/live/build.conf
 P: Creating config tree for a debian/i386 system

}code

Using #{lb config}# without any arguments would be suitable for users who
need a very basic image, or who intend to later provide a more complete
configuration via #{auto/config}# (see {Managing a
configuration}#managing-a-configuration for details).

Normally, you will want to specify some options. For example, to specify
which distribution you want to build using its codename:

code{

 $ lb config --distribution sid

}code

It is possible to specify many options, such as:

code{

 $ lb config --binary-images netboot --bootappend-live "boot=live config hostname=live-host username=live-user" ...

}code

A full list of options is available in the #{lb_config}# man page.

3~lb-build The #{lb build}# command

The #{lb build}# command reads in your configuration from the #{config/}#
directory. It then runs the lower level commands needed to build your Live
system.

3~lb-clean The #{lb clean}# command

It is the job of the #{lb clean}# command to remove various parts of a build
so subsequent builds can start from a clean state. By default, #{chroot}#,
#{binary}# and #{source}# stages are cleaned, but the cache is left
intact. Also, individual stages can be cleaned. For example, if you have
made changes that only affect the binary stage, use #{lb clean --binary}#
prior to building a new binary. See the #{lb_clean}# man page for a full
list of options.

2~live-boot The live-boot package

live-boot is a collection of scripts providing hooks for the
/{initramfs-tools}/, used to generate an initramfs capable of booting live
systems, such as those created by live-build. This includes the Debian Live
ISOs, netboot tarballs, and USB stick images.

At boot time it will look for read-only media containing a #{/live/}#
directory where a root filesystem (often a compressed filesystem image like
squashfs) is stored. If found, it will create a writable environment, using
aufs, for Debian like systems to boot from.

More information on initial ramfs in Debian can be found in the Debian Linux
Kernel Handbook at http://kernel-handbook.alioth.debian.org/ in the chapter
on initramfs.

2~live-config The live-config package

live-config consists of the scripts that run at boot time after live-boot to
configure the live system automatically. It handles such tasks as setting
the hostname, locales and timezone, creating the live user, inhibiting cron
jobs and performing autologin of the live user.
