Added script which generates MLL image for Docker.
This commit is contained in:
parent
90fdceabb9
commit
fc8227684b
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@
|
|||||||
/src/work/**
|
/src/work/**
|
||||||
/src/minimal_linux_live*
|
/src/minimal_linux_live*
|
||||||
/src/*.img
|
/src/*.img
|
||||||
|
/src/*.tgz
|
||||||
|
|
||||||
/docs/mdbook
|
/docs/mdbook
|
||||||
/docs/book/**
|
/docs/book/**
|
||||||
|
110
src/generate_mll_image.sh
Executable file
110
src/generate_mll_image.sh
Executable file
@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SRC_DIR=$PWD
|
||||||
|
STATUS=xxx
|
||||||
|
TEMP_DIR=xxx
|
||||||
|
MLL_ISO=xxx
|
||||||
|
|
||||||
|
finalWords() {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
chmod -R ugo+rw $TEMP_DIR
|
||||||
|
rm -rf $TEMP_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
buildDockerImage() {
|
||||||
|
rm -f $SRC_DIR/mll_image.tgz
|
||||||
|
cd $TEMP_DIR/docker_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
|
||||||
|
}
|
||||||
|
|
||||||
|
extractRootfs() {
|
||||||
|
xz -d -k $TEMP_DIR/iso_extracted/rootfs.xz
|
||||||
|
mkdir $TEMP_DIR/rootfs_extracted
|
||||||
|
cp $TEMP_DIR/iso_extracted/rootfs $TEMP_DIR/rootfs_extracted
|
||||||
|
cd $TEMP_DIR/rootfs_extracted
|
||||||
|
cpio -F rootfs -i
|
||||||
|
rm -f rootfs
|
||||||
|
cd $SRC_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
extractISO() {
|
||||||
|
xorriso -osirrox on -indev $MLL_ISO -extract / $TEMP_DIR/iso_extracted
|
||||||
|
chmod ugo+rw $TEMP_DIR/iso_extracted
|
||||||
|
}
|
||||||
|
|
||||||
|
prepareTempDir() {
|
||||||
|
chmod -R ugo+rw mll_docker_*
|
||||||
|
rm -rf mll_docker_*
|
||||||
|
TEMP_DIR=`mktemp -d mll_docker_XXXX`
|
||||||
|
}
|
||||||
|
|
||||||
|
checkPrerequsites() {
|
||||||
|
if [ "$1" = "" ] ; then
|
||||||
|
if [ -f minimal_linux_live.iso ] ; then
|
||||||
|
echo "Using 'minimal_linux_live.iso' ISO image."
|
||||||
|
MLL_ISO=minimal_linux_live.iso
|
||||||
|
else
|
||||||
|
echo "ISO image 'minimal_linux_live.iso' does not exist. Cannot continue."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ ! -f "$1" ] ; then
|
||||||
|
echo "Cannot locate ISO image `$1`. Cannot continue."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
MLL_ISO=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
STATUS=OK
|
||||||
|
|
||||||
|
if [ "`which docker`" = "" ] ; then
|
||||||
|
STATUS=ERROR
|
||||||
|
echo "ERROR: Cannot locate 'docker'."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "`which xorriso`" = "" ] ; then
|
||||||
|
STATUS=ERROR
|
||||||
|
echo "ERROR: Cannot locate 'xorriso'."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$STATUS" = "ERROR" ] ; then
|
||||||
|
echo "You have to install 'docker' and 'xorriso'. Cannot continue."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
checkPrerequsites "$@"
|
||||||
|
prepareTempDir
|
||||||
|
extractISO
|
||||||
|
extractRootfs
|
||||||
|
prepareDocker
|
||||||
|
buildDockerImage
|
||||||
|
cleanup
|
||||||
|
finalWords
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
Loading…
x
Reference in New Issue
Block a user