forked from ivandavidov/minimal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
214 lines (149 loc) · 9.38 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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
The easiest way to build 'Minimal Linux Live' is to run the following script:
./build_minimal_linux_live.sh
Note that the build process requires proper toolchain already installed and
configured. Check the project website for more information:
http://minimal.idzona.com
For Ubuntu and other Debian based operating systems you can use the following
command in order to resolve the required build dependencies:
sudo apt install wget make gawk gcc bc bison flex xorriso libelf-dev libssl-dev
Once you have your ISO image up and running perhaps you'd like to examine the
configuration file '.config' and see what options you have there. For example,
you can change the property 'OVERLAY_BUNDLES' and build your own flavor of MLL.
Currently available overlay bundles:
all - this indicates to build all available overlay bundles. This
is useful mostly for testing purposes. You are encouraged to
use only the overlay bundles that you actually want.
GLIBC - set of all core GNU C libraries packaged together. This
overlay bundle is not host specific and can always be built.
The libraries are useful if you plan to use more software in
MLL. This overlay bundle depends on the GLIBC build process.
adopt_openjdk - JDK from AdoptOpenJDK with VM from either HotSpot or OpenJ9.
bosh_cli - BOSH command line tool. It can be used as landscape manager
for virtual network and server infrastructures in cloud
environments, e.g. AWS, Google Cloud, etc. Common use case
for this tool is to manage Cloud Foundry infrastructures.
c2048 - console version of the game 2048.
cf_cli - Cloud Foundry command line tool. It can be used to manage
all aspects of already existing Cloud Foundry installation,
including the full software development lifecycle in cloud
based environment.
cf_tools - meta-package which installs all available BOSH and Cloud
Foundry tools. Note that in MLL context these tools are
mostly useful as remote managers for existing BOSH and
Cloud Foundry infrastructures.
coreutils - set of commonly used GNU executable utilities.
dhcp - DHCP (client) and DNS (resolver) functionality.
dialog - shell scripting library for 'ncurses'. This overlay bundle
requires 'ncurses'.
Dropbear - SSH server/client. This overlay bundle requires some GLIBC
libraries. The build process generates new 'root' user with
password 'toor'. These are sample commands which demonstrate
how to use Dropbear:
SSH server (Alt + F1): dropbear -E -F
SSH client (Alt + F2): dbclient 10.0.2.15 -l root
Felix OSGi - Apache Felix OSGi framework. Use the 'felix-start' command
to run the Apache Felix OSGi framework. This overlay bundle
requires JRE or JDK.
fio - I/O load generator that can simulate a wide variety of
workloads on RAM or disks. 'fio' is essential for
troubleshooting data I/O bottlenecks.
Golang - Go is an open source programming language that makes it easy
to build simple, reliable, and efficient software.
GraalVM - Universal virtual machine for running applications written
in JavaScript, Python, Ruby, R, JVM-based languages like
Java, Scala, Clojure, Kotlin, and LLVM-based languages such
as C and C++.
kbd - keyboard utilities and keymaps. For example, you can load
German keyboard layout like this:
loadkeys de
kernel_modules - kernel modules and 'mdev' hotplug manager.
kexec_tools - these tools can be used to boot another kernel and initramfs
from userspace.
libevent - event notification library API provides a mechanism to
execute a callback function when a specific event occurs on
a file descriptor or after a timeout has been reached.
Links - text-based web browser. Use the 'links' command to activate
the browser.
OpenJDK - the open source JDK. No need for manual steps. This overlay
bundle requires GLIBC and ZLIB.
Lua - the Lua Scripting Language. Use the 'lua' command to run an
interactive Lua interpreter.
make - GNU make utility.
MLL Hello - Simple educational overlay bundle with detailed comments
for each build step.
MLL Logo - custom MLL boot logo.
MLL Utils - set of experimental shell scripts (mll-*.sh) which provide
additional functionality, e.g. installer and useful tools.
This overlay bundle is currently experimental and its build
process depends on the host machine.
MLL Source - this overlay bundle provides all MLL source code in the
directory 'usr/src'.
nano - simple command-line text editor with on-screen shortcuts.
This overlay bundle requires 'ncurses'.
ncurses - 'GUI-like' API that runs within a terminal emulator.
nweb - 'nweb' is a very small and easy to use webserver, it runs
automatically on port 80. To portforward port 80 from the
QEMU guest (minimal) to port 8080 on the host, add
'-net nic,model=e1000 -net user,hostfwd=tcp::8080-:80' to
'cmd' in the qemu.sh file.
openjdk - Free and open-source JDK from OpenJDK.
static_get - portable binaries for Linux (http://s.minos.io).
stress - simple workload generator. Imposes a configurable amount of
CPU, memory, I/O, and disk stress on the system. stress is
useful for troubleshooting CPU and RAM issues.
util_linux - set of executable utilities distributed by the Linux kernel,
similar to busybox or GNU Core Utils. Some packages in this
overlay bundle require 'ncurses'.
vim - advanced text editor that seeks to provide the power of the
de-facto Unix editor 'vi', with a more complete feature set.
This package will create symlinks on top of 'vi'.
vitetris - console mode tetris game with lots of options. These options
are disabled in order to make the game as small as possible.
Type 'tetris' in order to start the game.
ZLIB - software library used for data compression.
Zulu JDK - Zulu is an enterprise quality, certified build of OpenJDK
that can be deployed on multiple platforms. Zulu is free to
download, use and redistribute. This overlay bundle requires
GLIBC and ZLIB.
The overlay bundles can be found in this directory:
minimal_overlay/bundles
Each overlay bundle can have its own '.config' file. All properties in this
configuration file will override the same properties in the main 'config'
file. Also, each overlay bundle can declare list of bundle dependencies in
the file 'bundle_deps'. The bundles in this file are built before the main
bundle.
The overlay build system is independent from the main build system. However,
some bundles depend on build artifacts from the main build process, so it is
highly recommended to build MLL before you use the overlay build system.
Take a look at the 'mll_hello' overlay bundle for detailed explanation of the
internal overlay system build process and the corresponding directories that
are involved in the process.
You can build all bundles declared in the main '.config' file like this:
cd minimal_overlay
./overlay_build.sh
You can build individual overlay bundle like this:
cd minimal_overlay
./overlay_build.sh mll_hello
You can build more two or more bundles if you separate them with comma:
cd minimal_overlay
./overlay_build.sh mll_hello,dhcp,mll_source
The simplest way to add something to MLL is to put whatever you want in
the following folder:
minimal_overlay/rootfs
The content of this folder becomes visible at runtime. You can add your
own software or configurations. The content in this folder takes higher
priority which means that you can override everything which is provided
by Minimal Linux Live.
As already mentioned, the main configuration file is '.config'. It is
extensively documented and you can refer to it for detailed information
regarding all configuration properties.
### ### ###
I only provide the build scripts. It's entirely up to you to configure and
prepare your build environment. I use Linux Mint and Ubuntu, both 32 and 64 bit
editions. Your distribution might have different build dependencies but most of
the time there is a single meta-package which installs most of the stuff that
you need.
The build process is slow, so be prepared to wait. In the end you should have
the ISO image file 'minimal_linux_live.iso' in the same folder where you
started the build process. You can burn the ISO image on CD/DVD or (better) run
it with PC emulator like QEMU, VirtualBox or VMware Workstation Player.