Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/livecd-iso-to-bootable-tree.sh
diff options
context:
space:
mode:
authorMartin Dengler <martin@martindengler.com>2009-06-29 21:31:30 (GMT)
committer Martin Dengler <martin@martindengler.com>2009-06-30 11:35:31 (GMT)
commit0ae1da97a8da1f25c8d4cba1135e1f4cc9b17db8 (patch)
tree10e97b686c618c651be009ecb288865145240c25 /livecd-iso-to-bootable-tree.sh
parent628648f8d89fe8322e2867a5a56a673900683206 (diff)
refactor build process into smaller, more sensible, more restartable scripts
Diffstat (limited to 'livecd-iso-to-bootable-tree.sh')
-rwxr-xr-xlivecd-iso-to-bootable-tree.sh49
1 files changed, 49 insertions, 0 deletions
diff --git a/livecd-iso-to-bootable-tree.sh b/livecd-iso-to-bootable-tree.sh
new file mode 100755
index 0000000..29d418e
--- /dev/null
+++ b/livecd-iso-to-bootable-tree.sh
@@ -0,0 +1,49 @@
+#!/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
+
+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
+for initrd in $ISOMNT/isolinux/initrd*.img ; do
+ cp -p $initrd $ROOT/boot
+done
+for kernel in $ISOMNT/isolinux/vmlinuz* ; do
+ cp -p $kernel $ROOT/boot
+done
+
+echo "Done."
+cleanup