Use local configuration (zlib). Documentation updates.

This commit is contained in:
Ivan Davidov 2017-12-04 19:23:22 +02:00
parent 6917b236ab
commit 8d8cc0bda4
4 changed files with 110 additions and 64 deletions

View File

@ -35,20 +35,6 @@ SYSLINUX_SOURCE_URL=http://kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.0
#####################################################################
# #
# This section contains the overlay source bundles and properties #
# #
#####################################################################
# You can find the latest ZLIB source bundles here:
#
# http://zlib.net
#
ZLIB_SOURCE_URL=http://zlib.net/zlib-1.2.11.tar.xz
#################################################### ####################################################
# # # #
# This section contains configuration properties # # This section contains configuration properties #
@ -96,15 +82,26 @@ USE_PREDEFINED_BUSYBOX_CONFIG=false
OVERLAY_TYPE=folder OVERLAY_TYPE=folder
# This property defines one or more additional overlay software pieces which # This property defines one or more additional overlay software pieces which
# will be generated and placed in the 'work/src/minimal_overlay/rootfs' folder. # will be generated and placed in the directory 'work/overlay_rootfs'. These
# These software pieces will be visible and fully usable after boot. By default # software pieces will be visible and fully usable after boot. Note that the
# this property is disabled because the build process for most of the software # build process for most of the overlay bundles depends on the softawre that
# is host specific and may not work out of the box. Note that if you build any # is already installed on the host machine. The only overlay bundles that are
# overlay software and you are using sparse image file for the overlay structure # guaranteed to work are the ones declared by default. The build process for
# then most probably something will go wrong because the overlay software # most of the other overlay bundles may fail and therefore these bundles are
# requires more than 1MB free space. The solution is to use folder overlay or to # not enabled by default. It is up to you to prepare your host environment and
# edit the script 'xx_generate_iso.sh' and set it to create sparse image file # install all prerequisites for the overlay bundles that you want to build.
# with bigger size. # For starters, you might want to install the 'libncurses-dev' library which
# is required by some of the overlay bundles.
#
# In the future Minimal Linux Live aims to provide fully functional 'sysroot'
# and all development host dependencies should be eliminated. However, for now
# it is up to you to maintain your host build environment.
#
# Note that if you build any overlay software and you are using sparse image file
# for the overlay structure then most probably something will go wrong because
# the overlay software requires more than 1MB free space. The solution is to use
# folder overlay or to edit the script 'xx_generate_overlay.sh' and modify it to
# create sparse image file with bigger size.
# #
# Currently available overlay software: # Currently available overlay software:
# #
@ -139,6 +136,10 @@ OVERLAY_TYPE=folder
# #
# Refer to the README file for more information. # Refer to the README file for more information.
# #
# Each bundle can have separate '.config' file which overrides any property
# which has been provided in this configuration file. Refer to the README
# file for more information.
#
# The line below is sample which provides Open JDK, Apache Felix and Links. # The line below is sample which provides Open JDK, Apache Felix and Links.
# There is also network functionality provided by the 'dhcp' overlay bundle. # There is also network functionality provided by the 'dhcp' overlay bundle.
# #

View File

