Major refactoring - the overlay structure is now independet build subsystem. Tested on 32-bit, not tested on 64-bit.

This commit is contained in:
Ivan Davidov 2017-01-15 18:49:01 +02:00
parent acb5f0b617
commit 807e1b9bc0
30 changed files with 302 additions and 189 deletions

View File

@ -11,7 +11,7 @@
# #
# http://kernel.org # http://kernel.org
# #
KERNEL_SOURCE_URL=http://kernel.org/pub/linux/kernel/v4.x/linux-4.4.40.tar.xz KERNEL_SOURCE_URL=http://kernel.org/pub/linux/kernel/v4.x/linux-4.4.43.tar.xz
# You can find the latest GNU libc source bundles here: # You can find the latest GNU libc source bundles here:
# #
@ -23,7 +23,7 @@ GLIBC_SOURCE_URL=http://ftp.gnu.org/gnu/glibc/glibc-2.24.tar.bz2
# #
# http://busybox.net # http://busybox.net
# #
BUSYBOX_SOURCE_URL=http://busybox.net/downloads/busybox-1.26.1.tar.bz2 BUSYBOX_SOURCE_URL=http://busybox.net/downloads/busybox-1.26.2.tar.bz2
# You can find the latest Syslinux source bundles here: # You can find the latest Syslinux source bundles here:
# #
@ -65,6 +65,7 @@ FELIX_SOURCE_URL=http://www-us.apache.org/dist/felix/org.apache.felix.main.distr
# JAVA_ARCHIVE=/home/ivan/Downloads/jdk-8u102-linux-x64.tar.gz # JAVA_ARCHIVE=/home/ivan/Downloads/jdk-8u102-linux-x64.tar.gz
# #
#JAVA_ARCHIVE=/absolute/path/to/java.archive.tar.gz #JAVA_ARCHIVE=/absolute/path/to/java.archive.tar.gz
#JAVA_ARCHIVE=/home/ivan/Downloads/jdk-8u111-linux-i586.tar.gz

View File

@ -53,7 +53,9 @@ OVERLAY_BUNDLES="$(grep -i ^OVERLAY_BUNDLES .config | cut -f2 -d'=')"
if [ ! "$OVERLAY_BUNDLES" = "" ] ; then if [ ! "$OVERLAY_BUNDLES" = "" ] ; then
echo "Generating additional overlay bundles. This may take a while..." echo "Generating additional overlay bundles. This may take a while..."
time sh build_minimal_linux_overlay.sh cd minimal_overlay
time sh overlay_build.sh
cd $SRC_DIR
else else
echo "Generation of additional overlay bundles has been skipped." echo "Generation of additional overlay bundles has been skipped."
fi fi
@ -102,7 +104,7 @@ if [ "$OVERLAY_TYPE" = "sparse" -a "$(id -u)" = "0" ] ; then
mkdir -p sparse/work mkdir -p sparse/work
# Copy the overlay content. # Copy the overlay content.
cp -r $SRC_DIR/work/src/minimal_overlay/* sparse/rootfs/ cp -r $SRC_DIR/work/src/minimal_overlay/rootfs/* sparse/rootfs/
# Unmount the sparse file and delete the temporary folder. # Unmount the sparse file and delete the temporary folder.
$BUSYBOX umount sparse $BUSYBOX umount sparse
@ -119,7 +121,8 @@ elif [ "$OVERLAY_TYPE" = "folder" ] ; then
mkdir -p minimal/rootfs mkdir -p minimal/rootfs
mkdir -p minimal/work mkdir -p minimal/work
cp -rf $SRC_DIR/work/src/minimal_overlay/* minimal/rootfs/ cp -rf $SRC_DIR/work/src/minimal_overlay/rootfs/* \
minimal/rootfs/
else else
echo "Generating ISO image with no overlay structure..." echo "Generating ISO image with no overlay structure..."
fi fi

View File

@ -18,7 +18,7 @@ clean:
@echo "Removing predefined configuration files..." @echo "Removing predefined configuration files..."
@rm -rf minimal_overlay/*.config @rm -rf minimal_overlay/*.config
@echo "Removing source level overlay software..." @echo "Removing source level overlay software..."
@cd minimal_overlay && rm -rf $(shell ls -d */) && cd .. @cd minimal_overlay/rootfs && rm -rf $(shell ls -d */) && cd ..
@echo "Removing build log file..." @echo "Removing build log file..."
@rm -f minimal_linux_live.log @rm -f minimal_linux_live.log
@$(eval USE_LOCAL_SOURCE := $(shell grep -i ^USE_LOCAL_SOURCE .config | cut -f2 -d'=')) @$(eval USE_LOCAL_SOURCE := $(shell grep -i ^USE_LOCAL_SOURCE .config | cut -f2 -d'='))

