From 0d962ca98690b5d1b5da945f9817a6d93d289252 Mon Sep 17 00:00:00 2001
From: Andreas Loibl <andreas@andreas-loibl.de>
Date: Mon, 9 May 2011 20:43:49 +0200
Subject: copy gfxoverlay to hd

---
 backend/modules/cleanup |  4 ++++
 backend/modules/init    | 18 +++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/backend/modules/cleanup b/backend/modules/cleanup
index fe604a0..adced93 100644
--- a/backend/modules/cleanup
+++ b/backend/modules/cleanup
@@ -11,5 +11,9 @@ function cleanup()
         umount "$TARGET" &>/dev/null
         umount "/live/filesystem" &>/dev/null
 	rmdir "$TARGET" "/live/filesystem" &>/dev/null
+	if [ -d /live/filesystem.main ]; then
+		umount "/live/filesystem.main" &>/dev/null
+		rmdir "/live/filesystem.main" &>/dev/null
+	fi
 }
 
diff --git a/backend/modules/init b/backend/modules/init
index cfe37e1..c93cb27 100644
--- a/backend/modules/init
+++ b/backend/modules/init
@@ -5,8 +5,24 @@ function init_installer()
 	[ -f /etc/default/distro ] && . /etc/default/distro
 	export FLL_DISTRO_MODE FLL_DISTRO_NAME FLL_LIVE_USER
 	mkdir -p /live/filesystem
+	LOOPDEV="$(losetup --all | awk -F: '/\/live\/image\/live/&&/filesystem/{print $1}')"
+	if [ -e /live/gfxoverlay.active ]; then
+		mkdir -p /live/filesystem.main
+		gfx="$(cat /live/gfxoverlay.active)"
+		bit=32
+		[ "$(uname -m)" = "x86_64" ] && bit=64
+		if [ ! -d /live/filesystem.main/usr ]; then
+			[ "$LOOPDEV" ] && mount -o ro "$LOOPDEV" /live/filesystem.main
+			for dir in /live/gfxoverlay/overlay$bit-$gfx /live/gfxoverlay/$gfx /live/gfxoverlay
+			do
+				if [ -d $dir/lib ]; then
+					mount -t aufs -o br:$dir:/live/filesystem.main none /live/filesystem
+					break
+				fi
+			done
+		fi
+	fi
 	if [ ! -d /live/filesystem/usr ]; then
-		LOOPDEV="$(losetup --all | awk -F: '/\/live\/image\/live/&&/filesystem/{print $1}')"
 		[ "$LOOPDEV" ] && mount -o ro "$LOOPDEV" /live/filesystem
 	fi
 	cfg_set hostname "${FLL_DISTRO_NAME}Box"
-- 
cgit v1.0