Man Linux: Main Page and Category List

NAME

       rootstrap — Construct a root filesystem image in a file

SYNOPSIS

       rootstrap [options ...]  imagefile

DESCRIPTION

       rootstrap  is  a  tool  for  creating  root  filesystem images.  It was
       written primarily for use with User-Mode Linux, but may be  useful  for
       other purposes as well.

       Because  it  uses User-Mode Linux to bootstrap itself, rootstrap can be
       used without root privileges on the host  system,  which  are  normally
       required  for this task in order to use chroot(2) and mount and unmount
       filesystems.   Rootstrap  boots  UML  and  uses  tools  from  the  host
       filesystem to perform installation and configuration tasks.

       Note: since roostrap needs to access the host filesystem it requires an
       UML kernel with hostfs built-in (CONFIG_HOSTFS=y), not as module.

OPTIONS

       -s, --image-size
                 Sets the initial size of the image, in megabytes,  overriding
                 the initialsize option in rootstrap.conf.

       -o logfile
                 Log  the output of the creation process to logfile instead of
                 to standard output.

       -u args, --umlargs args
                 Pass additional arguments to user-mode linux when booting  to
                 create  the  image.   Supplements  the  ’umlargs’  option  in
                 rootstrap.conf.

Configuration

       The  configuration  file  consists  of  sections,   starting   with   a
       "[section]"  header,  followed  by "option=value" entries.  Long values
       are allowed to span multiple lines if each continued line  is  indented
       with whitespace.

       With  the exception of the special section "global", sections are named
       after a  corresponding  module.   When  that  module  is  executed,  it
       receives   the   option/value  pairs  in  its  section  as  environment
       variables.   All  modules  inherit  global   options   as   environment
       variables,  except  where  overridden  by options within their specific
       section.  At least PATH must be set here, in addition to  the  required
       parameters listed below under [global].

       Documentation  for  configurable  modules distributed with rootstrap is
       included below.  This section is currently incomplete.

       Note that  the  modules  shipped  with  rootstrap  have  a  recommended
       ordering  due  to  their  cooperation  in  building the guest OS image,
       equivalent modules can be used for each of these tasks:

          1. setup guest network (if you need it for OS installation)

          2. create the target filesystem

          3. mount target filesystem in the guest Linux

          4. OS installation

          5. UML basic setup (device nodes, kernel modules, etc.)

          6. Tweaking (here you should have a fully working OS to play with)

          7. unmount the target filesystem