View File

@ -1,25 +0,0 @@
#!/bin/sh
# Read the 'OVERLAY_BUNDLES' property from '.config'
OVERLAY_BUNDLES="$(grep -i ^OVERLAY_BUNDLES .config | cut -f2 -d'=')"
if [ "$OVERLAY_BUNDLES" = "" ] ; then
echo "There are no overlay bundles to build."
else
time sh overlay_00_clean.sh
OVERLAY_BUNDLES_LIST="$(echo $OVERLAY_BUNDLES | tr ',' ' ')"
for BUNDLE in $OVERLAY_BUNDLES_LIST
do
OVERLAY_SCRIPT=overlay_$BUNDLE.sh
if [ ! -f $OVERLAY_SCRIPT ] ; then
echo "Error - cannot find overlay script file '$OVERLAY_SCRIPT'."
else
echo "Building overlay bundle '$BUNDLE'..."
time sh $OVERLAY_SCRIPT
fi
done
fi

View File

@ -1,12 +0,0 @@
This file is located in the folder 'minimal_overlay'. You can use this folder to
put your own content (files and folders) which will be visible in the root
folder of your 'Minimal Linux Live' system, just like this file is visible. The
files/folders will override the content in the root folder, so be careful what
you put there because you may end up with broken system. If the boot media is
writeable, then all changes on the root file system are persisted automatically,
so be very careful what you do when you use the overlay support.
Check the '.config' file in the source folder for more details on the overlay
options and how to use them.

View File