@ -1,55 +1,54 @@
The easiest way to build "Minimal Linux Live" is to run the following script: The easiest way to build 'Minimal Linux Live' is to run the following script:
sh build_minimal_linux_live.sh sh build_minimal_linux_live.sh
Note that the build process requires proper toolchain already installed and Note that the build process requires proper toolchain already installed and
configured. Check the project's website for more information: configured. Check the project website for more information:
http://minimal.idzona.com http://minimal.idzona.com
For Ubuntu and other Debian based operating systems you can use the following For Ubuntu and other Debian based operating systems you can use the following
command in order to resolve the required build dependencies: command in order to resolve the required build dependencies:
sudo apt install wget make gawk gcc bc xorriso sudo apt install wget make gawk gcc bc xorriso
Once you have your ISO image up and running perhaps you'd like to play with the 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 configuration file '.config' and see what options you have there. For example,
you can enable the property "OVERLAY_BUNDLES". If you do that you will have you can change the property 'OVERLAY_BUNDLES' and build your own flavor of MLL.
additional software being downloaded, built and installed on the ISO image.
Currently available overlay bundles: Currently available overlay bundles:
* GLIBC - Set of all core GNU C libraries packaged together. Requires ~3MB GLIBC - Set of all core GNU C libraries packaged together. Requires ~3MB
additional space. This overlay bundle is not host specific and additional space. This overlay bundle is not host specific and
can always be built. The libraries are useful if you plan to use can always be built. The libraries are useful if you plan to use
more software after boot. more software after boot.
This overlay bundle depends on the GLIBC build process. This overlay bundle depends on the GLIBC build process.
* bosh_cli - BOSH command line tool. It can be used as landscape manager for bosh_cli - BOSH command line tool. It can be used as landscape manager for
virtual network and server infrastructures in cloud environment, virtual network and server infrastructures in cloud environment,
e.g. AWS, Google Cloud, etc. The most common use case for this e.g. AWS, Google Cloud, etc. The most common use case for this
tool is to create and manage Cloud Foundry infrastructures. tool is to create and manage Cloud Foundry infrastructures.
* cf_cli - Cloud Foundry command line tool. It can be used to manage all cf_cli - Cloud Foundry command line tool. It can be used to manage all
aspects of already existing Cloud Foundry installation, including aspects of already existing Cloud Foundry installation, including
the full software development lifecycle in cloud environment. the full software development lifecycle in cloud environment.
* cf_tools - This is metapackage which installs all BOSH and Cloud Foundry cf_tools - This is metapackage which installs all BOSH and Cloud Foundry
tools. Note that in MLL context these tools are mostly useful tools. Note that in MLL context these tools are mostly useful
as remote managers for already existing BOSH and Cloud Foundry as remote managers for already existing BOSH and Cloud Foundry
cloud infrastructures. cloud infrastructures.
* coreutils - Set of commonly used GNU executable utilities. coreutils - Set of commonly used GNU executable utilities.
* dhcp - DHCP and DNS functionality to connect to the Internet. dhcp - DHCP and DNS functionality to connect to the Internet.
* dialog - Shell scripting library for ncurses dialog - Shell scripting library for ncurses
This overlay bundle requires ncurses This overlay bundle requires ncurses
* Dropbear - SSH server/client. Requires ~1MB additional space. The build Dropbear - SSH server/client. Requires ~1MB additional space. The build
process creates user 'root' with password 'toor'. These are process creates user 'root' with password 'toor'. These are
sample commands which demonstrate how to use Dropbear: sample commands which demonstrate how to use Dropbear:
@ -58,83 +57,126 @@ Currently available overlay bundles:
This overlay bundle requires GLIBC. This overlay bundle requires GLIBC.
* Felix OSGi - Apache Felix OSGi framework. Requires ~2MB additional space. Use Felix OSGi - Apache Felix OSGi framework. Requires ~2MB additional space. Use
the "felix-start" command to run the Apache Felix OSGi framework. the "felix-start" command to run the Apache Felix OSGi framework.
This overlay bundle requires JRE or JDK. This overlay bundle requires JRE or JDK.
* fio - I/O load generator that can simulate a wide variety of workloads fio - I/O load generator that can simulate a wide variety of workloads
on RAM or disks. fio is essential for troubleshooting data on RAM or disks. fio is essential for troubleshooting data
bottlenecks. bottlenecks.
* JRE / JDK - Oracle's JRE or JDK. Requires ~366MB additional space for JDK. JRE / JDK - Oracle's JRE or JDK. Requires ~366MB additional space for JDK.
This overlay bundle requires some manual preparation steps. Refer This overlay bundle requires some manual preparation steps. Refer
to the "JAVA_ARCHIVE" property in the ".config" file for more to the "JAVA_ARCHIVE" property in the ".config" file for more
detailed information. detailed information.
This overlay bundle requires GLIBC. JDK 9 requires ZLIB. This overlay bundle requires GLIBC. JDK 9 requires ZLIB.
* kbd - Keyboard utilities and keymaps. For example, you can load kbd - Keyboard utilities and keymaps. For example, you can load
German keyboard layout like this: German keyboard layout like this:
loadkeys de loadkeys de
* libevent - event notification library API provides a mechanism to execute a libevent - event notification library API provides a mechanism to execute a
callback function when a specific event occurs on a file callback function when a specific event occurs on a file
descriptor or after a timeout has been reached. descriptor or after a timeout has been reached.
* kexec_tools - Kexec tools, can be used to boot another kernel from userspace kexec_tools - Kexec tools, can be used to boot another kernel from userspace
* Links - Text based browser. Requires ~1MB additional space. Use the Links - Text based browser. Requires ~1MB additional space. Use the
"links" command to activate the browser. "links" command to activate the browser.
* Open JDK - The open source JDK. No need for manual steps. Open JDK - The open source JDK. No need for manual steps.
This overlay bundle requires GLIBC and ZLIB. This overlay bundle requires GLIBC and ZLIB.
* Lua - The Lua Scripting Language 5.3. Requires ~ 800kb additional Lua - The Lua Scripting Language 5.3. Requires ~ 800kb additional
space. Use the "lua" command to run an interactive lua space. Use the "lua" command to run an interactive lua
interpreter. interpreter.
* make - GNU make utility make - GNU make utility
* MLL Utils - Set of experimental shell scripts (mll-*.sh) which provide MLL Utils - Set of experimental shell scripts (mll-*.sh) which provide
additional functionality, e.g. installer and useful tools. additional functionality, e.g. installer and useful tools.
This overlay bundle is currently experimental and its build This overlay bundle is currently experimental and its build
process depends on the host machine. process depends on the host machine.
* MLL Source - This overlay bundle provides all MLL source code in the MLL Source - This overlay bundle provides all MLL source code in the
directory 'usr/src'. directory 'usr/src'.
* nano - Simple command-line text editor with on-screen shortcuts. nano - Simple command-line text editor with on-screen shortcuts.
This overlay bundle requires ncurses. This overlay bundle requires ncurses.
* ncurses - "GUI-like" API that runs within a terminal emulator. ncurses - "GUI-like" API that runs within a terminal emulator.
* nweb - nweb is a very small and easy to use webserver, it is run nweb - nweb is a very small and easy to use webserver, it is run
automatically on port 80. To portforward port 80 from the automatically on port 80. To portforward port 80 from the
guest (minimal) to port 8080 on the host add guest (minimal) to port 8080 on the host add
'-net nic,model=e1000 -net user,hostfwd=tcp::8080-:80' to '-net nic,model=e1000 -net user,hostfwd=tcp::8080-:80' to
'cmd' in the qemu.sh file. 'cmd' in the qemu.sh file.
* stress - Simple workload generator. Imposes a configurable amount of CPU, stress - Simple workload generator. Imposes a configurable amount of CPU,
memory, I/O, and disk stress on the system. stress is useful for memory, I/O, and disk stress on the system. stress is useful for
troubleshooting CPU and RAM. troubleshooting CPU and RAM.
* util_linux - Set of executable utilities distributed by the Linux Kernel util_linux - Set of executable utilities distributed by the Linux Kernel
similar to busybox or GNU Core Utils. similar to busybox or GNU Core Utils.
Some packages in this overlay bundle require ncurses. Some packages in this overlay bundle require ncurses.
* vim - An advanced text editor that seeks to provide the power of vim - An advanced text editor that seeks to provide the power of
the de-facto Unix editor 'Vi', with a more complete feature the de-facto Unix editor 'Vi', with a more complete feature
set. set.
This package will create symlinks on top of vi. This package will create symlinks on top of vi.
* ZLIB - Software library used for data compression. ZLIB - Software library used for data compression.
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.
You can build all bundles declared in the main '.config' file like this:
cd minimal_overlay
./overlay_build
You can build individual overlay bundle like this:
cd minimal_overlay
./overlay_build bundle_name
You can build more two or more bundles if you separate them with comma:
cd minimal_overlay
./overlay_build bundle_name_a,bundle_name_b,bundle_name_c
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.
### ### ### ### ### ###
@ -145,6 +187,6 @@ the time there is a single meta-package which installs most of the stuff that
you need. you need.
The build proces is slow, so be prepared to wait. In the end you should have The build proces 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 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 started the build process. You can burn the ISO image on CD/DVD or (better) run
it with PC emulator like QEMU or VirtualBox. it with PC emulator like QEMU or VirtualBox.

