diff options
author | Martin Dengler <martin@martindengler.com> | 2009-06-29 21:31:30 (GMT) |
---|---|---|
committer | Martin Dengler <martin@martindengler.com> | 2009-06-30 11:35:31 (GMT) |
commit | 0ae1da97a8da1f25c8d4cba1135e1f4cc9b17db8 (patch) | |
tree | 10e97b686c618c651be009ecb288865145240c25 /livecd-iso-to-bootable-tree.sh | |
parent | 628648f8d89fe8322e2867a5a56a673900683206 (diff) |
refactor build process into smaller, more sensible, more restartable scripts
Diffstat (limited to 'livecd-iso-to-bootable-tree.sh')
-rwxr-xr-x | livecd-iso-to-bootable-tree.sh | 49 |
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 |