Modules

   [global]
       Contains configuration options that affect the operation  of  rootstrap
       itself, or several modules.

       fstype    The type of filesystem to create (ext2, ext3, reiserfs, etc.)
                 This parameter is mandatory.

       umlargs   Additional arguments to user-mode linux passed  when  booting
                 to create the image.

       PATH      The  PATH  environment  variable  to  pass  to modules.  This
                 parameter is mandatory.

       initialsize
                 The initial size of  the  filesystem  image  (in  megabytes).
                 This  must  be  large  enough to contain a complete installed
                 system as produced by  the  selected  modules.   It  will  be
                 created   sparsely,  so  additional  space  is  not  entirely
                 allocated until it is used.  This parameter is mandatory.

       freespace The amount of free space  to  leave  on  the  filesystem  (in
                 megabytes).   The filesystem will be resized, if possible, to
                 adjust the amount of free space to approximately this amount.
                 This parameter is optional.

       modules   The list of modules to invoke, in order.  Each module will be
                 searched for in several  directories,  listed  in  the  FILES
                 section  below, and passed environment variables based on the
                 options set in the corresponding section of the configuration
                 file.  This parameter is mandatory.

       debug     When set to "true" make rootstrap spawn a shell when a module
                 script fails allowing further debugging actions.   The  shell
                 will  have  the same environment as the failing script so you
                 could simply invoke sh -x  /path/to/module            to  see
                 what’s  going  wrong.  Moreover  the shell exit value will be
                 used to tell rootstrap to:  re-evaluate  the  script  when  1
                 (with exit 1) or continue with the next one when 2 (with exit
                 2); all other values will make rootstrap fail with an  error.
                 This parameter is optional.

   [network]
       Network  configuration.  This module configures virtual networking with
       the user-mode Linux system used to build  the  filesystem  image.   Its
       presence  is  not  strictly  necessary,  if the selected modules do not
       require network access (for example, with a local package  mirror)  and
       the network module is not included in the global "modules" list.

       interface The name of the network interface to configure inside the UML
                 virtual  machine,  typically  "eth0".   This   parameter   is
                 mandatory.

       host      The IP address of the host side of the interface (the host on
                 which rootstrap is  run),  as  visible  to  the  UML  virtual
                 machine.  This parameter is mandatory.

       uml       The  IP  address  of the UML side of the interface (where the
                 system is being built). The value "dhcp" is also accepted and
                 makes  rootstrap  try  to  configure  the  network  interface
                 through DHCP.  This parameter is mandatory.

       transport The  type  of  virtual  networking  interface  to  be   used.
                 Typically  "tuntap".   Other available transports are "slirp"
                 and "daemon".  This parameter is mandatory.

       netmask   The netmask  for  the  network  interface  (applies  to  both
                 sides).  This parameter is mandatory.

       hostname  The  host  name  to  use for the created UML virtual machine.
                 This parameter is optional.

       gateway   A default gateway to be used by the user-mode  Linux  system.
                 This parameter is optional.

       domain    The local domain name.

       nameserver
                 The  DNS  server to use for domain name resolution inside the
                 UML virtual machine. This parameter is optional,  but  useful
                 if you do not have a name server running on the host.

   [mkfs]
       This  module creates the filesystem for the rootfs.  It uses the fstype
       global parameter.

   [mount]
       This module mounts the root filesystem where the OS image is  going  to
       be created.  It uses the fstype global parameter.

   [umount]
       This module unmounts the root filesystem and /proc.

   [uml]
       Creates  /etc/fstab  and  necessary  device nodes, it eventually copies
       kernel modules into the  target  image.   It  uses  the  fstype  global
       parameter.

       kernel_modules
                 How  to deal with kernel modules for the guest Linux.  It can
                 be one of none, hostfs or copy, defaults to the latter  which
                 copies the available modules in the target filesystem.

       kernel_modules_dir
                 The  directory where kernel_modules            are located on
                 the host filesystem. It defaults to /usr/lib/uml/modules

       install_modules
                 This  parameter  is   superseeded   by   kernel_modules   and
                 kernel_modules_dir.  It accepts a boolean value (true/false).

   [debian]
       Debian installation.  This module installs a basic Debian system  using
       debootstrap.

       dist      The distribution to install (e.g., potato, woody, etc.)

       mirror    A  URL  for  a  Debian  archive containing the base packages.
                 This must be a URL understood by  debootstrap,  which  as  of
                 this  writing  includes  URLs  understood  by wget, and file:
                 URLs.

       exclude   A list of packages which should be excluded (never  installed
                 at all).  It is quite possible to produce a broken system, or
                 fail to build a  system  at  all,  if  this  option  is  used
                 improperly.   It  is  useful  for excluding packages, such as
                 pcmcia-cs, which are typically  not  necessary  for  UML  and
                 other applications.

                 Corresponds to debootstrap’s --exclude option

       purge     A list of packages which should be removed after installation
                 is complete.  Use this for packages which are required during
                 installation, but may be removed afterward.  The same warning
                 applies as with the exclude option.

                 Packages are removed with dpkg --purge.

       include   A list of packages which should be included  in  the  initial
                 set of packages to install.

                 Corresponds to debootstrap’s --include option.

       install   Extra  packages  to install via apt after initial debootstrap
                 install.

                 See also the sources option.

       debconf_preseed_file
                 A file containing a debconf DB to be used as  default.   Read
                 debconf        documentation        and        see       your
                 /var/cache/debconf/config.dat for examples and caveats.

       sources   Sources for target’s sources.list. If no value is  given  the
                 default is the main section of mirror.  NOTE: you can provide
                 multiple lines if  each  new  line  is  indented  with  blank
                 spaces.

       preferences
                 Preferences   for   target’s   apt   preferences   file  (see
                 apt_preferences(5)).  NOTE: you can provide multiple lines if
                 each  new  line  is  indented  with  blank  spaces.  Multiple
                 apt_preferences stanzas are allowed provided  that  they  are
                 separated by a line containing only a dot (".") and obviously
                 indented as specified above.

       apt_conf  Apt   configuration   for   target’s   apt.conf   file   (see
                 apt.conf(5)).  The  file  will  be  created before installing
                 additional packages so it will  be  already  effective  then.
                 NOTE:  you  can  provide  multiple  lines if each new line is
                 indented with blank spaces.

       apt_force_yes
                 Will make rootstrap use the  --force-yes  switch  to  install
                 debian  packages.  This  useful  when  you  need  to  install
                 packages from sources that don’t use a Release.gpg  file  and
                 thus  failing  apt  key authentication. It can be either true
                           or false and defaults to the former.

                 Be careful anyway as using this option  "will  cause  apt  to
                 continue   without   prompting   if  it  is  doing  something
                 potentially  harmful"  (from  apt-get(8)).  This  option   is
                 provided  standalone  instead  of  forcing  its  inclusion in
                 apt_conf to avoid  causing  destructive  actions  later  when
                 using apt-get from the UML instance.

   Custom modules
       Custom modules can very easily be used by rootstrap, in addition to (or
       in place of) the supplied modules.  See FILES below for locations  that
       are searched for modules.

       When  a  module  is invoked, the filesystem being created is mounted on
       $TARGET, /dev, /etc and /tmp are tmpfs filesystems internal to the  UML
       system, while the root filesystem is a hostfs mount of the system where
       rootstrap is running, to have access to the above shadowed  directories
       the  full  host filesystem is available on $HOST. /lib/modules is tmpfs
       too and bind mounted to the host’s /usr/lib/uml/modules to let  scripts
       load  necessary  kernel  modules.  This means that most software on the
       host system should be available  and  work  as  expected.  The  working
       directory  where  rootstrap  is  run  is  available  as  $WORKDIR.  The
       environment is generated  from  the  configuration  file  as  described
       above.

       Be  careful  about  modules  ordering (see CONFIGURATION above), you’ll
       mostly  want  to  plug  into  the  tweaking  step  to  perform   custom
       configurations.

       To debug modules enable the debug global parameter, see its description
       fro more hints.

FILES

       /etc/rootstrap/rootstrap.conf
                 System-wide default configuration

       rootstrap.conf
                 Local overrides

       /usr/lib/rootstrap/modules
                 Modules distributed with rootstrap

       /etc/rootstrap/modules
                 System-wide overrides and additional modules

       modules   Local overrides and additional modules

SEE ALSO

       debootstrap(8), apt_preferences(5), apt.conf(5), debconf(7),  linux(1);
       locally  installed  User-Mode  Linux documentation or      http://user-
       mode-linux.sourceforge.net/    (link    to    URL     http://user-mode-
       linux.sourceforge.net/)

AUTHOR

       Rootstrap was written by Matt Zimmerman mdz@debian.org

                                                                  rootstrap(1)