-
Notifications
You must be signed in to change notification settings - Fork 32
/
README
179 lines (120 loc) · 4.08 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
supermin - Tool for creating supermin appliances
by Richard W.M. Jones ([email protected])
http://people.redhat.com/~rjones/supermin
----------------------------------------------------------------------
Supermin is a tool for building supermin appliances. These are tiny
appliances [similar to virtual machines], usually around 100KB in
size, which get fully instantiated on-the-fly in a fraction of a
second when you need to boot one of them.
A complete description is in the supermin(1) man page.
IMPORTANT NOTE FOR USERS OF SUPERMIN 4.x: supermin 5.x is a rewrite of
supermin 4. It is compatible at a high level with supermin 4 /
febootstrap 3, but requires some command line adjustments.
IMPORTANT NOTE FOR USERS OF FEBOOTSTRAP 3.x:
supermin 4.x is just an evolution of febootstrap 3.x (really we just
renamed it). The previous febootstrap program is now called
supermin. The previous febootstrap-supermin-helper program is now
called supermin-helper. Apart from that they are identical, although
they will evolve and add features over time.
IMPORTANT NOTE FOR USERS OF FEBOOTSTRAP 2.x:
febootstrap 3.x is a complete rewrite. febootstrap 2.x could only
build Fedora distributions. This version can build many varieties
of Linux distros. 3.x only builds supermin appliances, it does not
build chroots. 3.x does not build cross-distro, cross-release or
cross-architecture systems. If you want febootstrap 2.x, please use
the 'febootstrap-2.x' branch from the git repository.
Requirements
------------
ocaml
ocaml findlib ("ocamlfind" program)
perldoc
- This is just used to generate the manpage.
static libc
- Can be replaced with dietlibc, musl-libc (and maybe other
alternate libc). See section ``Alternate libc'' below.
bash
gcc
gawk
libcom_err
libext2fs
/sbin/mke2fs
- These are part of e2fsprogs.
For Fedora/RHEL:
rpm
librpm
yumdownloader (from yum-utils) or 'dnf download' plugin
NB: On RHEL, use `yum-builddep supermin' to install all the
dependencies. On Fedora use `dnf builddep supermin'.
For Debian/Ubuntu:
dpkg
apt-get
NB: On Debian, use `apt-get build-dep supermin' to install all the
dependencies.
For openSUSE:
rpm
librpm
zypper
For Mageia:
rpm
librpm
urpmi & fakeroot, or 'dnf download' plugin
For Arch Linux:
pacman
fakeroot
makepkg
Optional
--------
These are only needed if you plan to boot the supermin appliances you
are building:
qemu >= 0.13
kernel >= 2.6.36
zcat (command) - if your kernel uses gzipped modules
xzcat (command) - if your kernel uses xz-compressed modules
zstdcat (command) - if your kernel uses zstd-compressed modules
Building and installing
-----------------------
If you're cloning this from git the first time, do:
autoreconf -i
For normal builds, and building from the tarball:
./configure
make
You can run supermin without installing:
./src/supermin --help
To install the software:
sudo make install
Tests
-----
make check
Note that the tests require a network connection. If you don't
have a network connection (eg. for distro package building) then
try doing:
./configure --disable-network-tests
Examples
--------
See the examples/ subdirectory.
Feedback and bugs
-----------------
Send feedback to [email protected]. You can file bugs in
https://bugzilla.redhat.com/ (under "Fedora", "supermin")
Alternate libc
--------------
Supermin uses a small, statically linked "init" binary. Normally this
is linked to static glibc, but static glibc produces enormous binaries
(800KB+). You can use an alternate libc if you prefer. For example,
using dietlibc, I can build a 22K init, about 1/40th of the size.
$ ls -l init/init
-rwxrwxr-x. 1 rjones rjones 21736 Feb 17 14:03 init/init
- Dietlibc
For dietlibc, build supermin like this:
./configure
make clean
make -C init CC="diet gcc"
make
which builds the init using dietlibc, and then builds the rest of
supermin with the dietlibc-using init binary.
- Musl-libc
For musl, build supermin like this:
./configure
make clean
make -C init CC="musl-gcc"
make