From 2113a18fbe6c97008607b6ecfdaf16e1d13f25e7 Mon Sep 17 00:00:00 2001 From: Ivan Davidov Date: Sun, 26 Nov 2017 23:47:10 +0200 Subject: [PATCH] Aded the image generation to the build chain. Script improvements. Added 'rebuild' script and script to test the MLL image. --- src/13_generate_image.sh | 45 +++++++++++++++++++++++++++++++++++++++ src/generate_mll_image.sh | 27 ++++++++++++----------- src/rebuild.sh | 14 ++++++++++++ src/test_image.sh | 29 +++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 12 deletions(-) create mode 100755 src/13_generate_image.sh create mode 100755 src/rebuild.sh create mode 100755 src/test_image.sh diff --git a/src/13_generate_image.sh b/src/13_generate_image.sh new file mode 100755 index 000000000..8caf59041 --- /dev/null +++ b/src/13_generate_image.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +echo "*** GENERATE IMAGE BEGIN ***" + +SRC_DIR=$(pwd) + +# Prepare the work area. +rm -f mll_image.tgz +rm -rf $SRC_DIR/work/mll_image +mkdir -p $SRC_DIR/work/mll_image + +# Copy the rootfs. +cp -r $SRC_DIR/work/rootfs/* \ + $SRC_DIR/work/mll_image + +# Copy the overlay area. +cp -r $SRC_DIR/work/src/minimal_overlay/rootfs/* \ + $SRC_DIR/work/mll_image + +cd $SRC_DIR/work/mll_image + +# Generate the image file (ordinary 'tgz'). +tar -zcf $SRC_DIR/mll_image.tgz * + +cat << CEOF + + ################################################################ + # # + # Minimal Linux Live image 'mll_image.tgz' has been generated. # + # # + # You can import the MLL image in Docker like this: # + # # + # docker import mll_image.tgz minimal-linux-live:latest # + # # + # Then you can run MLL container in Docker like this: # + # # + # docker run -it minimal-linux-live /bin/sh # + # # + ################################################################ + +CEOF + +echo "*** GENERATE IMAGE END ***" diff --git a/src/generate_mll_image.sh b/src/generate_mll_image.sh index af2f6ac21..f6ec17f96 100755 --- a/src/generate_mll_image.sh +++ b/src/generate_mll_image.sh @@ -28,17 +28,20 @@ cleanup() { rm -rf $TEMP_DIR } -buildDockerImage() { +buildImage() { rm -f $SRC_DIR/mll_image.tgz - cd $TEMP_DIR/docker_root + cd $TEMP_DIR/image_root tar -zcf $SRC_DIR/mll_image.tgz * cd $SRC_DIR } -prepareDocker() { - mkdir $TEMP_DIR/docker_root - cp -r $TEMP_DIR/rootfs_extracted/* $TEMP_DIR/docker_root - cp -r $TEMP_DIR/iso_extracted/minimal/rootfs/* $TEMP_DIR/docker_root +prepareImage() { + mkdir $TEMP_DIR/image_root + cp -r $TEMP_DIR/rootfs_extracted/* $TEMP_DIR/image_root + + if [ -d $TEMP_DIR/iso_extracted/minimal/rootfs ] ; then + cp -r $TEMP_DIR/iso_extracted/minimal/rootfs/* $TEMP_DIR/image_root + fi } extractRootfs() { @@ -57,12 +60,12 @@ extractISO() { } prepareTempDir() { - if [ -d "`ls -d mll_docker_*`" ] ; then - chmod -R ugo+rw mll_docker_* - rm -rf mll_docker_* + if [ -d mll_image ] ; then + chmod -R ugo+rw mll_image + rm -rf mll_image fi - TEMP_DIR=`mktemp -d mll_docker_XXXX` + TEMP_DIR=$SRC_DIR/mll_image } checkPrerequsites() { @@ -104,8 +107,8 @@ main() { prepareTempDir extractISO extractRootfs - prepareDocker - buildDockerImage + prepareImage + buildImage cleanup finalWords } diff --git a/src/rebuild.sh b/src/rebuild.sh new file mode 100755 index 000000000..4e9ad3291 --- /dev/null +++ b/src/rebuild.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +# This script is useful if you have already built MLL and +# you want to perform fast repackaging of all components. +# +# Note: this will also rebuild all overlay bundles. + +./08_prepare_src.sh +./09_generate_rootfs.sh +./10_pack_rootfs.sh +./12_generate_iso.sh +./13_generate_image.sh diff --git a/src/test_image.sh b/src/test_image.sh new file mode 100755 index 000000000..e64ce6ef1 --- /dev/null +++ b/src/test_image.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e + +clear() { + if [ ! "`docker ps -a | grep minimal`" = "" ] ; then + docker stop `docker ps -a | grep minimal | awk '{print $1}'` + docker rm `docker ps -a | grep minimal | awk '{print $1}'` + fi + + if [ ! "`docker images -a | grep minimal`" = "" ] ; then + docker rmi `docker images -a | grep minimal | awk '{print $1}'` + fi +} + +run() { + docker import mll_image.tgz minimal-linux-live:latest + docker run minimal-linux-live /bin/cat /etc/motd +} + +clear +run +clear + +cat << CEOF + + Test passed - well done! + +CEOF