3 febootstrap - Bootstrap a basic Fedora system (like Debian debootstrap)
7 febootstrap [--options] REPO TARGET [MIRROR]
11 febootstrap fedora-10 /tmp/f10
12 febootstrap rawhide /tmp/rawhide
13 febootstrap rawhide /tmp/rawhide http://mymirror/rawhide/x86_64/os
14 febootstrap --groupinstall="Mail Server" fedora-10 /tmp/mailserver
18 febootstrap creates a Fedora root filesystem, based on the Fedora
19 version specified by I<REPO> under the directory specified by
20 I<TARGET>. Optionally I<MIRROR> can point to a local mirror
21 (otherwise the public Fedora mirrors are used). I<REPO> names are
22 C<fedora-I<VERSION>> (eg. C<fedora-10>) or C<rawhide>.
24 febootstrap does I<not> need to be run as root. If for some reason
25 you do run it as root, then it works slightly differently and may have
26 side effects such as stopping or starting system daemons.
28 For more advanced needs, take a look at L<mock(1)>, C<livecd-creator>
29 and I<thincrust.net>'s C<appliance-creator>.
31 The normal output is a root directory located at I<TARGET> and
32 a fakeroot logfile at C<I<TARGET>/fakeroot.log>.
40 =item B<--install=package>
44 =item B<--groupinstall="group">
46 Specify the package or group to install. To list multiple packages or
47 groups, you must give multiple C<-i> or C<-g> options. Group names
48 can contain spaces, so use quotes where necessary.
50 These are passed directly to C<yum install> or C<yum groupinstall>
51 commands, and thus any dependencies are also resolved by yum. You can
52 also use shell globs and filenames here, as with ordinary yum.
54 If no packages or groups are given, then we install the C<Core> group
55 which is a small working Fedora installation (but by no means
56 minimal). Use C<yum groupinfo Core> to list the packages currently in
61 Normally febootstrap will clean up the yum repository
62 (C</var/cache/yum> inside the image). This contains the downloaded
63 RPMs and metadata. However if you give the C<--no-clean> option, then
64 the yum repository is left. This is useful if you want to run further
65 yum commands inside the filesystem by hand.
67 =item B<-p "proxyurl">
69 =item B<--proxy="proxyurl">
71 URL to the proxy server that yum should use.
77 You can list available repositories by visiting this URL:
79 L<http://mirrors.fedoraproject.org/mirrorlist?repo=help&arch=i386>
81 (If necessary replace C<i386> with your architecture, but it seems
82 unlikely that this list will change based on architecture).
84 =head1 RUNNING EXTRA COMMANDS IN THE ROOT FILESYSTEM
86 If you want to run further commands inside the root filesystem, for
87 example additional C<yum> installs, then use C<febootstrap-run>. See
88 the L<febootstrap-run(8)> manual page for more details.
90 You have to be careful about modifying files in the root filesystem
91 directly (without using C<febootstrap-run>). It's easy to confuse
92 fakeroot and end up with the wrong permissions on files (see FAKEROOT
95 C<febootstrap-run> runs the command inside the root filesystem, which
96 means it won't normally have access to files outside the root. You
97 can use C<FAKECHROOT_EXCLUDE_PATH> environment variable (see
98 L<fakechroot(1)>) or copy files into the root first.
100 =head2 FAKEROOT LOGFILE
102 When febootstrap is run as non-root (the normal case) we use fakeroot
103 so that yum thinks it is running as root. Fakeroot keeps track of
104 "real" file permissions in a log file which is saved into the target
105 directory as C<I<TARGET>/fakeroot.log>.
107 This logfile is indexed by inode number, which makes certain
108 operations safe and other operations unsafe. For example, deleting
109 files is usually safe. Files should be replaced only by doing:
111 echo updated-content > old-file
113 (since that preserves the original inode).
115 Deleting files and then creating new ones (even with a different name)
116 is usually unsafe, because the new files might reuse inodes claimed by
117 the old files, and so appear with peculiar permissions
118 (eg. unreadable, or as a symbolic link). (XXX We need an
119 C<febootstrap-install> utility to automate installing new files safely
122 In most cases it's usually safest to use C<febootstrap-run>.
124 You can use the fakeroot logfile in a number of ways:
130 Use L<febootstrap-run(8)> to run a command with the faked file
135 Generate an initramfs (compressed cpio) file containing the correct
136 permissions using the tool C<febootstrap-to-initramfs>.
140 Apply the permissions to the target directory using the forthcoming
141 tool C<febootstrap-fix-root> (requires root).
145 =head1 RUNNING FEBOOTSTRAP AS ROOT
147 There is some rudimentary support for running C<febootstrap> as root.
148 However it is not well-tested and generally not recommended.
150 =head1 COMPARISON TO DEBOOTSTRAP
152 febootstrap cannot do cross-architecture installs (C<debootstrap
153 --foreign>). The reason is that C<%pre> and C<%post> scripts cannot
154 run. It may be possible to defer running of scriptlets (which is
155 basically how debootstrap works), and patches to do this are welcomed.
157 febootstrap cannot do 32-on-64 bit installs. The reason is that
158 fakeroot and fakechroot do not load the correct preload library. This
159 is really a bug in fakeroot/fakechroot, which we think would be easy
160 to fix. (debootstrap deals with this case the same as for
161 C<--foreign> installs - see previous point).
163 =head1 OTHER RESTRICTIONS AND BUGS
165 The following programs are not run during C<%post> scriptlets (because
166 they are all statically linked, and fakechroot cannot run statically
171 =item C</sbin/ldconfig> (from many packages)
173 =item C</usr/sbin/glibc_post_upgrade> (from C<glibc>)
175 =item C</usr/sbin/build-locale-archive> (from C<glibc-common>)
177 =item C</usr/sbin/libgcc_post_upgrade> (from C<libgcc>)
181 If you wish, you can run them the first time you boot into the new
184 febootstrap recreates the repository anew each time, and this causes
185 yum to download all the RPMs every time. This is very wasteful, and
186 we should provide a way to cache the repository.
190 L<http://et.redhat.com/~rjones/febootstrap>
194 L<febootstrap-to-initramfs(8)>,
195 L<febootstrap-minimize(8)>,
196 L<febootstrap-run(8)>,
205 L<http://fedoraproject.org/wiki/FedoraLiveCD/LiveCDHowTo>,
206 L<http://thincrust.net/>,
208 C<ubuntu-vm-builder>.
212 Richard W.M. Jones <rjones @ redhat . com>
216 (C) Copyright 2009 Red Hat Inc.,
217 L<http://et.redhat.com/~rjones/febootstrap>.
219 This program is free software; you can redistribute it and/or modify
220 it under the terms of the GNU General Public License as published by
221 the Free Software Foundation; either version 2 of the License, or
222 (at your option) any later version.
224 This program is distributed in the hope that it will be useful,
225 but WITHOUT ANY WARRANTY; without even the implied warranty of
226 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
227 GNU General Public License for more details.
229 You should have received a copy of the GNU General Public License
230 along with this program; if not, write to the Free Software
231 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.