@ -2,28 +2,33 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Grab everything after the '=' character. # Grab everything after the '=' character.
DOWNLOAD_URL=$(grep -i DROPBEAR_SOURCE_URL .config | cut -f2 -d'=') DOWNLOAD_URL=$(grep -i DROPBEAR_SOURCE_URL $MAIN_SRC_DIR/.config | cut -f2 -d'=')
# 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' # Read the 'USE_LOCAL_SOURCE' property from '.config'
USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE .config | cut -f2 -d'=')" USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
if [ "$USE_LOCAL_SOURCE" = "true" -a ! -f $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 $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"
fi fi
cd source/overlay cd $MAIN_SRC_DIR/source/overlay
if [ ! "$USE_LOCAL_SOURCE" = "true" ] ; then if [ ! "$USE_LOCAL_SOURCE" = "true" ] ; then
# Downloading Dropbear source bundle file. The '-c' option allows the download to resume. # Downloading Dropbear source bundle file. The '-c' option allows the download to resume.
echo "Downloading Links source bundle from $DOWNLOAD_URL" echo "Downloading Links source bundle from $DOWNLOAD_URL"
wget -c $DOWNLOAD_URL wget -c $DOWNLOAD_URL
else else
echo "Using local Dropbear source bundle $SRC_DIR/source/overlay/$ARCHIVE_FILE" echo "Using local Dropbear source bundle $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE"
fi fi
# Delete folder with previously extracted Dropbear. # Delete folder with previously extracted Dropbear.

View File

@ -2,11 +2,16 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Read the 'JOB_FACTOR' property from '.config' # Read the 'JOB_FACTOR' property from '.config'
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')" JOB_FACTOR="$(grep -i ^JOB_FACTOR $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
# Read the 'CFLAGS' property from '.config' # Read the 'CFLAGS' property from '.config'
CFLAGS="$(grep -i ^CFLAGS .config | cut -f2 -d'=')" CFLAGS="$(grep -i ^CFLAGS $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
# Find the number of available CPU cores. # Find the number of available CPU cores.
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l) NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
@ -14,12 +19,12 @@ NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
# Calculate the number of 'make' jobs to be used later. # Calculate the number of 'make' jobs to be used later.
NUM_JOBS=$((NUM_CORES * JOB_FACTOR)) NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
if [ ! -d $SRC_DIR/work/glibc/glibc_prepared ] ; then if [ ! -d $MAIN_SRC_DIR/work/glibc/glibc_prepared ] ; then
echo "Cannot continue - Dropbear SSH depends on GLIBC. Please buld GLIBC first." echo "Cannot continue - Dropbear SSH depends on GLIBC. Please buld GLIBC first."
exit 1 exit 1
fi fi
cd work/overlay/dropbear cd $MAIN_SRC_DIR/work/overlay/dropbear
# Change to the Dropbear source directory which ls finds, e.g. 'dropbear-2016.73'. # Change to the Dropbear source directory which ls finds, e.g. 'dropbear-2016.73'.
cd $(ls -d dropbear-*) cd $(ls -d dropbear-*)
@ -31,7 +36,7 @@ rm -rf ../dropbear_installed
echo "Configuring Dropbear..." echo "Configuring Dropbear..."
./configure \ ./configure \
--prefix=$SRC_DIR/work/overlay/dropbear/dropbear_installed \ --prefix=$MAIN_SRC_DIR/work/overlay/dropbear/dropbear_installed \
--disable-zlib \ --disable-zlib \
--disable-loginfunc \ --disable-loginfunc \
CFLAGS="$CFLAGS" CFLAGS="$CFLAGS"
@ -45,10 +50,10 @@ make install -j $NUM_JOBS
mkdir -p ../dropbear_installed/lib mkdir -p ../dropbear_installed/lib
# Copy all dependent GLIBC libraries. # Copy all dependent GLIBC libraries.
cp $SRC_DIR/work/glibc/glibc_prepared/lib/libnsl.so.1 ../dropbear_installed/lib cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libnsl.so.1 ../dropbear_installed/lib
cp $SRC_DIR/work/glibc/glibc_prepared/lib/libnss_compat.so.2 ../dropbear_installed/lib cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libnss_compat.so.2 ../dropbear_installed/lib
cp $SRC_DIR/work/glibc/glibc_prepared/lib/libutil.so.1 ../dropbear_installed/lib cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libutil.so.1 ../dropbear_installed/lib
cp $SRC_DIR/work/glibc/glibc_prepared/lib/libcrypt.so.1 ../dropbear_installed/lib cp $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib/libcrypt.so.1 ../dropbear_installed/lib
mkdir -p ../dropbear_installed/etc/dropbear mkdir -p ../dropbear_installed/etc/dropbear
@ -97,7 +102,7 @@ cp -r \
../dropbear_installed/bin \ ../dropbear_installed/bin \
../dropbear_installed/sbin \ ../dropbear_installed/sbin \
../dropbear_installed/lib \ ../dropbear_installed/lib \
$SRC_DIR/work/src/minimal_overlay $MAIN_SRC_DIR/work/src/minimal_overlay/rootfs
echo "Dropbear has been installed." echo "Dropbear has been installed."

View File

@ -0,0 +1,9 @@
#!/bin/sh
SRC_DIR=$(pwd)
time sh 01_get.sh
time sh 02_build.sh
cd $SRC_DIR

View File

