5 febootstrap - Bootstrapping tool for creating supermin appliances
9 febootstrap [-o OUTPUTDIR] --names LIST OF PKGS ...
10 febootstrap [-o OUTPUTDIR] PKG FILE NAMES ...
14 febootstrap is a tool for building supermin appliances. These are
15 tiny appliances (similar to virtual machines), usually around 100KB in
16 size, which get fully instantiated on-the-fly in a fraction of a
17 second when you need to boot one of them.
19 Originally "fe" in febootstrap stood for "Fedora", but this tool is
20 now distro-independent and can build supermin appliances for several
21 popular Linux distros, and adding support for others is reasonably
24 Note that this manual page documents febootstrap 3.x which is a
25 complete rewrite and quite different from version 2.x. If you are
26 looking for the febootstrap 2.x tools, then this is not the right
29 =head2 BASIC OPERATION
31 There are two modes for using febootstrap. With the I<--names>
32 parameter, febootstrap takes a list of package names and creates a
33 supermin appliance containing those packages and all dependencies that
34 those packages require. In this mode febootstrap usually needs
35 network access because it may need to consult package repositories in
36 order to work out dependencies and download packages.
38 Without I<--names>, febootstrap takes a list of packages (ie.
39 filenames of locally available packages). This package set must be
40 complete and consistent with no dependencies outside the set of
41 packages you provide. In this mode febootstrap does not require any
42 network access. It works by looking at the package files themselves.
44 By "package" we mean the RPM, DEB, (etc.) package. A package name
45 might be the fully qualified name (eg. C<coreutils-8.5-7.fc14.x86_64>)
46 or some abbreviation (eg. C<coreutils>). The precise format of the
47 name and what abbreviations are allowed depends on the package
50 The supermin appliance that febootstrap writes consists of two files
51 called C<hostfiles> and C<base.img> (it is common for users to add
52 more files). By default these are written to the current directory.
53 If you specify the I<-o OUTPUTDIR> option then these files are written
54 to the named directory instead (traditionally this directory is named
55 C<supermin.d> but you can call it whatever you want).
57 In all cases febootstrap can only build a supermin appliance which is
58 identical in distro, version and architecture to the host. It does
59 I<not> do cross-builds.
61 =head2 MINIMIZING THE SUPERMIN APPLIANCE
63 You may want to "minimize" the supermin appliance in order to save
64 time and space when it is instantiated. Typically you might want to
65 remove documentation, info files, man pages and locales. We used to
66 provide a separate tool called C<febootstrap-minimize> for this
67 purpose, but it is no longer provided. Instead you can post-process
68 C<hostfiles> yourself to remove any files or directories that you
69 don't want (by removing lines from the file). Be careful what you
70 remove because files may be necessary for correct operation of the
73 =head2 KERNEL AND KERNEL MODULES
75 Usually the kernel and kernel modules are I<not> included in the
76 supermin appliance. When the appliance is instantiated, the kernel
77 modules from the host kernel are copied in, and it is booted using the
80 =head2 BOOTING AND CACHING THE SUPERMIN APPLIANCE
82 To instantiate and boot the supermin appliance you need to use the
83 separate tool L<febootstrap-supermin-helper(8)>. For fastest boot
84 times you should cache the output of that tool. See the libguestfs
85 source file C<src/appliance.c> for an example of how this is done.
87 =head2 ENFORCING AVAILABILITY OF HOSTFILES
89 L<febootstrap-supermin-helper(8)> builds the appliance by copying in
90 host files as listed in C<hostfiles>. For this to work those host
91 files must be available. We usually enforce this by adding
92 requirements (eg. RPM C<Requires:> lines) on the package that uses the
93 supermin appliance, so that package cannot be installed without
94 pulling in the dependent packages and thus making sure the host files
103 Display brief command line usage, and exit.
105 =item B<--exclude REGEXP>
107 After doing dependency resolution, exclude packages which match the
110 This option is only used with I<--names>, and it can be given multiple
111 times on the command line.
115 Provide a list of package names, instead of providing packages
116 directly. In this mode febootstrap may require network access. See
117 L</BASIC OPERATION> above.
119 =item B<--no-warnings>
121 Don't print warnings about packaging problems.
123 =item B<-o outputdir>
125 Select the output directory where the two supermin appliance files are
126 written (C<hostfiles> and C<base.img>). The default directory is the
127 current directory. Note that if this files exist already in the
128 output directory then they will be overwritten.
134 Enable verbose messages.
140 Print the package name and version number, and exit.
146 L<febootstrap-supermin-helper(8)>,
147 L<http://people.redhat.com/~rjones/febootstrap/>,
149 L<http://libguestfs.org/>.
157 Richard W.M. Jones L<http://people.redhat.com/~rjones/>
161 Matthew Booth L<mbooth@redhat.com>
167 Copyright (C) 2009-2010 Red Hat Inc.
169 This program is free software; you can redistribute it and/or modify
170 it under the terms of the GNU General Public License as published by
171 the Free Software Foundation; either version 2 of the License, or
172 (at your option) any later version.
174 This program is distributed in the hope that it will be useful,
175 but WITHOUT ANY WARRANTY; without even the implied warranty of
176 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
177 GNU General Public License for more details.
179 You should have received a copy of the GNU General Public License
180 along with this program; if not, write to the Free Software
181 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.