215 lines
9.4 KiB
Plaintext
215 lines
9.4 KiB
Plaintext
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.
|