102 lines
2.9 KiB
Bash
Executable File
102 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
# Load common properties and functions in the current script.
|
|
. ./common.sh
|
|
|
|
echo "*** GENERATE OVERLAY BEGIN ***"
|
|
|
|
# Remove the old ISO image overlay area.
|
|
echo "Removing old overlay area. This may take a while."
|
|
rm -rf $ISOIMAGE_OVERLAY
|
|
|
|
# Create the new ISO image overlay area.
|
|
mkdir -p $ISOIMAGE_OVERLAY
|
|
cd $ISOIMAGE_OVERLAY
|
|
|
|
# Read the 'OVERLAY_TYPE' property from '.config'
|
|
OVERLAY_TYPE=`read_property OVERLAY_TYPE`
|
|
|
|
# Read the 'OVERLAY_LOCATION' property from '.config'
|
|
OVERLAY_LOCATION=`read_property OVERLAY_LOCATION`
|
|
|
|
if [ "$OVERLAY_LOCATION" = "iso" \
|
|
-a "$OVERLAY_TYPE" = "sparse" \
|
|
-a -d $OVERLAY_ROOTFS \
|
|
-a ! "`ls -A $OVERLAY_ROOTFS`" = "" \
|
|
-a "$(id -u)" = "0" ] ; then
|
|
|
|
# Use sparse file as storage place. The above check guarantees that the whole
|
|
# script is executed with root permissions or otherwise this block is skipped.
|
|
# All files and folders located in the folder 'minimal_overlay' will be merged
|
|
# with the root folder on boot.
|
|
|
|
echo "Using sparse file for overlay."
|
|
|
|
# This is the BusyBox executable that we have already generated.
|
|
BUSYBOX=$ROOTFS/bin/busybox
|
|
|
|
# Create sparse image file with 3MB size. Note that this increases the ISO
|
|
# image size.
|
|
$BUSYBOX truncate -s 3M $ISOIMAGE_OVERLAY/minimal.img
|
|
|
|
# Find available loop device.
|
|
LOOP_DEVICE=$($BUSYBOX losetup -f)
|
|
|
|
# Associate the available loop device with the sparse image file.
|
|
$BUSYBOX losetup $LOOP_DEVICE $ISOIMAGE_OVERLAY/minimal.img
|
|
|
|
# Format the sparse image file with Ext2 file system.
|
|
$BUSYBOX mkfs.ext2 $LOOP_DEVICE
|
|
|
|
# Mount the sparse file in folder 'sparse".
|
|
mkdir $ISOIMAGE_OVERLAY/sparse
|
|
$BUSYBOX mount $ISOIMAGE_OVERLAY/minimal.img sparse
|
|
|
|
# Create the overlay folders.
|
|
mkdir -p $ISOIMAGE_OVERLAY/sparse/rootfs
|
|
mkdir -p $ISOIMAGE_OVERLAY/sparse/work
|
|
|
|
# Copy the overlay content.
|
|
cp -r $OVERLAY_ROOTFS/* \
|
|
$ISOIMAGE_OVERLAY/sparse/rootfs
|
|
cp -r $SRC_DIR/minimal_overlay/rootfs/* \
|
|
$ISOIMAGE_OVERLAY/sparse/rootfs
|
|
|
|
# Unmount the sparse file and delete the temporary folder.
|
|
sync
|
|
$BUSYBOX umount $ISOIMAGE_OVERLAY/sparse
|
|
sync
|
|
sleep 1
|
|
rm -rf $ISOIMAGE_OVERLAY/sparse
|
|
|
|
# Detach the loop device since we no longer need it.
|
|
$BUSYBOX losetup -d $LOOP_DEVICE
|
|
elif [ "$OVERLAY_LOCATION" = "iso" \
|
|
-a "$OVERLAY_TYPE" = "folder" \
|
|
-a -d $OVERLAY_ROOTFS \
|
|
-a ! "`ls -A $OVERLAY_ROOTFS`" = "" ] ; then
|
|
|
|
# Use normal folder structure for overlay. All files and folders located in
|
|
# the folder 'minimal_overlay' will be merged with the root folder on boot.
|
|
|
|
echo "Using folder structure for overlay."
|
|
|
|
# Create the overlay folders.
|
|
mkdir -p $ISOIMAGE_OVERLAY/minimal/rootfs
|
|
mkdir -p $ISOIMAGE_OVERLAY/minimal/work
|
|
|
|
# Copy the overlay content.
|
|
cp -rf $OVERLAY_ROOTFS/* \
|
|
$ISOIMAGE_OVERLAY/minimal/rootfs
|
|
cp -r $SRC_DIR/minimal_overlay/rootfs/* \
|
|
$ISOIMAGE_OVERLAY/minimal/rootfs
|
|
else
|
|
echo "The ISO image will have no overlay structure."
|
|
fi
|
|
|
|
cd $SRC_DIR
|
|
|
|
echo "*** GENERATE OVERLAY END ***"
|