@ -2,28 +2,33 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Grab everything after the '=' character. # Grab everything after the '=' character.
DOWNLOAD_URL=$(grep -i FELIX_SOURCE_URL .config | cut -f2 -d'=') DOWNLOAD_URL=$(grep -i FELIX_SOURCE_URL $MAIN_SRC_DIR/.config | cut -f2 -d'=')
# 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' # Read the 'USE_LOCAL_SOURCE' property from '.config'
USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE .config | cut -f2 -d'=')" USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
if [ "$USE_LOCAL_SOURCE" = "true" -a ! -f $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 $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"
fi fi
cd source/overlay cd $MAIN_SRC_DIR/source/overlay
if [ ! "$USE_LOCAL_SOURCE" = "true" ] ; then if [ ! "$USE_LOCAL_SOURCE" = "true" ] ; then
# Downloading Apache Felix source bundle file. The '-c' option allows the download to resume. # Downloading Apache Felix source bundle file. The '-c' option allows the download to resume.
echo "Downloading Apache Felix source bundle from $DOWNLOAD_URL" echo "Downloading Apache Felix source bundle from $DOWNLOAD_URL"
wget -c $DOWNLOAD_URL wget -c $DOWNLOAD_URL
else else
echo "Using local Apache Felix source bundle $SRC_DIR/source/overlay/$ARCHIVE_FILE" echo "Using local Apache Felix source bundle $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE"
fi fi
# Delete folder with previously extracted Felix. # Delete folder with previously extracted Felix.

View File

@ -0,0 +1,40 @@
#!/bin/sh
SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
echo "Removing old Apache Felix artifacts. This may take a while..."
rm -rf $MAIN_SRC_DIR/work/overlay/felix/felix_installed
mkdir -p $MAIN_SRC_DIR/work/overlay/felix/felix_installed/opt/felix
mkdir -p $MAIN_SRC_DIR/work/overlay/felix/felix_installed/bin
cd $MAIN_SRC_DIR/work/overlay/felix
cd $(ls -d felix-*)
cat << CEOF > bin/felix-start.sh
#!/bin/sh
cd /opt/felix
java -jar bin/felix.jar
CEOF
chmod +rx bin/felix-start.sh
cp -r * $MAIN_SRC_DIR/work/overlay/felix/felix_installed/opt/felix
cd $MAIN_SRC_DIR/work/overlay/felix/felix_installed
ln -s ../opt/felix/bin/felix-start.sh bin/felix-start
cp -r $MAIN_SRC_DIR/work/overlay/felix/felix_installed/* \
$MAIN_SRC_DIR/work/src/minimal_overlay/rootfs
echo "Apache Felix has been installed."
cd $SRC_DIR

View File

@ -0,0 +1,9 @@
#!/bin/sh
SRC_DIR=$(pwd)
time sh 01_get.sh
time sh 02_install.sh
cd $SRC_DIR

View File

@ -2,21 +2,26 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
if [ ! -d $SRC_DIR/work/glibc/glibc_prepared ] ; then # Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
if [ ! -d $MAIN_SRC_DIR/work/glibc/glibc_prepared ] ; then
echo "Cannot continue - GLIBC is missing. Please buld GLIBC first." echo "Cannot continue - GLIBC is missing. Please buld GLIBC first."
exit 1 exit 1
fi fi
echo "Preparing the overlay glibc folder. This may take a while..." echo "Preparing the overlay glibc folder. This may take a while..."
rm -rf work/overlay/glibc rm -rf $MAIN_SRC_DIR/work/overlay/glibc
mkdir -p work/overlay/glibc/lib mkdir -p $MAIN_SRC_DIR/work/overlay/glibc/lib
cd work/glibc/glibc_prepared/lib cd $MAIN_SRC_DIR/work/glibc/glibc_prepared/lib
find . -type l -exec cp {} $SRC_DIR/work/overlay/glibc/lib \; find . -type l -exec cp {} $MAIN_SRC_DIR/work/overlay/glibc/lib \;
echo "All libraries have been copied." echo "All libraries have been copied."
cd $SRC_DIR/work/overlay/glibc/lib cd $MAIN_SRC_DIR/work/overlay/glibc/lib
for FILE_DEL in $(ls *.so) for FILE_DEL in $(ls *.so)
do do
@ -33,8 +38,10 @@ echo "Duplicate libraries have been replaced with soft links."
strip -g * strip -g *
echo "All libraries have been optimized for size." echo "All libraries have been optimized for size."
cp -r $SRC_DIR/work/overlay/glibc/lib $SRC_DIR/work/src/minimal_overlay cp -r $MAIN_SRC_DIR/work/overlay/glibc/lib \
echo "All libraries have been installed." $MAIN_SRC_DIR/work/src/minimal_overlay/rootfs
echo "All GNU C libraries have been installed."
cd $SRC_DIR cd $SRC_DIR

View File

@ -18,8 +18,13 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Read the 'JAVA_ARCHIVE' property from '.config' # Read the 'JAVA_ARCHIVE' property from '.config'
JAVA_ARCHIVE="$(grep -i ^JAVA_ARCHIVE .config | cut -f2 -d'=')" JAVA_ARCHIVE="$(grep -i ^JAVA_ARCHIVE $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
if [ "$JAVA_ARCHIVE" = "" ] ; then if [ "$JAVA_ARCHIVE" = "" ] ; then
echo "ERROR: configuration property 'JAVA_ARCHIVE' is not set." echo "ERROR: configuration property 'JAVA_ARCHIVE' is not set."
@ -29,24 +34,25 @@ elif [ ! -f "$JAVA_ARCHIVE" ] ; then
exit 1 exit 1
fi fi
rm -rf $SRC_DIR/work/overlay/java rm -rf $MAIN_SRC_DIR/work/overlay/java
mkdir -p $SRC_DIR/work/overlay/java/opt mkdir -p $MAIN_SRC_DIR/work/overlay/java/opt
tar -xvf \ tar -xvf \
$JAVA_ARCHIVE \ $JAVA_ARCHIVE \
-C $SRC_DIR/work/overlay/java/opt -C $MAIN_SRC_DIR/work/overlay/java/opt
cd $SRC_DIR/work/overlay/java/opt cd $MAIN_SRC_DIR/work/overlay/java/opt
mv $(ls -d *) java mv $(ls -d *) java
mkdir $SRC_DIR/work/overlay/java/bin mkdir $MAIN_SRC_DIR/work/overlay/java/bin
for FILE in $(ls java/bin) for FILE in $(ls java/bin)
do do
ln -s ../opt/java/bin/$FILE ../bin/$FILE ln -s ../opt/java/bin/$FILE ../bin/$FILE
done done
cp -r $SRC_DIR/work/overlay/java/* $SRC_DIR/work/src/minimal_overlay cp -r $MAIN_SRC_DIR/work/overlay/java/* \
$MAIN_SRC_DIR/work/src/minimal_overlay/rootfs
echo "Java has been installed." echo "Java has been installed."

View File

@ -2,28 +2,33 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Grab everything after the '=' character. # Grab everything after the '=' character.
DOWNLOAD_URL=$(grep -i LINKS_SOURCE_URL .config | cut -f2 -d'=') DOWNLOAD_URL=$(grep -i LINKS_SOURCE_URL $MAIN_SRC_DIR/.config | cut -f2 -d'=')
# 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' # Read the 'USE_LOCAL_SOURCE' property from '.config'
USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE .config | cut -f2 -d'=')" USE_LOCAL_SOURCE="$(grep -i USE_LOCAL_SOURCE $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
if [ "$USE_LOCAL_SOURCE" = "true" -a ! -f $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 $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"
fi fi
cd source/overlay cd $MAIN_SRC_DIR/source/overlay
if [ ! "$USE_LOCAL_SOURCE" = "true" ] ; then if [ ! "$USE_LOCAL_SOURCE" = "true" ] ; then
# Downloading Links source bundle file. The '-c' option allows the download to resume. # Downloading Links source bundle file. The '-c' option allows the download to resume.
echo "Downloading Links source bundle from $DOWNLOAD_URL" echo "Downloading Links source bundle from $DOWNLOAD_URL"
wget -c $DOWNLOAD_URL wget -c $DOWNLOAD_URL
else else
echo "Using local Links source bundle $SRC_DIR/source/overlay/$ARCHIVE_FILE" echo "Using local Links source bundle $MAIN_SRC_DIR/source/overlay/$ARCHIVE_FILE"
fi fi
# Delete folder with previously extracted Links. # Delete folder with previously extracted Links.

View File

@ -2,11 +2,16 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
# Read the 'JOB_FACTOR' property from '.config' # Read the 'JOB_FACTOR' property from '.config'
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')" JOB_FACTOR="$(grep -i ^JOB_FACTOR $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
# Read the 'CFLAGS' property from '.config' # Read the 'CFLAGS' property from '.config'
CFLAGS="$(grep -i ^CFLAGS .config | cut -f2 -d'=')" CFLAGS="$(grep -i ^CFLAGS $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
# Find the number of available CPU cores. # Find the number of available CPU cores.
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l) NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
@ -14,7 +19,7 @@ NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
# Calculate the number of 'make' jobs to be used later. # Calculate the number of 'make' jobs to be used later.
NUM_JOBS=$((NUM_CORES * JOB_FACTOR)) NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
cd work/overlay/links cd $MAIN_SRC_DIR/work/overlay/links
# Change to the Links source directory which ls finds, e.g. 'links-2.12'. # Change to the Links source directory which ls finds, e.g. 'links-2.12'.
cd $(ls -d links-*) cd $(ls -d links-*)
@ -46,7 +51,9 @@ make install -j $NUM_JOBS
echo "Reducing Links size..." echo "Reducing Links size..."
strip -g ../links_installed/bin/* 2>/dev/null strip -g ../links_installed/bin/* 2>/dev/null
cp -r ../links_installed/bin $SRC_DIR/work/src/minimal_overlay cp -r ../links_installed/bin \
$MAIN_SRC_DIR/work/src/minimal_overlay/rootfs
echo "Links has been installed." echo "Links has been installed."
cd $SRC_DIR cd $SRC_DIR

View File

@ -0,0 +1,9 @@
#!/bin/sh
SRC_DIR=$(pwd)
time sh 01_get.sh
time sh 02_build.sh
cd $SRC_DIR

View File

@ -2,9 +2,14 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
echo "Preparing the Minimal Linux Live utilities folder. This may take a while..." echo "Preparing the Minimal Linux Live utilities folder. This may take a while..."
rm -rf work/overlay/mll_utils rm -rf $MAIN_SRC_DIR/work/overlay/mll_utils
mkdir -p work/overlay/mll_utils/sbin mkdir -p $MAIN_SRC_DIR/work/overlay/mll_utils/sbin
echo "Miminal Linux Live utilities folder has been prepared." echo "Miminal Linux Live utilities folder has been prepared."

View File

@ -2,12 +2,17 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
if [ ! -d "$SRC_DIR/work/overlay/mll_utils" ] ; then # Find the main source directory
echo "The directory $SRC_DIR/work/overlay/mll_utils does not exist. Cannot continue." cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
if [ ! -d "$MAIN_SRC_DIR/work/overlay/mll_utils" ] ; then
echo "The directory $MAIN_SRC_DIR/work/overlay/mll_utils does not exist. Cannot continue."
exit 1 exit 1
fi fi
cd work/overlay/mll_utils cd $MAIN_SRC_DIR/work/overlay/mll_utils
# 'mll-disk-erase' BEGIN # 'mll-disk-erase' BEGIN

View File

@ -2,12 +2,17 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
if [ ! -d "$SRC_DIR/work/overlay/mll_utils" ] ; then # Find the main source directory
echo "The directory $SRC_DIR/work/overlay/mll_utils does not exist. Cannot continue." cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
if [ ! -d "$MAIN_SRC_DIR/work/overlay/mll_utils" ] ; then
echo "The directory $MAIN_SRC_DIR/work/overlay/mll_utils does not exist. Cannot continue."
exit 1 exit 1
fi fi
cd work/overlay/mll_utils cd $MAIN_SRC_DIR/work/overlay/mll_utils
# 'mll-install' BEGIN # 'mll-install' BEGIN
@ -97,28 +102,30 @@ chmod +rx sbin/mll-install
# 'mll-install' END # 'mll-install' END
if [ ! -d "$SRC_DIR/work/syslinux" ] ; then if [ ! -d "$MAIN_SRC_DIR/work/syslinux" ] ; then
echo "The installer depends on Syslinux which is missing. Cannot continue." echo "The installer depends on Syslinux which is missing. Cannot continue."
exit 1 exit 1
fi; fi;
cd $SRC_DIR/work/syslinux cd $MAIN_SRC_DIR/work/syslinux
cd $(ls -d syslinux-*) cd $(ls -d syslinux-*)
cp bios/extlinux/extlinux \ cp bios/extlinux/extlinux \
$SRC_DIR/work/overlay/mll_utils/sbin $MAIN_SRC_DIR/work/overlay/mll_utils/sbin
mkdir -p $SRC_DIR/work/overlay/mll_utils/opt/syslinux mkdir -p $MAIN_SRC_DIR/work/overlay/mll_utils/opt/syslinux
cp bios/mbr/mbr.bin \ cp bios/mbr/mbr.bin \
$SRC_DIR/work/overlay/mll_utils/opt/syslinux $MAIN_SRC_DIR/work/overlay/mll_utils/opt/syslinux
# Big mama hack - find workaround and remove it!!! # Big mama hack - need to find proper workaround!!!
# Both syslinux and extlinux are 32-bit executables which require 32-bit libs. # Both syslinux and extlinux are 32-bit executables which require 32-bit libs.
mkdir -p $SRC_DIR/work/overlay/mll_utils/lib # Possible solution 1 - build 32-bit GLIBC on demand.
mkdir -p $SRC_DIR/work/overlay/mll_utils/usr/lib # Possible solution 2 - drop 32-bit MLL and provide 64-bit with multi-arch.
mkdir -p $MAIN_SRC_DIR/work/overlay/mll_utils/lib
mkdir -p $MAIN_SRC_DIR/work/overlay/mll_utils/usr/lib
cp /lib/ld-linux.so.2 \ cp /lib/ld-linux.so.2 \
$SRC_DIR/work/overlay/mll_utils/lib $MAIN_SRC_DIR/work/overlay/mll_utils/lib
cp /lib/i386-linux-gnu/libc.so.6 \ cp /lib/i386-linux-gnu/libc.so.6 \
$SRC_DIR/work/overlay/mll_utils/usr/lib $MAIN_SRC_DIR/work/overlay/mll_utils/usr/lib
# Big mama hack - end. # Big mama hack - end.
echo "Minimal Linux Live installer has been generated." echo "Minimal Linux Live installer has been generated."

View File

@ -0,0 +1,22 @@
#!/bin/sh
SRC_DIR=$(pwd)
# Find the main source directory
cd ../../..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
if [ ! -d "$MAIN_SRC_DIR/work/overlay/mll_utils" ] ; then
echo "The directory $MAIN_SRC_DIR/work/overlay/mll_utils does not exist. Cannot continue."
exit 1
fi
# Copy all generated files to the source overlay folder.
cp -r $MAIN_SRC_DIR/work/overlay/mll_utils/* \
$MAIN_SRC_DIR/work/src/minimal_overlay/rootfs
echo "All MLL utilities have been installed."
cd $SRC_DIR

View File

@ -0,0 +1,11 @@
#!/bin/sh
SRC_DIR=$(pwd)
time sh 01_prepare.sh
time sh 02_disk_erase.sh
time sh 03_installer.sh
time sh 04_install.sh
cd $SRC_DIR

View File

@ -0,0 +1,51 @@
#!/bin/sh
SRC_DIR=$(pwd)
# Find the main source directory
cd ..
MAIN_SRC_DIR=$(pwd)
cd $SRC_DIR
if [ "$1" = "" ] ; then
# Read the 'OVERLAY_BUNDLES' property from '.config'
OVERLAY_BUNDLES="$(grep -i ^OVERLAY_BUNDLES $MAIN_SRC_DIR/.config | cut -f2 -d'=')"
else
OVERLAY_BUNDLES=$1
fi
if [ "$OVERLAY_BUNDLES" = "" ] ; then
echo "There are no overlay bundles to build."
exit 1
fi
time sh overlay_clean.sh
BUNDLES_LIST="$(echo $OVERLAY_BUNDLES | tr ',' ' ')"
for BUNDLE in $BUNDLES_LIST
do
BUNDLE_DIR=$SRC_DIR/bundles/$BUNDLE
if [ ! -d $BUNDLE_DIR ] ; then
echo "Error - cannot find overlay bundle directory '$BUNDLE_DIR'."
continue
fi
BUNDLE_SCRIPT=$BUNDLE_DIR/bundle.sh
if [ ! -f $BUNDLE_SCRIPT ] ; then
echo "Error - cannot find overlay bundle script file '$BUNDLE_SCRIPT'."
continue
fi
cd $BUNDLE_DIR
echo "Building overlay bundle '$BUNDLE'..."
time sh $BUNDLE_SCRIPT
cd $SRC_DIR
done
cd $SRC_DIR

View File

@ -3,17 +3,16 @@
SRC_DIR=$(pwd) SRC_DIR=$(pwd)
echo "Cleaning up the overlay work area. This may take a while..." echo "Cleaning up the overlay work area. This may take a while..."
rm -rf work/overlay rm -rf ../work/overlay
mkdir -p work/overlay
mkdir -p work/src/minimal_overlay
# -p stops errors if the directory already exists. # -p stops errors if the directory already exists.
mkdir -p source/overlay mkdir -p ../work/overlay
mkdir -p ../work/src/minimal_overlay/rootfs
mkdir -p ../source/overlay
cd work/src/minimal_overlay cd ../work/src/minimal_overlay/rootfs
# Remove all previously prepared overlay artifacts. # Remove all previously generated overlay artifacts.
for dir in $(ls -d */ 2>/dev/null) ; do for dir in $(ls -d */ 2>/dev/null) ; do
rm -rf $dir rm -rf $dir
echo "Overlay folder '$dir' has been removed." echo "Overlay folder '$dir' has been removed."

