Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/livecd-iso-to-bootable-tree.sh
blob: 40f18e5715021d482961eae99f73af92abd6adf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash

set -e

cleanup() {
    [ -d "$EXTMNT" ] && umount $EXTMNT && rmdir $EXTMNT
    [ -d "$SQUASHMNT" ] && umount $SQUASHMNT && rmdir $SQUASHMNT
    [ -d "$ISOMNT" ] && umount $ISOMNT && rmdir $ISOMNT
}

exitclean() {
    echo "Cleaning up to exit..."
    cleanup
    exit 1
}

trap exitclean SIGINT SIGTERM

PATH=/sbin:/usr/sbin:$PATH

ISO=$(readlink -f "$1")
ROOT=$(readlink -f "$2")

ISOMNT=$(mktemp -d /media/isotmp.XXXXXX)
mount -o loop,ro "$ISO" $ISOMNT || exitclean

EXTIMG=$ISOMNT/LiveOS/ext3fs.img
if [ -e $ISOMNT/LiveOS/squashfs.img ] ; then
    SQUASHMNT=$(mktemp -d /media/squashtmp.XXXXXX)
    mount -o loop,ro $ISOMNT/LiveOS/squashfs.img $SQUASHMNT || exitclean
    EXTIMG=$SQUASHMNT/LiveOS/ext3fs.img
fi

EXTMNT=$(mktemp -d /media/exttmp.XXXXXX)
mount -o loop,ro $EXTIMG $EXTMNT || exitclean

echo "Create root filesystem..."

mkdir -p $ROOT
chmod a+rx $ROOT/.

cp -a $EXTMNT/* $ROOT

echo "Done."
cleanup