View File

@ -0,0 +1,5 @@
# You can find the latest ZLIB source bundles here:
#
# http://zlib.net
#
ZLIB_SOURCE_URL=http://zlib.net/zlib-1.2.11.tar.xz

View File

@ -4,15 +4,13 @@ set -e
. ../../common.sh . ../../common.sh
# Grab everything after the '=' character. # Read the common configuration properties.
DOWNLOAD_URL=$(grep -i ZLIB_SOURCE_URL $MAIN_SRC_DIR/.config | cut -f2 -d'=') DOWNLOAD_URL=`read_property ZLIB_SOURCE_URL`
USE_LOCAL_SOURCE=`read_property USE_LOCAL_SOURCE`
# Grab everything after the last '/' character. # Grab everything after the last '/' character.
ARCHIVE_FILE=${DOWNLOAD_URL##*/} ARCHIVE_FILE=${DOWNLOAD_URL##*/}
# Read the 'USE_LOCAL_SOURCE' property from '.config'
USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
if [ "$USE_LOCAL_SOURCE" = "true" -a ! -f $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE ] ; then if [ "$USE_LOCAL_SOURCE" = "true" -a ! -f $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE ] ; then
echo "Source bundle $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE is missing and will be downloaded." echo "Source bundle $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE is missing and will be downloaded."
USE_LOCAL_SOURCE="false" USE_LOCAL_SOURCE="false"