View File

@ -0,0 +1,13 @@
This file is located in the folder 'minimal_overlay/rootfs'.
You can use this folder to put your own content (files and folders) which will
be visible in the root folder of your 'Minimal Linux Live' system, just like
this file is visible. The files/folders will override the content in the root
folder, so be careful what you put there because you may end up with broken
system. If the boot media is writeable, then all changes on the root file system
are persisted automatically, so be very careful what you do when you use the
overlay support.
Check the '.config' file in the source folder for more details on the overlay
options and how to use them.

View File

@ -1,5 +0,0 @@
#!/bin/sh
time sh overlay_dropbear_01_get.sh
time sh overlay_dropbear_02_build.sh

View File

@ -1,5 +0,0 @@
#!/bin/sh
time sh overlay_felix_01_get.sh
time sh overlay_felix_02_install.sh

View File

@ -1,35 +0,0 @@
#!/bin/sh
SRC_DIR=$(pwd)
echo "Removing old Apache Felix artifacts. This may take a while..."
rm -rf $SRC_DIR/work/overlay/felix/felix_installed
mkdir -p $SRC_DIR/work/overlay/felix/felix_installed/opt/felix
mkdir -p $SRC_DIR/work/overlay/felix/felix_installed/bin
cd $SRC_DIR/work/overlay/felix
cd $(ls -d felix-*)
cat << CEOF > bin/felix-start.sh
#!/bin/sh
cd /opt/felix
java -jar bin/felix.jar
CEOF
chmod +rx bin/felix-start.sh
cp -r * $SRC_DIR/work/overlay/felix/felix_installed/opt/felix
cd $SRC_DIR/work/overlay/felix/felix_installed
ln -s ../opt/felix/bin/felix-start.sh bin/felix-start
cp -r $SRC_DIR/work/overlay/felix/felix_installed/* \
$SRC_DIR/work/src/minimal_overlay
echo "Apache Felix has been installed."
cd $SRC_DIR

View File

@ -1,5 +0,0 @@
#!/bin/sh
time sh overlay_links_01_get.sh
time sh overlay_links_02_build.sh

View File

@ -1,7 +0,0 @@
#!/bin/sh
time sh overlay_mll_utils_01_prepare.sh
time sh overlay_mll_utils_02_disk_erase.sh
time sh overlay_mll_utils_03_installer.sh
time sh overlay_mll_utils_04_install.sh

View File

@ -1,17 +0,0 @@
#!/bin/sh
SRC_DIR=$(pwd)
if [ ! -d "$SRC_DIR/work/overlay/mll_utils" ] ; then
echo "The directory $SRC_DIR/work/overlay/mll_utils does not exist. Cannot continue."
exit 1
fi
# Copy all generated files to the source overlay folder.
cp -r $SRC_DIR/work/overlay/mll_utils/* \
$SRC_DIR/work/src/minimal_overlay
echo "All utilities have been installed."
cd $SRC_DIR