[Debian-live-changes] r1269 - in dists/trunk: . live-initramfs live-initramfs/bin live-initramfs/casper-md5check live-initramfs/caspermon live-initramfs/debian live-initramfs/debian/manpage live-initramfs/hooks live-initramfs/scripts live-initramfs/scripts/casper-bottom live-initramfs/scripts/casper-premount live-initramfs/ubiquity-hooks

Daniel Baumann daniel at alioth.debian.org
Sat May 5 20:40:55 UTC 2007


Author: daniel
Date: 2007-05-05 20:40:51 +0000 (Sat, 05 May 2007)
New Revision: 1269

Added:
   dists/trunk/live-initramfs/
   dists/trunk/live-initramfs/bin/
   dists/trunk/live-initramfs/bin/casper-getty
   dists/trunk/live-initramfs/bin/casper-login
   dists/trunk/live-initramfs/bin/casper-preseed
   dists/trunk/live-initramfs/bin/casper-reconfigure
   dists/trunk/live-initramfs/bin/casper-snapshot
   dists/trunk/live-initramfs/casper-md5check/
   dists/trunk/live-initramfs/casper-md5check/Makefile
   dists/trunk/live-initramfs/casper-md5check/casper-md5check.c
   dists/trunk/live-initramfs/casper-md5check/md5.c
   dists/trunk/live-initramfs/casper-md5check/md5.h
   dists/trunk/live-initramfs/casper.conf
   dists/trunk/live-initramfs/caspermon/
   dists/trunk/live-initramfs/caspermon/GNOME_PythonAppletCasper.server
   dists/trunk/live-initramfs/caspermon/caspermon-applet
   dists/trunk/live-initramfs/caspermon/caspermond
   dists/trunk/live-initramfs/debian/
   dists/trunk/live-initramfs/debian/casper.dirs
   dists/trunk/live-initramfs/debian/casper.init
   dists/trunk/live-initramfs/debian/casper.install
   dists/trunk/live-initramfs/debian/casper.manpages
   dists/trunk/live-initramfs/debian/casper.postinst
   dists/trunk/live-initramfs/debian/changelog
   dists/trunk/live-initramfs/debian/compat
   dists/trunk/live-initramfs/debian/control
   dists/trunk/live-initramfs/debian/copyright
   dists/trunk/live-initramfs/debian/manpage/
   dists/trunk/live-initramfs/debian/manpage/casper-snapshot.1
   dists/trunk/live-initramfs/debian/manpage/casper.7
   dists/trunk/live-initramfs/debian/rules
   dists/trunk/live-initramfs/debian/ubiquity-casper.install
   dists/trunk/live-initramfs/hooks/
   dists/trunk/live-initramfs/hooks/casper
   dists/trunk/live-initramfs/scripts/
   dists/trunk/live-initramfs/scripts/casper
   dists/trunk/live-initramfs/scripts/casper-bottom/
   dists/trunk/live-initramfs/scripts/casper-bottom/01integrity_check
   dists/trunk/live-initramfs/scripts/casper-bottom/02_timezone
   dists/trunk/live-initramfs/scripts/casper-bottom/05mountpoints
   dists/trunk/live-initramfs/scripts/casper-bottom/10adduser
   dists/trunk/live-initramfs/scripts/casper-bottom/12fstab
   dists/trunk/live-initramfs/scripts/casper-bottom/13swap
   dists/trunk/live-initramfs/scripts/casper-bottom/14locales
   dists/trunk/live-initramfs/scripts/casper-bottom/15autologin
   dists/trunk/live-initramfs/scripts/casper-bottom/18hostname
   dists/trunk/live-initramfs/scripts/casper-bottom/19keyboard
   dists/trunk/live-initramfs/scripts/casper-bottom/20xconfig
   dists/trunk/live-initramfs/scripts/casper-bottom/22gnome_panel_data
   dists/trunk/live-initramfs/scripts/casper-bottom/22screensaver
   dists/trunk/live-initramfs/scripts/casper-bottom/23etc_modules
   dists/trunk/live-initramfs/scripts/casper-bottom/23networking
   dists/trunk/live-initramfs/scripts/casper-bottom/24preseed
   dists/trunk/live-initramfs/scripts/casper-bottom/25configure_init
   dists/trunk/live-initramfs/scripts/casper-bottom/30accessibility
   dists/trunk/live-initramfs/scripts/casper-bottom/31disable_update_notifier
   dists/trunk/live-initramfs/scripts/casper-bottom/32disable_hibernation
   dists/trunk/live-initramfs/scripts/casper-bottom/33enable_apport_crashes
   dists/trunk/live-initramfs/scripts/casper-bottom/34disable_kwallet
   dists/trunk/live-initramfs/scripts/casper-bottom/35fix_language_selector
   dists/trunk/live-initramfs/scripts/casper-bottom/40install_driver_updates
   dists/trunk/live-initramfs/scripts/casper-bottom/41apt_cdrom
   dists/trunk/live-initramfs/scripts/casper-functions
   dists/trunk/live-initramfs/scripts/casper-helpers
   dists/trunk/live-initramfs/scripts/casper-premount/
   dists/trunk/live-initramfs/scripts/casper-premount/10driver_updates
   dists/trunk/live-initramfs/ubiquity-hooks/
   dists/trunk/live-initramfs/ubiquity-hooks/20xconfig
   dists/trunk/live-initramfs/ubiquity-hooks/22gnome_panel_data
   dists/trunk/live-initramfs/ubiquity-hooks/25modules
   dists/trunk/live-initramfs/ubiquity-hooks/30accessibility
   dists/trunk/live-initramfs/ubiquity-hooks/32gnome_power_manager
   dists/trunk/live-initramfs/ubiquity-hooks/40install_driver_updates
Log:


Added: dists/trunk/live-initramfs/bin/casper-getty
===================================================================
--- dists/trunk/live-initramfs/bin/casper-getty	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/bin/casper-getty	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+autologin=1
+for opt in "$@" ; do
+        if [ "$opt" = "-l" -o "$opt" = "-n" ] ; then
+                autologin=0
+        fi
+done
+
+if [ "$autologin" = "1" ] ; then
+         exec /sbin/getty -n -l /sbin/casper-login $*
+else
+         exec /sbin/getty $*
+fi
+


Property changes on: dists/trunk/live-initramfs/bin/casper-getty
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/bin/casper-login
===================================================================
--- dists/trunk/live-initramfs/bin/casper-login	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/bin/casper-login	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,6 @@
+#! /bin/sh
+
+USERNAME=root
+[ -f /etc/casper.conf ] && . /etc/casper.conf
+exec /bin/login -f $USERNAME
+


Property changes on: dists/trunk/live-initramfs/bin/casper-login
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/bin/casper-preseed
===================================================================
--- dists/trunk/live-initramfs/bin/casper-preseed	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/bin/casper-preseed	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,19 @@
+#! /bin/sh
+set -e
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+
+root="$1"
+question="$2"
+value="$3"
+seen="$4"
+[ "$seen" ] || seen=true
+
+if ! (echo "SET $question $value"; echo "FSET $question seen $seen") | chroot "$1" debconf-communicate -fnoninteractive casper >/dev/null; then
+	chroot "$1" debconf-communicate -fnoninteractive casper >/dev/null <<EOF
+REGISTER debian-installer/dummy $question
+SET $question $value
+FSET $question seen $seen
+EOF
+fi
+
+exit 0


Property changes on: dists/trunk/live-initramfs/bin/casper-preseed
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/bin/casper-reconfigure
===================================================================
--- dists/trunk/live-initramfs/bin/casper-reconfigure	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/bin/casper-reconfigure	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,52 @@
+#! /bin/sh
+
+set -e
+export PATH=/usr/bin:/usr/sbin:/sbin:/bin
+
+frontend=noninteractive
+
+findcommandinroot() {
+    ROOT="$1/"
+    shift
+    while [ "$#" -ge 1 ]; do
+        P="$PATH"
+        while [ "$P" ]; do
+            D=${P%%:*}
+            P=${P#*:}
+            if [ "$D" = "$P" ]; then
+                P=
+            fi
+            if [ -z "$D" ]; then
+                D=.
+            fi
+            if [ -x "$ROOT$D/$1" ]; then
+                echo "$D/$1"
+                return 0
+            fi
+        done
+        shift
+    done
+    return 1
+}
+
+runcommandinroot() {
+    C=$(findcommandinroot "$1" "$2")
+    ROOT="$1"
+    shift
+    shift
+    [ -n "$C" ] && chroot "$ROOT" "$C" "$@"
+}
+
+root="$1"
+package="$2"
+
+version=$(runcommandinroot "$root" dpkg-query -W --showformat='${Version}' "$package" 2>/dev/null) || version=""
+
+if [ -z "$version" ]; then
+    echo >&2 "$0: package '$package' is not installed"
+    exit 0
+fi
+
+runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload "$package"
+
+exit 0


Property changes on: dists/trunk/live-initramfs/bin/casper-reconfigure
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/bin/casper-snapshot
===================================================================
--- dists/trunk/live-initramfs/bin/casper-snapshot	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/bin/casper-snapshot	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,299 @@
+#! /bin/bash
+
+# casper-snapshot - utility to manage Debian Live systems snapshots
+#
+#   This program mount a device (fallback to /tmpfs under /mnt/snapshot
+#   and save the /cow (or a different dir) filesystem in it for reusing
+#   in another casper session. Look at manpage for more info.
+#
+# Copyright (C) 2006 Marco Amadori <marco.amadori at gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# On Debian systems, the complete text of the GNU General Public License
+# can be found in /usr/share/common-licenses/GPL file.
+
+PROGRAM="`basename $0`"
+VERSION=0.0.1
+
+
+# Source casper conf
+if [ -e /etc/casper.conf ]; then
+	. /etc/casper.conf
+else
+	USERNAME=$(cat /etc/passwd | grep "999" | cut -f1 -d ':')
+	HOSTNAME=$(hostname)
+	BUILD_SYSTEM="Debian"
+fi
+
+export USERNAME USERFULLNAME HOSTNAME BUILD_SYSTEM
+
+# Source helper functions
+helpers="/usr/share/initramfs-tools/scripts/casper-helpers"
+if [ -e "${helpers}" ]; then
+	. "${helpers}"
+else
+	echo "Error: I cannot found helper functions \"${helpers}\"."
+	exit 1
+fi
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+MOUNTP=""
+COW=""
+DEV=""
+DEST=""
+TYPE=""
+DESKTOP_LINK=""
+
+Header ()
+{
+	echo "${PROGRAM} - utility to do Debian Live snapshots"
+	echo
+	echo "Usage: ${PROGRAM} [-c|--cow DIRECTORY] [-d|--device DEVICE] [-o|--output FILE] [-t|--type TYPE]"
+	echo "Usage: ${PROGRAM} [-r|--resync-string STRING]"
+	echo "Usage: ${PROGRAM} [-h|--help]"
+	echo "Usage: ${PROGRAM} [-u|--usage]"
+	echo "Usage: ${PROGRAM} [-v|--version]"
+}
+
+Usage ()
+{
+	MESSAGE=${1}
+	Header
+	echo
+	echo "Try \"${PROGRAM} --help\" for more information."
+	if [ ! -z "${MESSAGE}" ]; then
+		echo -e "${MESSAGE}"
+		exit 1
+	else
+		exit 0
+	fi
+}
+
+Help ()
+{
+	Header
+	echo
+	echo "Options:"
+	echo "  -c, --cow: specifies the copy on write directory (default: /cow)."
+	echo "  -d, --device: specifies the output snapshot device (default: none)."
+	echo "  -o, --output: specifies the output image file (default: $type dependent)."
+    echo "  -r, --resync-string: internally used to resync previous made snapshots."
+	echo "  -t, --type: specifies the snapshot type between \"squashfs\", \"ext2\" or \"cpio\".gz archive (default: cpio)"
+    echo -e "\nLook at casper-snapshot(1) man page for more information."
+	exit 0
+}
+
+Version ()
+{
+	echo "${PROGRAM}, version ${VERSION}"
+	echo
+	echo "Copyright (C) 2006 Marco Amadori <marco.amadori at gmail.com>"
+	echo
+	echo "This program is free software; you can redistribute it and/or modify"
+	echo "it under the terms of the GNU General Public License as published by"
+	echo "the Free Software Foundation; either version 2 of the License, or"
+	echo "(at your option) any later version."
+	echo
+	echo "This program is distributed in the hope that it will be useful,"
+	echo "but WITHOUT ANY WARRANTY; without even the implied warranty of"
+	echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
+	echo "GNU General Public License for more details."
+	echo
+	echo "You should have received a copy of the GNU General Public License"
+	echo "along with this program; if not, write to the Free Software"
+	echo "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA"
+	echo
+	echo "On Debian systems, the complete text of the GNU General Public License"
+	echo "can be found in /usr/share/common-licenses/GPL file."
+	echo
+	echo "Homepage: <http://live.debian.net/>"
+	exit 0
+}
+
+Do_snapshot ()
+{
+	case "${TYPE}" in
+		squashfs)
+			echo "./tmp/exclude_list" > /tmp/exclude_list
+			( cd "${COW}" && find . -name '*.wh.*' >> /tmp/exclude_list )
+			mksquashfs "${COW}" "${DEST}" -ef /tmp/exclude_list || exit 1
+			rm /tmp/exclude_list
+			;;
+		cpio)
+			( cd "${COW}" && find . -path '*.wh.*' -prune -o -print0 | cpio --quiet -o0 -H newc | gzip -9c > "${DEST}" ) || exit 1
+			;;
+		ext2)
+			DU_DIM="`du -ks ${COW} | cut -f1`"
+			REAL_DIM="`expr ${DU_DIM} + ${DU_DIM} / 20`" # Just 5% more to be sure, need something more sophistcated here...
+			genext2fs --size-in-blocks=${REAL_DIM} --reserved-blocks=0 --root="${COW}" "${DEST}" || exit 1
+			;;
+		*)
+			echo "Internal error."
+			exit 1
+			;;
+	esac
+}
+
+Is_same_mount ()
+{
+	dir1="`Base_path $1`"
+	dir2="`Base_path $2`"
+	if [ "${dir1}" == "${dir2}" ]; then
+		return 0
+	else
+		return 1
+	fi
+}
+
+Parse_args ()
+{
+	# Parse command line
+	ARGS="$1"
+	ARGUMENTS="`getopt --longoptions cow:,device:,output,resync-string:,type:,help,usage,version --name=${PROGRAM} --options c:d:o:t:r:,h,u,v --shell sh -- ${ARGS}`"
+
+	if [ "$?" != "0" ]; then
+		echo "Terminating." >&2
+		exit 1
+	fi
+
+	eval set -- "${ARGUMENTS}"
+
+	while true; do
+		case "$1" in
+			-c|--cow)
+				SNAP_COW="$2"; shift 2 ;;
+			-d|--device)
+				SNAP_DEV="$2"; shift 2 ;;
+			-o|--output)
+				SNAP_OUTPUT="$2"; shift 2 ;;
+			-t|--type)
+				SNAP_TYPE="$2"; shift 2 ;;
+			-r|--resync-string)
+				SNAP_RSTRING="$2"; break ;;
+			-h|--help)
+				Help; shift ;;
+			-u|--usage)
+				Usage ; shift ;;
+			-v|--version)
+				Version; shift ;;
+			--)
+				shift; break ;;
+			*)
+				echo "Internal error."; exit 1 ;;
+		esac
+	done
+}
+
+Mount_device ()
+{
+	dev="$1"
+
+	if [ ! -d "${MOUNTP}" ]; then
+		mkdir -p "${MOUNTP}"
+	fi
+
+	if [ -z "${dev}" ]; then
+		# create a temp
+		mount -t tmpfs -o rw tmpfs "${MOUNTP}"
+		if [ ! -L /home/$USERNAME/Desktop/casper-snapshot ]; then
+			ln -s "${MOUNTP}" /home/$USERNAME/Desktop/casper-snapshot
+		fi
+	else
+		if [ -b "${dev}" ] ; then
+			try_mount "${dev}" "${MOUNTP}" rw
+		fi
+	fi
+}
+
+Defaults ()
+{
+	MOUNTP="/mnt/casper-snapshot"
+	COW="/cow"
+	DEV=""
+	DEST="${MOUNTP}/casper-sn.cpio.gz"
+	TYPE="cpio"
+	DESKTOP_LINK=/home/$USERNAME/Desktop/casper-snapshot
+
+	if [ -n "${SNAP_RSTRING}" ]; then
+		COW=$(echo "${SNAP_RSTRING}" | cut -f1 -d ':')
+		DEV=$(echo "${SNAP_RSTRING}" | cut -f2 -d ':')
+		DEST=$(echo "${SNAP_RSTRING}" | cut -f3 -d ':')
+		
+		case "${DEST}" in
+			*.cpio.gz)
+				TYPE="cpio" ;;
+			*.squashfs)
+				TYPE="squashfs" ;;
+			"")
+				TYPE="ext2" ;;
+			*.ext2)
+				TYPE="ext2" ;;
+			*)
+				Usage "Unregognized String" ;;
+		esac
+	else
+		DEF_COW="/cow"
+		# Bad options handling
+		if [ -z "${SNAP_COW}" ]; then
+			COW="${DEF_COW}"
+		else
+			COW="${SNAP_COW}"
+		fi
+	
+		case "${SNAP_TYPE}" in
+			"cpio"|"squashfs"|"ext2")
+				TYPE="${SNAP_TYPE}"
+				;;
+			"")
+				TYPE="cpio" ;;
+			*)
+				Usage "Error: unrecognized snapshot type"
+				;;
+		esac
+		#if [ -d 
+		#if Is_same_mount 
+	fi
+
+	# check vars
+	if [ ! -d "${COW}" ]; then
+		Usage "Error: ${COW} is not a directory"
+	fi
+
+	Mount_device $DEV
+
+}
+
+Clean ()
+{
+	if [ -n "$DEV" ]; then
+		umount "${MOUNTP}"
+		rmdir "${MOUNTP}"
+		rm 
+	fi
+}
+
+Main ()
+{
+	Parse_args "$@"
+	Defaults
+	Do_snapshot
+	Clean
+}
+
+Main "$@"


Property changes on: dists/trunk/live-initramfs/bin/casper-snapshot
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/casper-md5check/Makefile
===================================================================
--- dists/trunk/live-initramfs/casper-md5check/Makefile	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/casper-md5check/Makefile	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,9 @@
+
+CC=gcc
+LDFLAGS=-lm
+CFLAGS=$(getconf LFS_CFLAGS) -Wall -O2
+
+casper-md5check: casper-md5check.c md5.c
+
+clean:
+	rm -f *.o casper-md5check

Added: dists/trunk/live-initramfs/casper-md5check/casper-md5check.c
===================================================================
--- dists/trunk/live-initramfs/casper-md5check/casper-md5check.c	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/casper-md5check/casper-md5check.c	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,270 @@
+/* casper-md5check - a tool to check md5sums and talk to usplash
+   (C) Canonical Ltd 2006
+   Written by Tollef Fog Heen <tfheen at ubuntu.com>
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+   USA. */
+
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/reboot.h>
+#include <linux/reboot.h>
+#include <string.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <math.h>
+#include <termios.h>
+
+#define USPLASH_FIFO "/dev/.initramfs/usplash_fifo"
+#define MAXTRIES 5
+#include "md5.h"
+#define DEBUG
+
+int write_and_retry(int fd, char *s) {
+  int try = 0, ret = 0;
+  char *end;
+
+#ifdef DEBUG
+  fprintf(stderr, "-> %s\n", s);
+#endif
+
+  end = s + strlen(s)+1;
+
+  ret = write(fd, s, end - s);
+  while (s + ret < end && try < MAXTRIES) {
+    sleep(1);
+    s += ret;
+    ret = write(fd, s, strlen(s)+1);
+    try++;
+  }
+  return (s+ret == end ? 0 : 1);
+}
+
+void usplash_timeout(int fd, int timeout) {
+  char *s;
+
+  asprintf(&s, "TIMEOUT %d", timeout);
+
+  write_and_retry(fd, s);
+
+  free(s);
+
+}
+
+void usplash_failure(int fd, char *format, ...) {
+  char *s, *s1;
+  va_list argp;
+
+  va_start(argp, format);
+  vasprintf(&s, format, argp);
+  va_end(argp);
+
+  asprintf(&s1, "FAILURE %s", s);
+
+  write_and_retry(fd, s1);
+
+  free(s);
+  free(s1);
+}
+
+void usplash_text(int fd, char *format, ...) {
+  char *s, *s1;
+  va_list argp;
+
+  va_start(argp, format);
+  vasprintf(&s, format, argp);
+  va_end(argp);
+
+  asprintf(&s1, "TEXT %s", s);
+
+  write_and_retry(fd, s1);
+
+  free(s);
+  free(s1);
+}
+
+void usplash_urgent(int fd, char *format, ...) {
+  char *s, *s1;
+  va_list argp;
+
+  va_start(argp, format);
+  vasprintf(&s, format, argp);
+  va_end(argp);
+
+  asprintf(&s1, "TEXT-URGENT %s", s);
+
+  write_and_retry(fd, s1);
+
+  free(s);
+  free(s1);
+}
+
+
+void usplash_success(int fd, char *format, ...) {
+  char *s, *s1;
+  va_list argp;
+
+  va_start(argp, format);
+  vasprintf(&s, format, argp);
+  va_end(argp);
+
+  asprintf(&s1, "SUCCESS %s", s);
+
+  write_and_retry(fd, s1);
+  
+  free(s);
+  free(s1);
+}
+
+void usplash_progress(int fd, int progress) {
+  static int prevprogress = -1;
+  char *s;
+
+  if (progress == prevprogress)
+    return;
+  prevprogress = progress;
+
+  asprintf(&s, "PROGRESS %d", progress);
+
+  write_and_retry(fd, s);
+
+  free(s);
+}
+
+int set_nocanonical_tty(int fd) {
+  struct termios t;
+
+  if (tcgetattr(fd, &t) == -1) {
+    perror("tcgetattr");
+  }
+  t.c_lflag &= ~ICANON;
+  t.c_cc[VMIN] = 1;
+  t.c_cc[VTIME] = 0;
+  return tcsetattr(fd, TCSANOW, &t);
+}
+
+int main(int argc, char **argv) {
+  
+  int pipe_fd, check_fd;
+  int failed = 0;
+  
+  FILE *md5_file;
+  md5_state_t state;
+  md5_byte_t digest[16];
+  char hex_output[16*2 + 1];
+  char *checksum, *checkfile;
+  ssize_t tsize, csize;
+
+  tsize = 0;
+  csize = 0;
+
+  if (argc != 3) {
+    fprintf(stderr,"Wrong number of arguments\n");
+    fprintf(stderr,"%s <root directory> <md5sum file>\n", argv[0]);
+    exit(1);
+  }
+  
+  if (chdir(argv[1]) != 0) {
+    perror("chdir");
+    exit(1);
+  }
+  
+  pipe_fd = open(USPLASH_FIFO, O_WRONLY|O_NONBLOCK);
+  
+  if (pipe_fd == -1) {
+    /* We can't really do anything useful here */
+    perror("Opening pipe");
+    exit(1);
+  }
+  
+
+  usplash_progress(pipe_fd, 0);
+  usplash_urgent(pipe_fd, "Checking integrity, this may take some time");
+  md5_file = fopen(argv[2], "r");
+  if (!md5_file) {
+          perror("fopen md5_file");
+          exit(1);
+  }
+  while (fscanf(md5_file, "%as %as", &checksum, &checkfile) == 2) {
+    struct stat statbuf;
+
+    if (stat(checkfile, &statbuf) == 0) {
+      tsize += statbuf.st_size;
+    }
+
+    free(checksum);
+    free(checkfile);
+  }
+
+  rewind(md5_file);
+  while (fscanf(md5_file, "%as %as", &checksum, &checkfile) == 2) {
+    char buf[BUFSIZ];
+    ssize_t rsize;
+    int i;
+    
+    md5_init(&state);
+    
+    usplash_text(pipe_fd, "Checking %s", checkfile);
+    
+    check_fd = open(checkfile, O_RDONLY);
+    if (check_fd < 0) {
+      usplash_timeout(pipe_fd, 300);
+      usplash_failure(pipe_fd, "%s", strerror(errno));
+      sleep(10);
+    }
+    
+    rsize = read(check_fd, buf, sizeof(buf));
+
+    while (rsize > 0) {
+      csize += rsize;
+      usplash_progress(pipe_fd, floorl(100*((long double)csize)/tsize));
+
+      md5_append(&state, (const md5_byte_t *)buf, rsize);
+      rsize = read(check_fd, buf, sizeof(buf));
+    }
+    
+    close(check_fd);
+    md5_finish(&state, digest);
+    
+    for (i = 0; i < 16; i++)
+      sprintf(hex_output + i * 2, "%02x", digest[i]);
+    
+    if (strncmp(hex_output, checksum, strlen(hex_output)) == 0) {
+      usplash_success(pipe_fd, "OK");
+    } else {
+      usplash_failure(pipe_fd, "mismatch");
+      failed++;
+    }
+    free(checksum);
+    free(checkfile);
+  }
+  if (failed) {
+    usplash_urgent(pipe_fd, "Check finished: errors found in %d files!", failed);
+  } else {
+    usplash_urgent(pipe_fd, "Check finished: no errors found");
+  }
+  usplash_urgent(pipe_fd, "Press any key to reboot your system");
+  usplash_timeout(pipe_fd, 86400);
+  set_nocanonical_tty(0);
+  getchar();
+  reboot(LINUX_REBOOT_CMD_RESTART);
+  return 0;
+  
+}

Added: dists/trunk/live-initramfs/casper-md5check/md5.c
===================================================================
--- dists/trunk/live-initramfs/casper-md5check/md5.c	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/casper-md5check/md5.c	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,381 @@
+/*
+  Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  L. Peter Deutsch
+  ghost at aladdin.com
+
+ */
+/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
+/*
+  Independent implementation of MD5 (RFC 1321).
+
+  This code implements the MD5 Algorithm defined in RFC 1321, whose
+  text is available at
+	http://www.ietf.org/rfc/rfc1321.txt
+  The code is derived from the text of the RFC, including the test suite
+  (section A.5) but excluding the rest of Appendix A.  It does not include
+  any code or documentation that is identified in the RFC as being
+  copyrighted.
+
+  The original and principal author of md5.c is L. Peter Deutsch
+  <ghost at aladdin.com>.  Other authors are noted in the change history
+  that follows (in reverse chronological order):
+
+  2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
+	either statically or dynamically; added missing #include <string.h>
+	in library.
+  2002-03-11 lpd Corrected argument list for main(), and added int return
+	type, in test program and T value program.
+  2002-02-21 lpd Added missing #include <stdio.h> in test program.
+  2000-07-03 lpd Patched to eliminate warnings about "constant is
+	unsigned in ANSI C, signed in traditional"; made test program
+	self-checking.
+  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
+  1999-05-03 lpd Original version.
+ */
+
+#include "md5.h"
+#include <string.h>
+
+#undef BYTE_ORDER	/* 1 = big-endian, -1 = little-endian, 0 = unknown */
+#ifdef ARCH_IS_BIG_ENDIAN
+#  define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
+#else
+#  define BYTE_ORDER 0
+#endif
+
+#define T_MASK ((md5_word_t)~0)
+#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
+#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
+#define T3    0x242070db
+#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
+#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
+#define T6    0x4787c62a
+#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
+#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
+#define T9    0x698098d8
+#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
+#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
+#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
+#define T13    0x6b901122
+#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
+#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
+#define T16    0x49b40821
+#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
+#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
+#define T19    0x265e5a51
+#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
+#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
+#define T22    0x02441453
+#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
+#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
+#define T25    0x21e1cde6
+#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
+#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
+#define T28    0x455a14ed
+#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
+#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
+#define T31    0x676f02d9
+#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
+#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
+#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
+#define T35    0x6d9d6122
+#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
+#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
+#define T38    0x4bdecfa9
+#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
+#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
+#define T41    0x289b7ec6
+#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
+#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
+#define T44    0x04881d05
+#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
+#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
+#define T47    0x1fa27cf8
+#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
+#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
+#define T50    0x432aff97
+#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
+#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
+#define T53    0x655b59c3
+#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
+#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
+#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
+#define T57    0x6fa87e4f
+#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
+#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
+#define T60    0x4e0811a1
+#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
+#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
+#define T63    0x2ad7d2bb
+#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
+
+
+static void
+md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
+{
+    md5_word_t
+	a = pms->abcd[0], b = pms->abcd[1],
+	c = pms->abcd[2], d = pms->abcd[3];
+    md5_word_t t;
+#if BYTE_ORDER > 0
+    /* Define storage only for big-endian CPUs. */
+    md5_word_t X[16];
+#else
+    /* Define storage for little-endian or both types of CPUs. */
+    md5_word_t xbuf[16];
+    const md5_word_t *X;
+#endif
+
+    {
+#if BYTE_ORDER == 0
+	/*
+	 * Determine dynamically whether this is a big-endian or
+	 * little-endian machine, since we can use a more efficient
+	 * algorithm on the latter.
+	 */
+	static const int w = 1;
+
+	if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
+#endif
+#if BYTE_ORDER <= 0		/* little-endian */
+	{
+	    /*
+	     * On little-endian machines, we can process properly aligned
+	     * data without copying it.
+	     */
+	    if (!((data - (const md5_byte_t *)0) & 3)) {
+		/* data are properly aligned */
+		X = (const md5_word_t *)data;
+	    } else {
+		/* not aligned */
+		memcpy(xbuf, data, 64);
+		X = xbuf;
+	    }
+	}
+#endif
+#if BYTE_ORDER == 0
+	else			/* dynamic big-endian */
+#endif
+#if BYTE_ORDER >= 0		/* big-endian */
+	{
+	    /*
+	     * On big-endian machines, we must arrange the bytes in the
+	     * right order.
+	     */
+	    const md5_byte_t *xp = data;
+	    int i;
+
+#  if BYTE_ORDER == 0
+	    X = xbuf;		/* (dynamic only) */
+#  else
+#    define xbuf X		/* (static only) */
+#  endif
+	    for (i = 0; i < 16; ++i, xp += 4)
+		xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
+	}
+#endif
+    }
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
+
+    /* Round 1. */
+    /* Let [abcd k s i] denote the operation
+       a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
+#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + F(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+    /* Do the following 16 operations. */
+    SET(a, b, c, d,  0,  7,  T1);
+    SET(d, a, b, c,  1, 12,  T2);
+    SET(c, d, a, b,  2, 17,  T3);
+    SET(b, c, d, a,  3, 22,  T4);
+    SET(a, b, c, d,  4,  7,  T5);
+    SET(d, a, b, c,  5, 12,  T6);
+    SET(c, d, a, b,  6, 17,  T7);
+    SET(b, c, d, a,  7, 22,  T8);
+    SET(a, b, c, d,  8,  7,  T9);
+    SET(d, a, b, c,  9, 12, T10);
+    SET(c, d, a, b, 10, 17, T11);
+    SET(b, c, d, a, 11, 22, T12);
+    SET(a, b, c, d, 12,  7, T13);
+    SET(d, a, b, c, 13, 12, T14);
+    SET(c, d, a, b, 14, 17, T15);
+    SET(b, c, d, a, 15, 22, T16);
+#undef SET
+
+     /* Round 2. */
+     /* Let [abcd k s i] denote the operation
+          a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
+#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + G(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+     /* Do the following 16 operations. */
+    SET(a, b, c, d,  1,  5, T17);
+    SET(d, a, b, c,  6,  9, T18);
+    SET(c, d, a, b, 11, 14, T19);
+    SET(b, c, d, a,  0, 20, T20);
+    SET(a, b, c, d,  5,  5, T21);
+    SET(d, a, b, c, 10,  9, T22);
+    SET(c, d, a, b, 15, 14, T23);
+    SET(b, c, d, a,  4, 20, T24);
+    SET(a, b, c, d,  9,  5, T25);
+    SET(d, a, b, c, 14,  9, T26);
+    SET(c, d, a, b,  3, 14, T27);
+    SET(b, c, d, a,  8, 20, T28);
+    SET(a, b, c, d, 13,  5, T29);
+    SET(d, a, b, c,  2,  9, T30);
+    SET(c, d, a, b,  7, 14, T31);
+    SET(b, c, d, a, 12, 20, T32);
+#undef SET
+
+     /* Round 3. */
+     /* Let [abcd k s t] denote the operation
+          a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
+#define H(x, y, z) ((x) ^ (y) ^ (z))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + H(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+     /* Do the following 16 operations. */
+    SET(a, b, c, d,  5,  4, T33);
+    SET(d, a, b, c,  8, 11, T34);
+    SET(c, d, a, b, 11, 16, T35);
+    SET(b, c, d, a, 14, 23, T36);
+    SET(a, b, c, d,  1,  4, T37);
+    SET(d, a, b, c,  4, 11, T38);
+    SET(c, d, a, b,  7, 16, T39);
+    SET(b, c, d, a, 10, 23, T40);
+    SET(a, b, c, d, 13,  4, T41);
+    SET(d, a, b, c,  0, 11, T42);
+    SET(c, d, a, b,  3, 16, T43);
+    SET(b, c, d, a,  6, 23, T44);
+    SET(a, b, c, d,  9,  4, T45);
+    SET(d, a, b, c, 12, 11, T46);
+    SET(c, d, a, b, 15, 16, T47);
+    SET(b, c, d, a,  2, 23, T48);
+#undef SET
+
+     /* Round 4. */
+     /* Let [abcd k s t] denote the operation
+          a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
+#define I(x, y, z) ((y) ^ ((x) | ~(z)))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + I(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+     /* Do the following 16 operations. */
+    SET(a, b, c, d,  0,  6, T49);
+    SET(d, a, b, c,  7, 10, T50);
+    SET(c, d, a, b, 14, 15, T51);
+    SET(b, c, d, a,  5, 21, T52);
+    SET(a, b, c, d, 12,  6, T53);
+    SET(d, a, b, c,  3, 10, T54);
+    SET(c, d, a, b, 10, 15, T55);
+    SET(b, c, d, a,  1, 21, T56);
+    SET(a, b, c, d,  8,  6, T57);
+    SET(d, a, b, c, 15, 10, T58);
+    SET(c, d, a, b,  6, 15, T59);
+    SET(b, c, d, a, 13, 21, T60);
+    SET(a, b, c, d,  4,  6, T61);
+    SET(d, a, b, c, 11, 10, T62);
+    SET(c, d, a, b,  2, 15, T63);
+    SET(b, c, d, a,  9, 21, T64);
+#undef SET
+
+     /* Then perform the following additions. (That is increment each
+        of the four registers by the value it had before this block
+        was started.) */
+    pms->abcd[0] += a;
+    pms->abcd[1] += b;
+    pms->abcd[2] += c;
+    pms->abcd[3] += d;
+}
+
+void
+md5_init(md5_state_t *pms)
+{
+    pms->count[0] = pms->count[1] = 0;
+    pms->abcd[0] = 0x67452301;
+    pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
+    pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
+    pms->abcd[3] = 0x10325476;
+}
+
+void
+md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
+{
+    const md5_byte_t *p = data;
+    int left = nbytes;
+    int offset = (pms->count[0] >> 3) & 63;
+    md5_word_t nbits = (md5_word_t)(nbytes << 3);
+
+    if (nbytes <= 0)
+	return;
+
+    /* Update the message length. */
+    pms->count[1] += nbytes >> 29;
+    pms->count[0] += nbits;
+    if (pms->count[0] < nbits)
+	pms->count[1]++;
+
+    /* Process an initial partial block. */
+    if (offset) {
+	int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
+
+	memcpy(pms->buf + offset, p, copy);
+	if (offset + copy < 64)
+	    return;
+	p += copy;
+	left -= copy;
+	md5_process(pms, pms->buf);
+    }
+
+    /* Process full blocks. */
+    for (; left >= 64; p += 64, left -= 64)
+	md5_process(pms, p);
+
+    /* Process a final partial block. */
+    if (left)
+	memcpy(pms->buf, p, left);
+}
+
+void
+md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+{
+    static const md5_byte_t pad[64] = {
+	0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+    };
+    md5_byte_t data[8];
+    int i;
+
+    /* Save the length before padding. */
+    for (i = 0; i < 8; ++i)
+	data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
+    /* Pad to 56 bytes mod 64. */
+    md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+    /* Append the length. */
+    md5_append(pms, data, 8);
+    for (i = 0; i < 16; ++i)
+	digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
+}

Added: dists/trunk/live-initramfs/casper-md5check/md5.h
===================================================================
--- dists/trunk/live-initramfs/casper-md5check/md5.h	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/casper-md5check/md5.h	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,91 @@
+/*
+  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  L. Peter Deutsch
+  ghost at aladdin.com
+
+ */
+/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */
+/*
+  Independent implementation of MD5 (RFC 1321).
+
+  This code implements the MD5 Algorithm defined in RFC 1321, whose
+  text is available at
+	http://www.ietf.org/rfc/rfc1321.txt
+  The code is derived from the text of the RFC, including the test suite
+  (section A.5) but excluding the rest of Appendix A.  It does not include
+  any code or documentation that is identified in the RFC as being
+  copyrighted.
+
+  The original and principal author of md5.h is L. Peter Deutsch
+  <ghost at aladdin.com>.  Other authors are noted in the change history
+  that follows (in reverse chronological order):
+
+  2002-04-13 lpd Removed support for non-ANSI compilers; removed
+	references to Ghostscript; clarified derivation from RFC 1321;
+	now handles byte order either statically or dynamically.
+  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
+	added conditionalization for C++ compilation from Martin
+	Purschke <purschke at bnl.gov>.
+  1999-05-03 lpd Original version.
+ */
+
+#ifndef md5_INCLUDED
+#  define md5_INCLUDED
+
+/*
+ * This package supports both compile-time and run-time determination of CPU
+ * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
+ * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
+ * defined as non-zero, the code will be compiled to run only on big-endian
+ * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
+ * run on either big- or little-endian CPUs, but will run slightly less
+ * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
+ */
+
+typedef unsigned char md5_byte_t; /* 8-bit byte */
+typedef unsigned int md5_word_t; /* 32-bit word */
+
+/* Define the state of the MD5 Algorithm. */
+typedef struct md5_state_s {
+    md5_word_t count[2];	/* message length in bits, lsw first */
+    md5_word_t abcd[4];		/* digest buffer */
+    md5_byte_t buf[64];		/* accumulate block */
+} md5_state_t;
+
+#ifdef __cplusplus
+extern "C" 
+{
+#endif
+
+/* Initialize the algorithm. */
+void md5_init(md5_state_t *pms);
+
+/* Append a string to the message. */
+void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
+
+/* Finish the message and return the digest. */
+void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+
+#ifdef __cplusplus
+}  /* end extern "C" */
+#endif
+
+#endif /* md5_INCLUDED */

Added: dists/trunk/live-initramfs/casper.conf
===================================================================
--- dists/trunk/live-initramfs/casper.conf	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/casper.conf	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,8 @@
+# This file should go in /etc/casper.conf
+# Supported variables are:
+# USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM
+
+export USERNAME="ubuntu"
+export USERFULLNAME="Live session user"
+export HOST="ubuntu"
+export BUILD_SYSTEM="Ubuntu"

Added: dists/trunk/live-initramfs/caspermon/GNOME_PythonAppletCasper.server
===================================================================
--- dists/trunk/live-initramfs/caspermon/GNOME_PythonAppletCasper.server	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/caspermon/GNOME_PythonAppletCasper.server	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,30 @@
+<oaf_info>
+
+<oaf_server iid="OAFIID:GNOME_PythonAppletCasper_Factory"
+            type="exe"
+            location="/usr/share/casper-applet/casper-applet.py">
+
+        <oaf_attribute name="repo_ids" type="stringv">
+                <item value="IDL:Bonobo/GenericFactory:1.0"/>
+                <item value="IDL:Bonobo/Unknown:1.0"/>
+        </oaf_attribute>
+        <oaf_attribute name="name" type="string" value="PythonAppletCasper"/>
+        <oaf_attribute name="description" type="string" value="Python Applet CAsper"/>
+</oaf_server>
+
+<oaf_server iid="OAFIID:GNOME_PythonAppletCasper"
+            type="factory" 
+            location="OAFIID:GNOME_PythonAppletCasper_Factory">
+
+        <oaf_attribute name="repo_ids" type="stringv">
+                <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
+                <item value="IDL:Bonobo/Control:1.0"/>
+                <item value="IDL:Bonobo/Unknown:1.0"/>
+        </oaf_attribute>
+        <oaf_attribute name="name" type="string" value="PythonAppletCasper"/>
+        <oaf_attribute name="description" type="string" value="Python Applet Casper"/>
+        <oaf_attribute name="panel:category" type="string" value="Utility"/>
+        <oaf_attribute name="panel:icon" type="string" value="bug-buddy.png"/>
+</oaf_server>
+
+</oaf_info>

Added: dists/trunk/live-initramfs/caspermon/caspermon-applet
===================================================================
--- dists/trunk/live-initramfs/caspermon/caspermon-applet	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/caspermon/caspermon-applet	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+
+import pygtk
+pygtk.require('2.0')
+
+import gtk
+import gnome.applet
+import subprocess
+import os
+
+# A simple applet to display the utilization of the snapshot device
+# during a casper session
+#
+# Matt Zimmerman <mdz at canonical.com>
+
+# TODO:
+# - tooltip with details
+# - flash at threshold
+
+class CasperApplet:
+    def __init__(self, applet, iid):
+        self.timeout_interval = 1000
+        self.device = 'casper-snapshot'
+        self.capacity = [0,0]
+        self.datafile = '/var/lib/casper/snapshot-status'
+        
+        # initializate the gnome internals
+        gnome.init("casper", "0.1")
+
+        self.applet = applet
+
+        self.tooltips = gtk.Tooltips()
+        self.hbox = gtk.HBox()
+        applet.add(self.hbox)
+
+        # add the second button event for the popup menu and the enter mouse event to change the tooltip value
+        self.ev_box = gtk.EventBox()
+        #self.ev_box.connect("button-press-event",self.button_press)
+        self.ev_box.connect("enter-notify-event", self.update_info)
+        self.hbox.add(self.ev_box)
+
+        self.prog = gtk.ProgressBar()
+        self.ev_box.add(self.prog)
+
+        self.update_info()
+        
+        gtk.timeout_add(self.timeout_interval,self.update_info, self)
+
+        applet.connect("destroy",self.cleanup)
+        applet.show_all()
+      
+    def update_info(self, event=None):
+        self.capacity = self.read_info()
+        self.prog.set_fraction(float(self.capacity[0]) / self.capacity[1])
+        self.prog.update()
+
+    def read_info(self):
+        fields = open(self.datafile).readline().split()
+        if fields[2] != 'snapshot':
+            return None
+
+        return map(int,fields[3].split('/', 1))
+
+    def cleanup(self):
+        # what goes here?
+        pass
+
+def casper_factory(applet, iid):
+    CasperApplet(applet, iid)
+
+    return gtk.TRUE
+
+gnome.applet.bonobo_factory("OAFIID:GNOME_PythonAppletCasper_Factory", 
+                             gnome.applet.Applet.__gtype__, 
+                             "casper", "0", casper_factory)


Property changes on: dists/trunk/live-initramfs/caspermon/caspermon-applet
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/caspermon/caspermond
===================================================================
--- dists/trunk/live-initramfs/caspermon/caspermond	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/caspermon/caspermond	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+STATEFILE=/var/run/caspermond/status.casper-snapshot
+
+while true; do
+    dmsetup status /dev/mapper/casper-snapshot > $STATEFILE.new
+    mv $STATEFILE.new $STATEFILE
+    sleep 60
+done

Added: dists/trunk/live-initramfs/debian/casper.dirs
===================================================================
--- dists/trunk/live-initramfs/debian/casper.dirs	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/casper.dirs	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,4 @@
+/usr/share/initramfs-tools/hooks
+/usr/share/initramfs-tools/scripts
+/usr/lib/casper
+/etc
\ No newline at end of file

Added: dists/trunk/live-initramfs/debian/casper.init
===================================================================
--- dists/trunk/live-initramfs/debian/casper.init	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/casper.init	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,103 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          casper
+# Required-Start:    $syslog
+# Required-Stop:     $syslog
+# Should-Start:      $local_fs
+# Should-Stop:       $local_fs
+# Default-Start:     1 2 3 4 5
+# Default-Stop:      0 6
+# Short-Description: Casper init script
+# Description:       Resyncs snapshots, evantually caches files in order
+#                    to let remove the media.
+### END INIT INFO
+
+# Author: Tollef Fog Heen <tfheen at canonical.com>
+#         Marco Amadori <marco.amadori at gmail.com>
+#
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+NAME=casper
+SCRIPTNAME=/etc/init.d/${NAME}
+DO_SNAPSHOT=/sbin/${NAME}-snapshot
+
+# Exit if system was not booted by casper
+grep -qs boot=casper /proc/cmdline || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/$NAME.conf ] && . /etc/$NAME.conf
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+# Try to cache everything we're likely to need after ejecting.  This
+# is fragile and simple-minded, but our options are limited.
+cache_path() {
+    path="$1"
+
+    if [ -d "$path" ]; then
+        find "$path" -type f | xargs cat > /dev/null 2>&1
+    elif [ -f "$path" ]; then
+        if [ -x "$path" ]; then
+            if file "$path" | grep -q 'dynamically linked'; then
+                for lib in $(ldd "$path" | awk '{ print $3 }'); do
+                    cache_path "$lib"
+                done
+            fi
+        fi
+        cat "$path" >/dev/null 2>&1
+    fi
+}
+
+do_stop ()
+{
+    if [ ! -z "${ROOTSNAP}" ]; then
+        $DO_SNAPSHOT --resync-string="${ROOTSNAP}"
+    fi
+
+    if [ ! -z "${HOMESNAP}" ]; then
+        $DO_SNAPSHOT --resync-string="${HOMESNAP}"
+    fi
+
+    # check for netboot
+    if [ ! -z "${NETBOOT}" ] || grep -qs netboot /proc/cmdline || grep -qsi root=/dev/nfs /proc/cmdline  || grep -qsi root=/dev/cifs /proc/cmdline ; then
+        return 0
+    fi
+
+    for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default; do
+        cache_path "$path"
+    done
+
+    eject -p -m /cdrom >/dev/null 2>&1
+
+    # XXX - i18n
+    echo "Please remove the disc and close the tray (if any) then press ENTER: "
+    if [ -x /sbin/usplash_write ]; then
+        /sbin/usplash_write "TIMEOUT 86400"
+        /sbin/usplash_write "TEXT-URGENT Please remove the disc, close the tray (if any)"
+        /sbin/usplash_write "TEXT-URGENT and press ENTER to continue"
+    fi
+
+    read x < /dev/console
+}
+
+case "$1" in
+    start|restart|reload|force-reload|status)
+        [ "$VERBOSE" != no ] && log_end_msg 0
+        ;;
+    stop)
+        log_begin_msg "${NAME} is resyncing snapshots and caching reboot files..."
+        do_stop
+        case "$?" in
+            0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+            2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+        esac
+        ;;
+    *)
+        log_success_msg "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+        exit 3
+        ;;
+esac


Property changes on: dists/trunk/live-initramfs/debian/casper.init
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/debian/casper.install
===================================================================
--- dists/trunk/live-initramfs/debian/casper.install	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/casper.install	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,7 @@
+bin/casper-getty		sbin
+bin/casper-login		sbin
+bin/casper-preseed		usr/share/casper
+bin/casper-reconfigure		usr/share/casper
+bin/casper-snapshot		sbin
+hooks				usr/share/initramfs-tools
+scripts				usr/share/initramfs-tools

Added: dists/trunk/live-initramfs/debian/casper.manpages
===================================================================
--- dists/trunk/live-initramfs/debian/casper.manpages	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/casper.manpages	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,2 @@
+debian/manpage/casper.7
+debian/manpage/casper-snapshot.1

Added: dists/trunk/live-initramfs/debian/casper.postinst
===================================================================
--- dists/trunk/live-initramfs/debian/casper.postinst	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/casper.postinst	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+update-initramfs -u
+
+#DEBHELPER#

Added: dists/trunk/live-initramfs/debian/changelog
===================================================================
--- dists/trunk/live-initramfs/debian/changelog	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/changelog	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,1605 @@
+casper (1.87) feisty; urgency=low
+
+  [ Colin Watson ]
+  * Improve language at end of MD5 check (LP: #100088).
+
+  [ Martin Pitt ]
+  * Add casper-bottom/33enable_apport_crashes: Enable apport crash
+    notifications. They are disabled now by default in the installed system
+    for the final release.
+
+ -- Martin Pitt <martin.pitt at ubuntu.com>  Mon,  9 Apr 2007 14:31:50 +0200
+
+casper (1.86) feisty; urgency=low
+
+  [ Luke Yelavich ]
+  * scripts/casper-bottom/30accessibility &
+    ubiquity-hooks/30accessibility:
+    - Point to new settings file for gnome-orca, as package was changed
+      from python-support to pycentral. (LP: #91868)
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Thu,  5 Apr 2007 16:42:54 +0100
+
+casper (1.85) feisty; urgency=low
+
+  * Stop disabling nvidia and fglrx drivers.  LP: #94359
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon,  2 Apr 2007 13:16:46 +0200
+
+casper (1.84) feisty; urgency=low
+
+  [ Jani Monoses ]
+  * scripts/casper-bottom/13swap: Call /bin/dd not dd so it
+    correctly detects and uses existing swap partitions (LP: #62868)
+
+  [ Tollef Fog Heen ]
+  * Make sure that we are settled before trying to set up netbooting.
+    (LP: #96076)
+  * Bind-mount /dev too, when configuring X, this should make it easier
+    for X to be correctly configured on a lot of systems.
+  * Add /root/lib and /root/usr/lib to /etc/ld.so.conf in the initramfs.
+  * Add any sources on the CD to APT using apt-cdrom.
+  * Set the time zone to UTC.  LP: #13782
+  * Fix deletion of checkroot script.  LP: #66585.
+
+  [ Colin Watson ]
+  * Fix error message if do_netmount fails (LP: #95134).
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Fri, 30 Mar 2007 12:37:58 +0200
+
+casper (1.83) feisty; urgency=low
+
+  * Fix usplash version in Conflicts.
+  * Add XS-Vcs-Bzr field to debian/control.
+  * scripts/casper-bottom/25configure_init: Support for "respawn COMMAND"
+    has been dropped from upstart jobs; cope with /etc/event.d/tty* using
+    "respawn" plus "exec COMMAND" now instead (LP: #92928).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon, 19 Mar 2007 16:44:22 +0000
+
+casper (1.82) feisty; urgency=low
+
+  [ Ben Collins ]
+  * Depends on eject package, and copy it into initramfs.
+  * Add log_wait_msg function to use usplash_write INPUTENTER.
+  * Conflict with usplash older than the one that fixes INPUTENTER.
+  * Add driver-updates hooks.
+
+  [ Colin Watson ]
+  * Fix more leftover /live_media wreckage (LP: #84592).
+  * Add a ubiquity hook to install driver-updates on the target system.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon,  5 Mar 2007 11:19:48 +0000
+
+casper (1.81) feisty; urgency=low
+
+  * Merge in Debian's changes.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed,  7 Feb 2007 14:39:30 +0100
+
+casper (1.80) feisty; urgency=low
+
+  * scripts/casper-bottom/31disable_update_notifier: Allow update-notifier
+    to run for crash report handling, but disable its apt-check hook.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Thu,  1 Feb 2007 00:11:06 +0000
+
+casper (1.79) feisty; urgency=low
+
+  [ Colin Watson ]
+  * ubiquity-hooks/30accessibility: Change /root to /target in
+    kderc_addtoprefixes (thanks, Jani Monoses).
+  * Call udevsettle after udevtrigger (thanks, Matthias Urlichs; LP:
+    #77438).
+  * Send casper-reconfigure error messages to stderr rather than stdout to
+    avoid interfering with debconf.
+
+  [ Jani Monoses ]
+  * ubiquity-hooks/30accessibility, scripts/casper-bottom/30accessibility:
+    Fix v2 option to start orca in magnifier not speech mode.
+    Add v1, v2, v3, m1 and m2 Xubuntu options
+
+  [ Tollef Fog Heen ]
+  * Apply patch from Luka Renko to support kde-guidance-powermanager and
+    ksmserver instead of klaptoprc as the latter is no longer used.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 10 Jan 2007 20:37:30 +0100
+
+casper (1.78) edgy; urgency=low
+
+  * Mount the first squashfs as /rofs. Breaks showmounts and won't work
+    properly with stacked filesystems, but works around a kernel oops with
+    multiply-mounted squashfses for Edgy.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Wed, 25 Oct 2006 12:46:05 +0100
+
+casper (1.77+debian-6) unstable; urgency=medium
+
+  * Improved snapshots features (even still experimental).
+  * Added "live-media-offset=BYTES" boot param, to enable "hiding"
+    feature, thanks to Sebastien Raveau <sebastien.raveau at epita.fr>.
+  * Now it creates /etc/resolv.conf if netbooted.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Fri,  1 Dec 2006 17:43:30 +0100
+
+casper (1.77+debian-5) unstable; urgency=low
+
+  * Fixed preseeding locale and keyboard's variant and options.
+  * Reorganized scans of /proc/cmdline.
+  * Improved manpages, thanks to Oliver Osburg for syntax corrections.
+  * Added "nopersistent" boot option to disable the "persistent" boot param.
+  * Added "xdebconf" boot option, that uses xdebconfigurator on the
+    rootfs to configure X (experimental).
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Mon, 20 Nov 2006 22:12:18 +0100
+
+casper (1.77+debian-4) unstable; urgency=medium
+
+  * Removed -phigh from casper-reconfigure, not needed anymore.
+  * Fixed netboot /etc/network/interfaces generation, thanks to Hadar
+    <whadar at gmail.com>.
+  * Fixed X keyboard setup. Thanks to <ascii_77 at yahoo.fr> for the idea.
+  * Fixed keyboard setup.
+  * Allow commandline-device to show up late, thanks to Bas Wijnen
+    <wijnen at debian.org> for the code and the care (Closes: #397320).
+  * Urgency is set to medium to try reaching Etch with important
+    features/bugfixes.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Mon,  6 Nov 2006 19:00:29 +0100
+
+casper (1.77+debian-3) unstable; urgency=medium
+
+  * Fixed "todisk=" parsing.
+  * Urgency is set to medium to try reaching Etch with important
+    features/bugfixes.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Wed,  1 Nov 2006 11:15:56 +0100
+
+casper (1.77+debian-2) unstable; urgency=medium
+
+  [ Marco Amadori ]
+  * Improved snapshotting (but still experimental).
+  * Renamed "host=" boot parameter to "hostname=" and shell variable "HOST" to
+    "HOSTNAME" for consistence, with linux and with username/USERNAME, as
+    requested by many people.
+  * Fixed a "keyb=" typo.
+  * Added dependence on lsb-base (used by init-script and
+    casper-snapshot).
+  * Removed DM support (obsolete).
+  * Changed a bit locale and keyboard handling.
+  * Fixed locale generation.
+  * Urgency is set to medium to try reaching Etch with important
+    features/bugfixes.
+ 
+  [ Otavio Salvador ]
+  * Really lowered usplash conflicts since Debian doesn't has 0.4.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Mon, 30 Oct 2006 17:06:48 +0100
+
+casper (1.77+debian-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added snapshot persistence feature (copy on boot, sync on reboot) via
+    different ways: squashfs, cpio.gz, and block device filesystems.
+  * Added boot parameter "live-media=<device>" to force trying to boot from
+    a specified device.
+  * Added support for "todisk=<device>" to copy the live media to a
+    device filesystem, subsequent boots could use "live-media=<device>".
+  * Slightly polished locales and keyboards handling.
+  * Extendend manpages.
+  * Readded a missing "sleep 1", reworked how live_media is detected,
+    thanks to Bas Wijnen <wijnen at debian.org> for the reports.
+    (Closes: #394308, #394554).
+  * Reworked casper-getty system, thanks to Alex Owen (Closes: #394686).
+  * Postint now rebuild all initramfs.
+  * Casper now Recommends also squashfs-tools and genext2fs, maybe
+    needed by casper-snapshot.
+  * Lowered usplash requirements, since usplash 0.4 is not in debian
+    yet.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Sun, 22 Oct 2006 20:25:38 +0200
+
+casper (1.77) edgy; urgency=low
+
+  * Honour console-setup/modelcode preseeding. Needed for Malone #66719,
+    #66774.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Fri, 20 Oct 2006 19:59:39 +0100
+
+casper (1.76) edgy; urgency=low
+
+  [ Colin Watson ]
+  * Copy access=m2 accessibility changes into the corresponding ubiquity
+    hook.
+  * Remove spurious quoting from accessibility script.
+  * Clear console-setup/layoutcode and console-setup/variantcode if they
+    aren't supplied on the command line.
+
+  [ Michael Vogt ]
+  * scripts/casper-bottom/35fix_language_selector:
+    - run fontconfig-voodoo if available to make sure that we have
+      optimal fontconfig settings for the CJK languages (lp: #49334)
+
+  [ Henrik Nilsen Omma ]
+  * Fix a few accessibility items that were out of date, changing
+    gnopernicus -> orca and gok -> onboard (the gok entry was missing some
+    brackets as well; patch from Malone #58836, closes: Malone #65861).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon, 16 Oct 2006 20:20:15 +0100
+
+casper (1.75) edgy; urgency=low
+
+  * Turn on accessibility in "Motor Difficulties - pointing devices" which
+    makes onboard start properly.  closes: Malone: #65861.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Fri, 13 Oct 2006 14:12:10 +0200
+
+casper (1.74) edgy; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Sync up ubiquity-hooks/30accessibility with
+    scripts/casper-bottom/30accessibility fixing spelling errors and
+    enabling accessibility in KDE.
+
+  [ Colin Watson ]
+  * Fix check for presence of gconf2 (closes: Malone #58836).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Wed, 11 Oct 2006 11:18:00 +0100
+
+casper (1.73) edgy; urgency=low
+
+  * Never run install-keymap or preseed debian-installer/keymap if
+    console-setup is detected, even if console-setup wasn't explicitly
+    preseeded. Contributes to Malone #60067.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Sat,  7 Oct 2006 01:56:20 +0100
+
+casper (1.72) edgy; urgency=low
+
+  * Force suspend and hibernate both off, since reconfiguring
+    gnome-power-manager kills usplash here.  Fixes Malone: #61535
+    completely.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Fri,  6 Oct 2006 14:22:23 +0200
+
+casper (1.71+debian-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added experimental casper-snapshot script and manpage.
+  * Tagged for debtags project.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Thu, 28 Sep 2006 16:04:54 +0200
+
+casper (1.71) edgy; urgency=low
+
+  * Use TEXT-URGENT in shutdown script to make sure we display the "please
+    remove disc and press enter" text.  Malone: #61533
+  * Increase usplash timeout since "TIMEOUT 0" no longer means "spin
+    forever".
+  * Don't move-mount all the squashfs-es into / since that confuses mono
+    (and some other apps too).  Malone: #62756
+  * Disable kwallet by default.  Malone: #47743
+  * Add -n to language selector to make it not whine about
+    not-fully-installed langpacks.  Malone. #37568
+  * Override definition of log_end_msg in casper-functions.  Make sure all
+    casper-bottom scripts use this.
+  * Pulsate bar in casper-top and casper-bottom.  Malone: #61535
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed,  4 Oct 2006 09:52:06 +0200
+
+casper (1.70) edgy; urgency=low
+
+  * Check for new file= alias as well as preseed/file= (closes: Malone
+    #63145).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Wed,  4 Oct 2006 08:59:53 +0100
+
+casper (1.69) edgy; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Use grep -E in scripts/casper. Malone: #57620
+  * Fix syntax error in accessibility script
+
+  [ Colin Watson ]
+  * Run 'sh -n' over everything in build target to avoid future syntax
+    errors.
+  * Fix check for /etc/default/console-setup (closes: Malone #62775).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon,  2 Oct 2006 10:58:19 +0100
+
+casper (1.68+debian-3) unstable; urgency=low
+
+  * Really add casper manpage (Closes: #389867).
+  * Lintian cleanness reached.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Thu, 28 Sep 2006 12:36:29 +0200
+
+casper (1.68+debian-2) unstable; urgency=low
+
+  * Changed "staticip=" boot param to just "ip=".
+  * Added a manpage for casper.
+  * Lintian cleanings.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Tue, 26 Sep 2006 00:45:21 +0200
+
+casper (1.68+debian-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added static network configuration support.
+  * Fixed gnome-screensaver-lock differences between ubuntu.
+  * username, host, and userfullname are now also settable
+    via kernel parameters.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Fri,  8 Sep 2006 11:26:02 +0200
+
+casper (1.68) edgy; urgency=low
+
+  * Honour console-setup/layoutcode and console-setup/variantcode preseeding
+    (closes: Malone #61573).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Fri, 22 Sep 2006 16:09:53 +0100
+
+casper (1.67) edgy; urgency=low
+
+  * Make sure to write xorg.conf md5sum to the installed system, not the
+    live system in ubiquity-hooks/20xconfig
+  * Implement support for setting KDE's accessibility options too, thanks
+    to Jonathan Riddell for the patch.
+  * Use usplash's TEXT-URGENT for important messages when doing md5 checks
+  * Fix flashing of progress bar on 32 bit arches
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 23 Aug 2006 14:34:57 +0200
+
+casper (1.66+debian-1) unstable; urgency=low
+
+  * Added "magic" to make it work seamlessy also on ubuntu systems.
+  * Default user password now "live".
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Fri,  1 Sep 2006 17:18:07 +0200
+
+casper (1.66) edgy; urgency=low
+
+  * Fix use of db_get in ubiquity accessibility hook.
+  * Use sudo instead of su to get to the live session user from the
+    initramfs or to the newly-installed user from ubiquity. su's argument
+    handling has changed so that the previous code no longer worked, and su
+    was never all that good for arguments containing spaces anyway.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon,  4 Sep 2006 15:46:55 +0100
+
+casper (1.65+debian-1) unstable; urgency=low
+
+  * New upstream release.
+  * Re-included ubiquity sources since it is here anyway in diff.gz.
+  * Included remote getty patch from Alex Owen (enable it with "casper-getty"
+    as kernel parameter).
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Thu, 17 Aug 2006 14:06:10 +0200
+
+casper (1.65) edgy; urgency=low
+
+  * Update to call udevsettle/udevtrigger instead of udevplug
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 21 Aug 2006 19:37:58 +0200
+
+casper (1.64) edgy; urgency=low
+
+  * Fix moving of squashfs mount points so that /proc/mounts in the
+    installed system refers to them correctly (closes: Malone #55019). As a
+    bonus, this lets us mount them on subdirectories of /casper/ right from
+    the start.
+  * Treat locale= as equivalent to debian-installer/locale= (closes: Malone
+    #53444).
+  * Fix ubiquity-hooks/30accessibility not to use log_end_msg, and to chroot
+    to /target instead of /root (closes: Malone #53277).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Thu,  3 Aug 2006 14:00:22 +0100
+
+casper (1.63+debian-3) unstable; urgency=low
+
+  * Really do not try to eject cd if netbooted.
+  * Fixed unionfs ro param in case of nfs netboot (Closes: 383346).
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Wed, 16 Aug 2006 20:10:11 +0200
+
+casper (1.63+debian-2) unstable; urgency=low
+
+  * Working netboot support (Closes: #380506).
+  * Polished kernel parameters parsing a bit.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Sun, 13 Aug 2006 15:52:14 +0200
+
+casper (1.63+debian-1) unstable; urgency=low
+
+  [Marco Amadori]
+  * New upstream release.
+  * Fixed upstream changelog.
+  * Really fixed the user password issue, now really "debian".
+  * Reincluded casper-md5ckeck in debian/rules and 05mountpoints in
+    script/casper-bottom.
+  * Rewrote netboot support now will support all types of rootfs file images
+    (not only plain dirs) like cd/dvd one.
+  * Included a fix for USB by Davide Natalini <davide.natalini at studio.unibo.it>
+  * Included support for plain directory as RO rootfs.
+  * Removed xfs support (not implemented in make-live, maybe useless).
+
+  [Alex Owen]
+  * Added NFS netboot support (Closes: #380506).
+  * Fixed /etc/inittab editing (Closes: #380488).
+  * Do not try to eject cd if netbooted (Closes: #380502).
+
+  [Daniel Baumann]
+  * Minor debian/rules reordering.
+  * Changed "Section:" from "admin" to "misc".
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Sun, 30 Jul 2006 19:10:23 +0200
+
+casper (1.63) edgy; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Change "Live CD user" to "live session user" in the adduser script.
+    Malone #46882
+  * Wait for persistent devices for 30 seconds, not 1500.
+  * Make sure that readahead-list is installed before chmod -x'ing it.
+  * Only disable l-r-m and anacron if they are installed.
+  * Make sure laptop-detect is installed before trying to call it.
+  * Do not install init script from the initramfs any more.  It should
+    have rc.d links already in the squashfs.
+  * Minor build system fixes.
+  * Only copy devmapper relevant files if devmapper is installed. 
+  * Remove ubuntu-specific branding from the default casper.
+  * Install default configuration file and make it end up in the
+    initramfs.
+  * Get rid of CD references and replace with medium or other appropriate
+    terms.
+  * Add stacked file system support
+
+  [ Marco Amadori ]
+  * Added possibility to set locale on chroot, not only at runtime.
+  * Updated 14locales to latest debian policy.
+
+  [ Malcolm Gilles ]
+  * USB devices can have ID_PATH with pci-*-usb, too.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 18 Jul 2006 10:20:51 +0200
+
+casper (1.61+debian-2) unstable; urgency=low
+
+  * Set password for user to 'debian'.
+
+ -- Daniel Baumann <daniel at debian.org>  Wed, 19 Jul 2006 20:56:00 +0200
+
+casper (1.61+debian-1) unstable; urgency=low
+
+  [ Daniel Baumann ]
+  * Rebuild tarball without debian directory.
+  * Using dpatch for upstream modifications.
+  * Added patch for proper GDM autologin from Arnaud Cornet
+    <arnaud.cornet at gmail.com>.
+
+  [ Marco Amadori ]
+  * New upstream release (Resynced with 1.61, bzr 258).
+  * Usb discover patch from Malcom Gilles <live at ouabain.org>.
+ -- Marco Amadori <marco.amadori at gmail.com>  Tue, 18 Jul 2006 23:34:59 +0200
+
+casper (1.61) edgy; urgency=low
+
+  * Move PATH setting to top of casper script to avoid silliness where
+    PATH isn't correctly set.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 17 Jul 2006 12:53:59 +0200
+
+casper (1.60) edgy; urgency=low
+
+  * Change start symlinks to kill symlinks for anacron, to avoid it being
+    started by invoke-rc.d and similar.
+  * Rearrange source package.
+  * Redo how the init script works and require it to be installed in the
+    live fs.
+  * Bump version number to be higher than Debian's so we don't
+    automatically sync.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 31 May 2006 00:01:40 +0200
+
+casper (1.59+debian-1) unstable; urgency=low
+
+  [ Daniel Baumann ]
+  * Upload to unstable (Closes: #354539).
+
+  [ Marco Amadori ]
+  * Added possibility to set locale on chroot, not only at runtime.
+  * Removed "persistent" wait.
+  * Fixed persistence lock and added "homepersistence" boot parameter.
+  * Updated locales handling to latest debian policy.
+  * Cleanups
+
+ -- Daniel Baumann <daniel at debian.org>  Thu, 22 Jun 2006 06:21:00 +0200
+
+casper (1.59+debian-0) UNRELEASED; urgency=low
+
+  * Added "toram" boot parameter.
+  * Extendend fs support to ext2 and xfs file image.
+  * Changed debian-inexistant "-Q" modprobe option with "-q".
+  * Removed ubiquity code.
+  * USERNAME and HOST defaulted to "debian".
+  * Preliminary netboot (cifs) patch by  
+    "Jason D. Clinton" <me at jasonclinton.com>
+  * Lowered dependence of dmsetup code (now only Suggests).
+  * Checks for replacing "udevplug" (ubuntu-only) with "udevtrigger".
+  * Reworked xorg and anacron patches from  
+    Frederic Lehobey <Frederic.Lehobey at free.fr>.
+  * scripts/casper-bottom/10adduser: configuring only the $USERNAME for sudo
+      instead of group 'admin'.
+
+ -- Marco Amadori <marco.amadori at gmail.com>  Fri, 16 Jun 2006 11:01:48 +0200
+
+casper (1.58) dapper; urgency=low
+
+  * Really rename properly, without dirname.
+
+ -- Scott James Remnant <scott at ubuntu.com>  Tue, 30 May 2006 22:47:04 +0100
+
+casper (1.57) dapper; urgency=low
+
+  * Rename the anacron rc.d/S* symlinks to K*, instead of removing them.
+    Because otherwise pbbuttonsd decides that starting anacron on the
+    LiveCD would be a clever thing to do.
+
+ -- Scott James Remnant <scott at ubuntu.com>  Wed, 24 May 2006 23:06:04 +0100
+
+casper (1.56) dapper; urgency=low
+
+  * Hopefully work a bit better when checking DVDs on 32 bit
+    architectures.
+  * Do an explicit read from /dev/console when waiting for keypress after
+    CD/DVD has been ejected.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 22 May 2006 16:43:03 +0200
+
+casper (1.55) dapper; urgency=low
+
+  * Reconfigure gnome-power-manager when doing live installations.
+    Malone #45654
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 22 May 2006 11:16:46 +0200
+
+casper (1.54) dapper; urgency=low
+
+  [ Luke Yelavich ]
+  * Set large print fonts for the v1 accessibility profile. Closes 
+    Malone #45376. 
+
+  [ Colin Watson ]
+  * Fix preseed/file handling (closes: Malone #43683).
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Thu, 18 May 2006 19:36:24 +0200
+
+casper (1.53) dapper; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Disable fglrx and nvidida drivers by default.  Somewhat addresses
+    #43706
+
+  [ Colin Watson ]
+  * Pass all command-line preseed arguments (other than preseed/file) to
+    /root's debconf db.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Sat, 13 May 2006 10:14:36 +0200
+
+casper (1.52) dapper; urgency=low
+
+  * Export the path in casper-reconfigure so X and friends actually have
+    sbin in their path.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Thu, 11 May 2006 21:04:11 +0200
+
+casper (1.51) dapper; urgency=low
+
+  [ Luke Yelavich ]
+  * casper-bottom/30accessibility:
+    - Removed stale reference to acessx_applet.
+    - Fix some typos for gconf values that had to be set as lists.
+
+  [ Colin Watson ]
+  * Pass debian-installer/locale to /root's debconf db (closes: Malone
+    #41896).
+  * Identify ourselves as casper when communicating with debconf.
+  * Factor out preseeding code into casper-preseed; this knows that it only
+    needs to register a question if it fails to set it, which saves memory
+    by avoiding debconf having to rewrite templates.dat.
+  * Preseed kbd-chooser/method as well as debian-installer/keymap, so that
+    kbd-chooser run from ubiquity picks up the selected keyboard (closes:
+    Malone #42202).
+  * Use new dpkg-reconfigure --no-reload option (debconf 1.4.72ubuntu6) to
+    avoid needlessly rewriting templates.dat.
+  
+  [ Tollef Fog Heen ]
+  * Add ... to the end of all usplash messages.  Malone #43856
+  * Add maybe_break casper-bottom to allow breaking before running bottom
+    scripts.  Malone #43860
+  * Don't show the name of the live cd user that's added.
+  * Mount COW filesystem if show-cow is present on the kernel command line.
+    Malone #43687
+  * Disable the Kubuntu update notifier too.  Malone #43806
+  * Disable hibernation and enable sleep where appropriate.  Malone #23882
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Thu, 11 May 2006 12:11:08 +0200
+
+casper (1.50) dapper; urgency=low
+
+  [ Luke Yelavich ]
+  * Fixed some typos, and added missing settings to some accessibility
+    profiles, as they were either not working properly, or at all. Malone:
+    #39472, #39473
+  * Removed the desktop wallpaper, and changed the background colour to gray
+    for the v1 accessibility profile.
+  * Set the whiteglass mouse theme for the v1 accessibility profile.
+  * Moved the gconftool-2 -s flag to individual gct calls, to allow for future
+    use of gconftool-2 flags that are incompatible with -s.
+  
+  [ Daniele Favara ]
+  * Allow custom HOST, USERNAME, USERFULLNAME.  Malone: #42118
+  * Add example file
+    - debian/casper.dir: Add examples dir 
+    - debian/casper.conf: Explain briefly how to use new variables 
+    - debian/rules: Install casper.conf as example_conf_casper
+  
+  [ Tollef Fog Heen ]
+  * Stylistic changes to Daniele's changes.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue,  2 May 2006 14:12:31 +0200
+
+casper (1.49) dapper; urgency=low
+
+  * Also look for hardware named wlan*
+
+ -- Scott James Remnant <scott at ubuntu.com>  Wed, 26 Apr 2006 13:37:13 +0100
+
+casper (1.48) dapper; urgency=low
+
+  * Write /etc/network/interfaces entries for eth0, eth1, eth2, ath0 and
+    wlan0 if there's no hardware detected for them; as it may be plugged
+    in after boot.
+
+ -- Scott James Remnant <scott at ubuntu.com>  Wed, 26 Apr 2006 12:31:38 +0100
+
+casper (1.47) dapper; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Turn on debugging of the X config.
+  * Log to a file which gets copied to /var/log/casper.log.  Malone: #39895
+  * Only pick UTF-8 locales.  Malone: #40178
+  * Use correct /root rather than /target for seeing what version of
+    gnome-panel-data is installed.
+  * Make festival (and probably some other apps) happier by using
+    127.0.1.1 for our ubuntu hostname and 127.0.0.1 just resolves to
+    "localhost".
+  * Make casper-md5check read from tty8 since it wants to get keypresses
+    from the active console (where usplash runs).  Malone: #40490.
+  * Copy /etc/modules when installing with ubiquity.  Malone: #40311
+  * /etc/gdm/gdm-cdd.conf can be a symlink.  Cope with that.  Malone: #40767  
+
+  [ Colin Watson ]
+  * ubiquity-casper conflicts/replaces espresso-casper.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 24 Apr 2006 09:41:14 +0200
+
+casper (1.46) dapper; urgency=low
+
+  * Use debian-installer/dummy for preseeding rather than espresso/dummy,
+    since the latter was removed in espresso 0.99.38.
+  * espresso is being renamed to ubiquity. Rename espresso-casper to
+    ubiquity-casper to match.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Fri, 21 Apr 2006 12:52:48 +0100
+
+casper (1.45) dapper; urgency=low
+
+  [ Matt Zimmerman ]
+  * [share/shutdown] Disable the usplash timeout and wrap the prompt to two
+    lines
+
+  [ Tollef Fog Heen ]
+  * Use devmapper for ia64, hppa and sparc.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 19 Apr 2006 11:36:49 +0200
+
+casper (1.44) dapper; urgency=low
+
+  * Reset the timeout after casper-premount has run so we're sure that the
+    timeout is what we want it to be.  Udev seems to change it too.
+  * Remove a few set -x commands to make the boot slightly less verbose.
+  * Fix 10adduser to actually install the correct icons for espresso.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 12 Apr 2006 14:20:53 +0200
+
+casper (1.43) dapper; urgency=low
+
+  * Copy espresso-kdeui.desktop file to user's desktop 
+    Branch at http://kubuntu.org/~jriddell/bzr/casper/trunk/
+
+ -- Jonathan Riddell <jriddell at ubuntu.com>  Thu, 13 Apr 2006 15:37:49 +0100
+
+casper (1.42) dapper; urgency=low
+
+  [ Luke Yelavich ]
+  * casper-bottom/30accessibility:
+    - Removed some settings from accessibility profiles as these are now
+      in the relevant packages.
+
+  [ Tollef Fog Heen ]
+  * Make sure to call gconftool as the right user.  Malone #38408
+  * Write an entry for / in fstab.  Hopefully fixes Malone #34330
+  * Change gdm-cdd.conf if it exists, not gdm.conf. Malone #37467
+  * Really disable update-notifier, this time by removing the correct
+    file.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 11 Apr 2006 15:43:24 +0200
+
+casper (1.41) dapper; urgency=low
+
+  * Don't mkdir then install -D, just install -D (this should prevent
+    ~ubuntu/Desktop being owned by root)
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 29 Mar 2006 10:52:42 +0200
+
+casper (1.40) dapper; urgency=low
+
+  * Add snd_powermac to /etc/modules on ppc.  (Malone: #27862)
+  * Use chmod -x instead of mv to disable readahead in order to not
+    trigger unionfs bugs
+  * Reboot the system when a key is pressed at the end of the integrity
+    check.  (Malone: #29203)
+  * Use usplash_write too when doing shutdown.  (Malone: #34537)
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 28 Mar 2006 10:09:49 +0200
+
+casper (1.39) dapper; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Disable update-notifier by default, as it won't make much sense for
+    most people.
+
+  [ Colin Watson ]
+  * Clear out user-setup questions from the debconf database after creating
+    the live CD user, to avoid confusing espresso into offering "Ubuntu
+    LiveCD user" as the user's default full name.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 13 Mar 2006 11:38:39 +0100
+
+casper (1.38) dapper; urgency=low
+
+  * Disable readahead since it breaks too much with squashfs and unionfs.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Thu,  9 Mar 2006 09:43:39 +0100
+
+casper (1.37) dapper; urgency=low
+
+  * Add support for having the squashfs directly on a device, thanks to
+    Paul Sladen for idea and a patch.
+  * If a directory "Examples" exists in ~ after we've run adduser, move it
+    to the Desktop subdirectory for greater visibility.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Sat,  4 Mar 2006 11:55:50 +0100
+
+casper (1.36) dapper; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Fix typo in find_cow_device so block devices didn't work at all.
+    Malone #31639.  Thanks to Richard Nemec for the catch.
+  * Update accessibility framework, thanks to Luke Yelavich.
+
+  [ Colin Watson ]
+  * Move the /cdrom mount into the new root filesystem.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed,  1 Mar 2006 11:13:54 +0100
+
+casper (1.35) dapper; urgency=low
+
+  * Check for preseed/file= in /proc/cmdline and feed any given file to
+    debconf-set-selections.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon, 27 Feb 2006 17:32:02 +0000
+
+casper (1.34) dapper; urgency=low
+
+  [ Luke Yelavich ]
+  * Add initial accessibility support framework
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 22 Feb 2006 14:36:07 +0100
+
+casper (1.33) dapper; urgency=low
+
+  * Make sure Desktop and the espresso-$ui.desktop is owned by the Ubuntu
+    user.  Malone #31991
+  * Fix check for rc6.d/S90reboot at the bottom of 25configure_init to
+    actually look in the right place.
+  * Make me the maintainer of the package.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 20 Feb 2006 09:49:02 +0100
+
+casper (1.32) dapper; urgency=low
+
+  * Fix copying of /usr/share/applications/espresso-gtkui.desktop.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Thu, 16 Feb 2006 16:47:15 +0000
+
+casper (1.31) dapper; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Print message about rebooting the system when the md5 check is
+    finished.
+  * Just have one copy of the casper shutdown scripts and symlink those
+    into the right place.  Malone #20978
+
+  [ Colin Watson ]
+  * Copy /usr/share/applications/espresso-gtkui.desktop to the live CD
+    user's desktop.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 14 Feb 2006 14:52:16 +0100
+
+casper (1.30) dapper; urgency=low
+
+  * Set a blank password for the ubuntu user.  This hopefully resolves
+    Malone #30118
+  * Pass keyboard layout information to xserver-xorg in the "new" scheme.
+  * Set up the right console keymap.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 14 Feb 2006 14:48:14 +0100
+
+casper (1.29) dapper; urgency=low
+    
+  [ Tollef Fog Heen ]
+  * Fix typo in 22gnome_panel_data
+  * Configure all detected network interfaces.
+  * Add support for putting the persistent storage in a loopback file on
+    vfat volumes
+  * Configure all detected network interfaces.
+  * Allow putting the live filesystem image on a VFAT volume
+  * Allow putting the persistent storage in a loopback file on a VFAT
+    volume
+  * Lots of cleanups
+
+  [ Colin Watson ]
+  * Change casper-reconfigure to take the target root filesystem as its
+    first argument.
+  * Add espresso-casper package with hooks to repeat some things done by
+    casper in the installed system.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed, 25 Jan 2006 14:25:45 +0100
+
+casper (1.28) dapper; urgency=low
+
+  * Depend on user-setup
+  * First shot at IEEE1394 support.  Add sbp2 and ohci1394 as modules to
+    be copied into the initramfs.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 16 Jan 2006 22:06:35 +0100
+
+casper (1.27) dapper; urgency=low
+
+  * Try using unionfs on ppc again 
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 10 Jan 2006 20:55:19 +0100
+
+casper (1.26) dapper; urgency=low
+
+  * Add persistency support
+  * Usplash integration
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 10 Jan 2006 17:53:54 +0100
+
+casper (1.25) dapper; urgency=low
+
+  * Make /rofs available to in the target system. 
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon,  9 Jan 2006 15:25:12 +0100
+
+casper (1.24) dapper; urgency=low
+
+  * For debconf-communicate, use a here-doc rather than trying to have \n
+    working in shell variables.
+  * The usplash fifo has moved, update paths accordingly.  Also conflict
+    with the old usplash and depend on new enough initramfs-tools.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Fri,  6 Jan 2006 14:20:37 +0100
+
+casper (1.23) dapper; urgency=low
+
+  * Move the building to binary-dep, since we're an arch: any package
+    now.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Thu,  5 Jan 2006 10:37:31 +0100
+
+casper (1.22) dapper; urgency=low
+
+  * Bunch debconf-communicate commands together to speed up the boot a
+    little bit.
+  * Add integrity checker, this is compiled code, so casper is now arch:
+    any
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Wed,  4 Jan 2006 12:56:13 +0100
+
+casper (1.21) dapper; urgency=low
+
+  * If locale is unset, use en_US.UTF8, not whatever comes first in the
+    list of supported locales.
+  * Generate locale and set the locale in /etc/environment
+  * Use user-setup to create the user, rather than doing it ourselves.
+  * Various cleanups and fixes, such as making debconf-communicate silent
+  * Disable checkroot when booting
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon,  2 Jan 2006 11:00:25 +0100
+
+casper (1.20) dapper; urgency=low
+
+  * Remove a large bunch of debugging output
+  * Depend on dmsetup so the hook script can copy in that
+  * Handle both squashfs and cloop images, with run-time detection
+  * Use devmapper + cloop on powerpc, not unionfs, since unionfs is a
+    disaster there.
+  * Make sure we have both SCSI and IDE CDROM modules available in the
+    initramfs.
+  * Do some initial keyboard setup handling so X will, at least in some
+    cases, have a chance of giving the user a sane keymap.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Mon, 19 Dec 2005 14:23:13 +0100
+
+casper (1.19) dapper; urgency=low
+
+  * Switch to initramfs, so casper only survives in spirit
+  * Use unionfs instead of a writeable devmapper snapshot
+  * Remove all debconfiscation, since we're an initramfs script now
+  * Make the postinst call update-initramfs -u
+  * Mount the CD read-only explicitly
+  * Make udevinfo silent if the device is not found.
+
+ -- Tollef Fog Heen <tfheen at ubuntu.com>  Tue, 13 Dec 2005 16:22:45 +0100
+
+casper (1.18) breezy; urgency=low
+
+  * Update translations from Rosetta: Greek, Spanish, French, Hungarian,
+    Brazilian Portuguese.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon, 19 Sep 2005 20:05:02 +0100
+
+casper (1.17) breezy; urgency=low
+
+  * Set /apps/gnome-screensaver/lock if gnome-screensaver is installed
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 16 Sep 2005 15:24:35 -0700
+
+casper (1.16) breezy; urgency=low
+
+  * Install a fake script in /lib/debian-installer.d/S72menu-exit after
+    pivoting that just calls sleep, to prevent scary console messages as d-i
+    tries to exit without its root filesystem.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Wed, 14 Sep 2005 10:28:06 +0100
+
+casper (1.15) breezy; urgency=low
+
+  * Neutralize branding in startup message
+  * Use clear in addition to reset, in hopes of concealing error messages on
+    the console from d-i's death throes
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri,  9 Sep 2005 11:24:14 -0700
+
+casper (1.14) breezy; urgency=low
+
+  * Set RUNNING_UNDER_GDM=yes in the user's environment to stop xscreensaver
+    locking the screen (Ubuntu #7150).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Thu,  8 Sep 2005 13:37:00 +0100
+
+casper (1.13) breezy; urgency=low
+
+  * Use reset, rather than clear, to clean up after the colored dialogs on vt1
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed,  7 Sep 2005 16:09:45 -0700
+
+casper (1.12) breezy; urgency=low
+
+  * Kill bterm after pivoting so that we can use vt1 rather than vt2,
+    thereby avoiding a fight between gdm and the X server (closes: Ubuntu
+    #14851).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Wed,  7 Sep 2005 15:48:40 +0100
+
+casper (1.11) breezy; urgency=low
+
+  * Remove debugging code which crept into 1.10
+  * Revert changes to casper-udeb.postinst which were intended for
+    starting usplash earlier (pre-1.10)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri,  2 Sep 2005 13:43:03 -0700
+
+casper (1.10) breezy; urgency=low
+
+  * Instead of starting usplash directly, create an init script which will
+    start it later (after the new init), to avoid it being killed by
+    busybox init
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 29 Aug 2005 20:26:58 -0700
+
+casper (1.9) breezy; urgency=low
+
+  * Remember to re-run 30copy-dev from 94usplash, in order to preserve the
+    device nodes clobbered by udev
+  * Redirect stdin of /etc/init.d/udev from /dev/console, to avoid
+    incredibly obnoxious 60-second sleep because it thinks we're
+    interactive
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 29 Aug 2005 18:30:38 -0700
+
+casper (1.8) breezy; urgency=low
+
+  * Add usplash support
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 29 Aug 2005 17:30:57 -0700
+
+casper (1.7) breezy; urgency=low
+
+  * Set DEBUG_XORG_PACKAGE=yes when reconfiguring xserver-xorg.  The
+    output is only written to post.log and isn't visible to the user, and
+    can be invaluable for debugging
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 22 Aug 2005 10:25:38 -0700
+
+casper (1.6) breezy; urgency=low
+
+  * Use debconf-copydb again (thanks, Tollef)
+  * Rename pre.d/20xconfig to pre.d/20prexconfig so that it is distinct from
+    post.d/20xconfig for purposes of the progress bar (no text for it; it's
+    very fast)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 17 Aug 2005 14:55:24 -0700
+
+casper (1.5) breezy; urgency=low
+
+  * Call MAKEDEV console in post.d/20xconfig as a workaround for bug
+    #13523
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 16 Aug 2005 15:24:06 -0700
+
+casper (1.4) breezy; urgency=low
+
+  * Revert to the old debconf hack; the debconf-copydb approach needs more
+    work
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 15 Aug 2005 22:48:11 -0700
+
+casper (1.3) breezy; urgency=low
+
+  * Revert unintentional release of experimental unionfs code in 1.2
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 13 Aug 2005 11:19:50 -0700
+
+casper (1.2) breezy; urgency=low
+
+  * Fix debconf-copydb regex in 20xconfig
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 13 Aug 2005 11:07:46 -0700
+
+casper (1.1) breezy; urgency=low
+
+  * Cope with xserver-xorg's rename of force_keyboard_detection to
+    autodetect_keyboard
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon,  4 Jul 2005 02:52:07 -0700
+
+casper (1.0) breezy; urgency=low
+
+  * Version number bump (we've been through a stable Ubuntu release, after
+    all)
+  * Rename pre.d/10snapshot to post.d/10filesystem, as it is about to
+    become more generic
+  * Seed xserver-xorg/force_keyboard_detection to true in 20xconfig, so as
+    to cause the keyboard layout to (continue to) be autodetected based on
+    d-i settings
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu, 16 Jun 2005 11:21:54 -0700
+
+casper (0.65) breezy; urgency=low
+
+  * As a performance optimization, only reconfigure gnome-panel-data if
+    booting on a laptop
+  * Disable the "lock screen" menu item (Ubuntu bug#7150)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed,  8 Jun 2005 16:02:14 -0700
+
+casper (0.64) breezy; urgency=low
+
+  * Merge colin.watson at canonical.com--2005/casper--debconf-copydb--0
+    - Use debconf-copydb rather than our temporary hack
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 31 May 2005 12:08:51 -0700
+
+casper (0.63) breezy; urgency=low
+
+  * Merge colin.watson at canonical.com--2005/casper--cdebconf-info--0
+    - Update for cdebconf 0.75: use db_info rather than db_x_setbacktitle.
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 18 Apr 2005 20:59:58 -0700
+
+casper (0.62) hoary; urgency=low
+
+  * Updated translations from
+    colin.watson at canonical.com--2005/casper--translations--0 (nb)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue,  5 Apr 2005 09:01:02 -0700
+
+casper (0.61) hoary; urgency=low
+
+  * Updated translations from
+    colin.watson at canonical.com--2005/casper--translations--0 (el, es, ro)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue,  5 Apr 2005 08:06:51 -0700
+
+casper (0.60) hoary; urgency=low
+
+  * Updated translations from
+    colin.watson at canonical.com--2005/casper--translations--0 (hu, id, pl)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 28 Mar 2005 11:26:21 -0800
+
+casper (0.59) hoary; urgency=low
+
+  * Updated translations from
+    colin.watson at canonical.com--2005/casper--translations--0 (de, pt_BR)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 25 Mar 2005 16:51:17 -0800
+
+casper (0.58) hoary; urgency=low
+
+  * Remove postfix shutdown links, as well as startup, to avoid an ugly error
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu, 24 Mar 2005 18:24:03 -0800
+
+casper (0.57) hoary; urgency=low
+
+  * Merge colin.watson at canonical.com--2005/casper--translations--0 up to
+    patch-2
+  * Preseed netcfg/wireless_essid_again for noninteractive network setup, +new
+    in netcfg 1.08ubuntu3 [colin.watson at canonical.com--2005/casper--netcfg--0]
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 23 Mar 2005 08:33:46 -0800
+
+casper (0.56) hoary; urgency=low
+
+  * Suppress error output from eject
+  * Remind the user to close the CD tray if they have one (Ubuntu #6668)
+  * Add arch-build target to debian/rules
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 22 Mar 2005 10:21:41 -0800
+
+casper (0.55) hoary; urgency=low
+
+  * Remove the hack introduced in 0.54, xorg 6.8.2-5 should be fixed
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 16 Mar 2005 18:11:05 -0800
+
+casper (0.54) hoary; urgency=low
+
+  * Temporarily set RECONFIGURE=true when reconfiguring xserver-xorg, to work
+    around a bug introduced in 6.8.2-3
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 16 Mar 2005 15:08:45 -0800
+
+casper (0.53) hoary; urgency=low
+
+  * Provide target-base-system (i.e. base system installed in /target, also
+    provided by base-installer).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Tue, 15 Mar 2005 13:01:53 +0000
+
+casper (0.52) hoary; urgency=low
+
+  * Arrange for $LANG to be set after pivot_root, so that (e.g.)
+    xserver-xorg can use it to infer the keymap (Ubuntu #7138)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 12 Mar 2005 02:10:59 -0800
+
+casper (0.51) hoary; urgency=low
+
+  * Disable kpersonalizer startup on first login
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat,  5 Mar 2005 13:47:13 -0800
+
+casper (0.50) hoary; urgency=low
+
+  * Add support for configuring kdm autologin
+  * Rename 15gdm-autologin to 15autologin, and the corresponding debconf template
+  * Remove obsolete XORG_FORCE_PROBE from 20xconfig
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu,  3 Mar 2005 10:37:31 -0800
+
+casper (0.49) hoary; urgency=low
+
+  * Fix 20xconfig harder
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed,  2 Mar 2005 21:20:03 -0800
+
+casper (0.48) hoary; urgency=low
+
+  * Source confmodule in 20xconfig
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed,  2 Mar 2005 21:02:35 -0800
+
+casper (0.47) hoary; urgency=low
+
+  * Copy over the value of debian-installer/keymap into the target system,
+    to allow the new logic in xserver-xorg.config to work
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed,  2 Mar 2005 20:45:38 -0800
+
+casper (0.46) hoary; urgency=low
+
+  * Lock the live user's password entirely.  Since the user is now
+    automagically logged in, continuously, both on the console and in X,
+    their password is irrelevant.
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon, 28 Feb 2005 08:31:13 -0800
+
+casper (0.45) hoary; urgency=low
+
+  * Enable TimedLogin in gdm, so that if the user logs out, they are
+    automatically logged back in after a few seconds (Ubuntu #6667)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sun, 27 Feb 2005 16:06:16 -0800
+
+casper (0.44) hoary; urgency=low
+
+  * Configure init to spawn shells on virtual consoles, rather than login
+    prompts (Ubuntu #6666)
+  * Skip X configuration if a serial console is in use
+  * Set the live user's password to be blank, rather than "ubuntu".  This
+    is, paradoxically, more secure if the user decides to install
+    openssh-server, since empty passwords are disallowed by default
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sun, 27 Feb 2005 15:40:15 -0800
+
+casper (0.43) hoary; urgency=low
+
+  * Override localechooser progress bar text to be more appropriate for the
+    live CD (closes: Ubuntu #6664).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Thu, 24 Feb 2005 19:12:00 +0000
+
+casper (0.42) hoary; urgency=low
+
+  * Preseed netcfg/no_interfaces, to avoid prompt when no network interfaces
+    can be configured (closes: Ubuntu #6107).
+  * Remove redundant DH_COMPAT setting in debian/rules, since there's
+    already a (different) debian/compat.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Tue, 22 Feb 2005 12:43:43 +0000
+
+casper (0.41) hoary; urgency=low
+
+  * Cope with change in default /etc/sudoers (admin group).
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Tue, 22 Feb 2005 09:14:30 +0000
+
+casper (0.40) hoary; urgency=low
+
+  * Copy /dev/tts to the live system as well as /dev/vc, for serial console.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Mon, 21 Feb 2005 19:03:54 +0000
+
+casper (0.39) hoary; urgency=low
+
+  * Fix reboot operation (cache the reboot binary)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu, 10 Feb 2005 20:51:08 -0800
+
+casper (0.38) hoary; urgency=low
+
+  * Eject the CD during shutdown/reboot
+    - Awful hack to copy /dev/cdroms to the live system, because the CD is
+      mounted using devfs names
+    - Add /usr/share/casper/shutdown script to casper-udeb
+    - Copy /usr/share/casper/shutdown to /etc/rc[06].d in 25configure-init
+  * Remove caspermon binary package, inadvertently enabled (not even
+    remotely ready)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu, 10 Feb 2005 13:43:56 -0800
+
+casper (0.37) hoary; urgency=low
+
+  * Fix casper-udeb/runlevel template
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue,  8 Feb 2005 19:37:43 -0800
+
+casper (0.36) hoary; urgency=low
+
+  * Rename post.d/25disable-init-scripts to 25configure-init
+  * Add casper-udeb/runlevel, to allow the default runlevel
+    to be set
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue,  8 Feb 2005 19:14:16 -0800
+
+casper (0.35) hoary; urgency=low
+
+  * Preseed netcfg/wireless_essid
+  * Remove obsolete confmodule load from pre.d/12fstab
+  * Don't mount a tmpfs on /var/run; it doesn't save a huge amount of
+    snapshot space, and packages expect their directories there to be
+    persistent
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Mon,  7 Feb 2005 15:46:52 -0800
+
+casper (0.34) hoary; urgency=low
+
+  * Use casper-reconfigure in 10adduser as well
+  * Add post.d/93save-logs to save copies of the bootstrap logs to
+    /var/log/casper
+  * Stop reconfiguring fontconfig; it insists on rebuilding the entire
+    font cache, and the only benefit was to unable subpixel hints
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed,  2 Feb 2005 10:42:19 -0800
+
+casper (0.33) hoary; urgency=low
+
+  * Re-upload to fix borked source package
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sun, 30 Jan 2005 12:21:07 -0800
+
+casper (0.32) hoary; urgency=low
+
+  * Factor out debconf hackery into casper-reconfigure
+  * Mount sysfs earlier, so we don't need to mess with it in 20xconfig
+  * Break 22simple-reconfig into 22fontconfig and 22gnome-panel-data, and
+    create progress bar text for them
+  * Preseed netcfg/dhcp_failed, to avoid a prompt when DHCP fails
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 29 Jan 2005 14:03:36 -0800
+
+casper (0.31) hoary; urgency=low
+
+  * Clear tty2 and print a nice message, before signalling init
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 29 Jan 2005 13:15:44 -0800
+
+casper (0.30) hoary; urgency=low
+
+  * Reconfigure fontconfig, to enable subpixel rendering based on the
+    hardware in use
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu, 27 Jan 2005 14:21:49 -0800
+
+casper (0.29) hoary; urgency=low
+
+  * Fix the problem described in 0.28 by preseeding a default for
+    netcfg/get_hostname
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 25 Jan 2005 23:04:03 -0800
+
+casper (0.28) hoary; urgency=low
+
+  * Suppress network configuration questions
+  
+    - The goal is to make a reasonable effort to configure one interface
+    automatically, but if that is not possible, fall back to no
+    configuration.  We aren't quite there yet.
+  
+    - If we fail to resolve our IP into a hostname using DNS, netcfg seems
+    to fall back to an empty value, rather than the default in the
+    template.
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 25 Jan 2005 22:55:35 -0800
+
+casper (0.27) hoary; urgency=low
+
+  * Add post.d/22simple-reconfig
+    - Reconfigure gnome-panel-data if it is installed, to set up the GNOME
+      session based on whether the system is a laptop
+    - Corresponding progress template
+    - mount /proc earlier (needed for, e.g. laptop-detect)
+  * Warn about screen blanking in X configuration progress message
+  * Simplify post.d/20xconfig and pre.d/13swap a bit
+  * Update TODO
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 22 Jan 2005 15:56:49 -0800
+
+casper (0.26) hoary; urgency=low
+
+  * Set NOPASSWD in /etc/sudoers for the initial user
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 21 Jan 2005 16:53:49 -0800
+
+casper (0.25) hoary; urgency=low
+
+  * mount /proc before signalling init, as it now uses /proc to determine
+    what is and is not a kernel thread
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 21 Jan 2005 16:04:52 -0800
+
+casper (0.24) hoary; urgency=low
+
+  * Add a backtitle properly
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 21 Jan 2005 09:07:19 -0800
+
+casper (0.23) hoary; urgency=low
+
+  * Add a backtitle
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 21 Jan 2005 09:02:01 -0800
+
+casper (0.22) hoary; urgency=low
+
+  * Search for swap on SCSI disks as well as IDE
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 19 Jan 2005 14:27:09 -0800
+
+casper (0.21) unstable; urgency=low
+
+  * Cosmetic changes to debconf templates
+  * Fix 10adduser to register debconf questions before setting their
+    values and flags
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 19 Jan 2005 14:14:20 -0800
+
+casper (0.20) hoary; urgency=low
+
+  * Remove legacy symlinks from casper/pre.d; they are now contained in
+    the relevant udebs
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 19 Jan 2005 13:22:33 -0800
+
+casper (0.19) hoary; urgency=low
+
+  * Update TODO
+  * casper-udeb Depends: md-modules
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Wed, 19 Jan 2005 11:23:51 -0800
+
+casper (0.18) hoary; urgency=low
+
+  * Enable new adduser code, using db_fset ... seen to suppress the questions
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 18 Jan 2005 15:06:48 -0800
+
+casper (0.17) hoary; urgency=low
+
+  * Convert snapshot setup to use debconf instead of hardcoded parameters
+  * Remove obselete-before-being-used username template
+  * Convert post.d/10adduser to use debconf passthrough to the passwd package,
+    and thus share its user-adding code rather than duplicating it.
+    - But don't enable it yet, since we need to find a way to prevent its
+    questions from being asked
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 18 Jan 2005 13:04:48 -0800
+
+casper (0.16) hoary; urgency=low
+
+  * casper-udeb Depends: casper-check, harddrive-detection
+  * Automatically find and enable swap devices
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Tue, 18 Jan 2005 11:23:48 -0800
+
+casper (0.15) hoary; urgency=low
+
+  * Set anna/standard_modules to false at startup to suppress unnecessary
+    udeb retrieval.
+
+ -- Colin Watson <cjwatson at ubuntu.com>  Tue, 18 Jan 2005 13:41:00 +0000
+
+casper (0.14) hoary; urgency=low
+
+  * Enable X autoconfiguration(!)
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Sat, 15 Jan 2005 02:19:58 -0800
+
+casper (0.13) hoary; urgency=low
+
+  * Rename templates so that they are named after the {pre,post}.d hook
+    which uses them
+  * Remove some unused templates
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Fri, 14 Jan 2005 10:11:02 -0800
+
+casper (0.12) hoary; urgency=low
+
+  * Add debconf templates for various things that we currently hardcode.
+    Not actually used yet due to need for testing, but having the
+    templates present greatly simplifies testing the remaining integration
+    work
+
+ -- Matt Zimmerman <mdz at ubuntu.com>  Thu, 13 Jan 2005 20:32:39 -0800
+
+casper (0.11) hoary; urgency=low
+
+  * Update post.d/20xconfig to use debconf passthrough to cdebconf
+    (requires debconf 1.4.42 and cdebconf 0.75), but leave it disabled for
+    now
+  * Create /etc/fstab in the target (this also seems to solve the problem
+    with noatime disappearing, and so should reduce snapshot utilization)
+
+ -- Matt Zimmerman <mdz at debian.org>  Thu, 13 Jan 2005 18:25:36 -0800
+
+casper (0.10) hoary; urgency=low
+
+  * Remove rc?.d/K??hwclock.sh links, to avoid changing the system clock
+    during reboot or shutdown
+
+ -- Matt Zimmerman <mdz at debian.org>  Thu, 13 Jan 2005 18:13:31 -0800
+
+casper (0.9) hoary; urgency=low
+
+  * Fix gdm autologin configuration (broken in 0.8)
+
+ -- Matt Zimmerman <mdz at debian.org>  Wed, 12 Jan 2005 10:52:05 -0800
+
+casper (0.8) hoary; urgency=low
+
+  * Add debian-installer/casper-udeb/title template, to specify more
+    readable menu item text
+  * Create /usr/lib/casper/{pre,post}.d and move all of our internal logic
+    there
+  * Create temporary symlinks in pre.d for the prebaseconfig.d items we
+    want
+  * Convert errors into proper error dialogs
+  * Make some pre.d scripts idempotent, for ease of testing
+
+ -- Matt Zimmerman <mdz at debian.org>  Tue, 11 Jan 2005 16:59:35 -0800
+
+casper (0.7) hoary; urgency=low
+
+  * Disable X configuration temporarily; need to resolve debconf issues
+
+ -- Matt Zimmerman <mdz at canonical.com>  Tue, 11 Jan 2005 13:14:43 -0800
+
+casper (0.6) hoary; urgency=low
+
+  * Allow "modprobe ext2" to fail; apparently it's sometimes compiled in
+
+ -- Matt Zimmerman <mdz at debian.org>  Tue, 11 Jan 2005 12:12:28 -0800
+
+casper (0.5) hoary; urgency=low
+
+  * Attempt to configure X
+    - This doesn't work very well yet (PCI BusID doesn't seem to get
+    updated, for example), so we still don't start gdm by default)
+  * Conditionalize some of the configuration code, so we automatically do
+    the right thing if gdm or X isn't installed
+  * Add German translation from Andreas Mueller
+  * modprobe ext2, to let powerpc work (this should probably happen
+    elsewhere, but for now...)
+
+ -- Matt Zimmerman <mdz at debian.org>  Sun,  9 Jan 2005 17:49:56 -0800
+
+casper (0.4) hoary; urgency=low
+
+  * Mount tmpfs on /tmp and /var/run, should save many writes to the snapshot
+
+ -- Matt Zimmerman <mdz at debian.org>  Fri,  7 Jan 2005 18:35:26 -0800
+
+casper (0.3) hoary; urgency=low
+
+  * Disable anacron and postfix startup
+  * Don't cripple /bin/apt-install in d-i (this was a workaround to
+    prevent d-i from installing packages which should have been present in
+    the filesystem image anyway, but weren't)
+
+ -- Matt Zimmerman <mdz at debian.org>  Fri,  7 Jan 2005 18:10:55 -0800
+
+casper (0.2) hoary; urgency=low
+
+  * Use mount --move to move the cdrom mount point, so that we can unmount
+    /initrd and free up the memory used by d-i
+  * Use /dev/ram1 rather than /dev/ram0 for the COW stuff, since /dev/ram0
+    is used for initrds and we want to avoid confusion
+  * Organize casper-udeb.postinst into shell functions
+  * Add a progress bar
+  * Add a debian/compat file (version 4)
+
+ -- Matt Zimmerman <mdz at debian.org>  Fri,  7 Jan 2005 08:01:21 -0800
+
+casper (0.1) hoary; urgency=low
+
+  * Initial Release. 
+  
+ -- Matt Zimmerman <mdz at canonical.com>  Wed,  5 Jan 2005 14:30:28 -0800
+

Added: dists/trunk/live-initramfs/debian/compat
===================================================================
--- dists/trunk/live-initramfs/debian/compat	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/compat	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1 @@
+4

Added: dists/trunk/live-initramfs/debian/control
===================================================================
--- dists/trunk/live-initramfs/debian/control	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/control	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,28 @@
+Source: casper
+Section: misc
+Priority: optional
+Maintainer: Tollef Fog Heen <tfheen at ubuntu.com>
+Build-Depends: debhelper (>> 4.2.0), lsb-release
+Standards-Version: 3.6.1
+XS-Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/casper/trunk
+
+Package: casper
+Architecture: any
+Section: misc
+Priority: extra
+Depends: initramfs-tools (>= 0.40ubuntu11), dmsetup, user-setup, sudo, eject
+Conflicts: usplash (<< 0.4-43)
+Tag: admin::boot, admin::filesystem, implemented-in::shell, protocol::smb, role::plugin, scope::utility, special::completely-tagged, works-with-format::iso9660
+Description: Run a "live" preinstalled system from read-only media
+
+Package: ubiquity-casper
+Architecture: all
+Depends: laptop-detect, sudo
+Conflicts: espresso-casper
+Replaces: espresso-casper
+Enhances: ubiquity
+Tag: admin::boot, admin::filesystem, implemented-in::shell, protocol::smb, role::plugin, scope::utility, special::completely-tagged, works-with-format::iso9660
+Description: Configuration hooks for live installer
+ This package provides hook scripts for the Ubiquity live installer that
+ repeat some pieces of configuration done by the live system boot process in
+ the system installed by Ubiquity.

Added: dists/trunk/live-initramfs/debian/copyright
===================================================================
--- dists/trunk/live-initramfs/debian/copyright	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/copyright	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,50 @@
+Author: Tollef Fog Heen <tfheen at canonical.com>
+        Matt Zimmerman <mdz at canonical.com>
+
+Copyright:
+
+License (casper-md5check/md5.c, casper-md5check/md5,h}):
+
+	Copyright (C) 1999-2002 Aladdin Enterprises
+	All rights reserved.
+
+	This software is provided 'as-is', without any express or implied
+	warranty.  In no event will the authors be held liable for any damages
+	arising from the use of this software.
+
+	Permission is granted to anyone to use this software for any purpose,
+	including commercial applications, and to alter it and redistribute it
+	freely, subject to the following restrictions:
+
+	1. The origin of this software must not be misrepresented; you must not
+	   claim that you wrote the original software. If you use this software
+	   in a product, an acknowledgment in the product documentation would be
+	   appreciated but is not required.
+
+	2. Altered source versions must be plainly marked as such, and must not
+	   be misrepresented as being the original software.
+
+	3. This notice may not be removed or altered from any source
+	   distribution.
+
+License (everything else):
+
+	Copyright (C) 2006 Marco Amadori <marco.amadori at gmail.com>
+	Copyright (C) 2005-2006 Canonical Ltd. <http://www.cannonical.com/>
+
+	This program is free software; you can redistribute it and/or modify
+	it under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 2 of the License, or
+	(at your option) any later version.
+
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian and Ubuntu systems, the complete text of the GNU General Public License
+can be found in /usr/share/common-licenses/GPL file.

Added: dists/trunk/live-initramfs/debian/manpage/casper-snapshot.1
===================================================================
--- dists/trunk/live-initramfs/debian/manpage/casper-snapshot.1	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/manpage/casper-snapshot.1	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,70 @@
+.TH "CASPER-SNAPSHOT" 1 "Thu,  28 Sep 2006" "0.0.1" "User commands"
+
+.SH NAME
+casper-snapshot \- a simple script to ease persistence usage.
+
+.SH SYNOPSIS
+.B casper-snapshot
+.RB [\| \-c \||\| \-\-cow
+.IR DIRECTORY \|]
+.RB [\| \-d \||\| \-\-device
+.IR DEVICE \|]
+.RB [\| \-e \||\| \-\-exclude\-list
+.IR FILE \|]
+.RB [\| \-o \||\| \-\-output
+.IR FILE \|]
+.RB [\| \-t \||\| \-\-type
+.IR TYPE \|]
+.PP
+.B casper-snapshot
+.RB \-r \||\| \-\-resync\-string
+.IR STRING
+.br
+.B casper-snapshot
+.RB \-h \||\| \-\-help
+.br
+.B casper-snapshot
+.RB \-u \||\| \-\-usage
+.br
+.B casper-snapshot
+.RB \-v \||\| \-\-version
+
+.SH DESCRIPTION
+Casper-snapshot is a script which can be used to build the right types of persistent image files supported by casper. It is also used on exit by the casper init script to resync the boot-found snapshots devices.
+
+.SH OPTIONS
+.TP
+.BI "\-c, \-\-cow" DIRECTORY
+specifies the input directory to be cloned in the image file.
+Its default value "/cow" should be right for most uses. However it could be handy to specify "/home" and type ext2 for the type to prepare an image file suited to be directly mounted by casper as home.
+.TP
+.BI "\-d, \-\-device" DEVICE
+sets the device where the media which the snapshot/persistence file/partition will be put. If it is not specified, a tmpfs will be used and linked to the user's desktop to move it where it is needed. If the device has no filesystem, an ext2 fs will be automatically created and labelled according to the values specified after the "--output" value or with a sane default.
+.TP
+.BI "\-e, \-\-exclude\-list" FILE
+a file containing a list of filenames/paths that should not be saved. This exclude list will be remebered on the target snapshot media for reuse.
+.TP
+.BI "\-o, \-\-output" FILE
+the filename/label used for the output file/partition. If left blank, casper-snapshot will search for a proper file on the device or use the whole partition.
+.TP
+.BI "\-r, \-\-resync\-string" STRING
+internally used on resyncs.
+.TP
+.BI "\-t, \-\-type" TYPE
+Type could be one of "cpio", "squashfs" or "ext2".
+
+.SH BUGS
+.B casper-snapshot
+Time (and BTS) will tell.
+
+.SH HOMEPAGE
+Debian Live project <http://live.debian.net/>
+
+.SH SEE ALSO
+.BR casper(7)
+
+.SH AUTHOR
+casper-snapshot was written Marco Amadori <marco.amadori at gmail.com>.
+.TP
+This manual page was written by Marco Amadori <marco.amadori at gmail.com>,
+for the Debian project (but may be used by others).

Added: dists/trunk/live-initramfs/debian/manpage/casper.7
===================================================================
--- dists/trunk/live-initramfs/debian/manpage/casper.7	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/manpage/casper.7	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,84 @@
+.TH CASPER 7 "Thu,  28 Sep 2006" "1.69" "Initramfs-tools hook"
+
+.SH NAME
+casper \- a hook for initramfs-tools to boot live systems.
+
+.SH SYNOPSIS
+.B BOOT=casper
+As kernel parameter boot prompt.
+
+.SH DESCRIPTION
+Casper is a hook for initramfs-tools used to generate an initramfs capable to boot live systems as those created by make-live. This includes the Debian-Live isos, netboot tarballs, and usb stick images and Ubuntu live cds. At boot time it will look for a (read-only) media containing a "/casper" directory where a root filesystems (often a compressed squashfs) is stored. If found, it will create a writable environment, using unionfs, for debian like systems to boot from.
+
+.SH RECOGNIZED BOOT OPTIONS
+.TP
+.B casper-getty
+This enables a special "serial" login shell (experimental).
+.TP
+.B xdebconf
+uses xdebconfigurator, if present on the rootfs, to configure X instead of the standard procedure (experimental).
+.TP
+.BI "hostname=" HOSTNAME " , userfullname=" USERFULLNAME " , username=" USERNAME
+Those parameters lets you override values read from the config file.
+.TP
+.BI "{keyb|kbd-chooser/method}=" KEYBOARD " , {klayout|console-setup/layoutcode}=" LAYOUT " , {kvariant|console-setup/variantcode}=" VARIANT " , {kmodel|console-setup/modelcode}=" CODE " ,  koptions=" OPTIONS
+Configure the running keyboard as specified, if this one misses casper behaves as if "keyb=us" was specified. It will be interfered from "locale=" if locale is only 2 lowecase letters as a special case. You could also specify console layout, variant, code, and options (no defaults).
+.TP
+.BI ip= IFACE,ADDRESS,NETMASK,GATEWAY [ :IFACE,ADDRESS,NETMASK,GATEWAY "]*"
+Let you specify the name(s) and the options of the interface(s) that should be configured at boot time. Do not specify this if you want to use dhcp (default).
+.TP
+.BR ip[= frommedia ]
+If this variable is set, dhcp and static configuration are just skipped and the system will use the (must be) media-preconfigured /etc/network/interfaces instead.
+.TP
+.BI "{live-media|bootfrom}=" DEVICE
+If you specify one of this two equivalent forms, casper will first try to find this device for the "/casper" directory where the read-only root filesystem should reside. If it did not find something usable, the normal scan for block devices is performed.
+.TP
+.BI "live-media-offset=" BYTES
+This way you could tell casper that your image starts at offset BYTES in the above specified or autodiscovered device, this could be useful to hide the debian-live iso or image inside another iso or image, to create "clean" images.
+.TP
+.BI "locale=" LOCALE " | debian-installer/locale=" LOCALE
+Configure the running locale as specified, if not present the live-media rootfs configured locale will be used and if also this one misses casper behave as "locale=en_US.UTF-8" was specified. If only 2 lowercase letter are specified (like "it"), the "maybe wanted" locale is generated (like it:IT.UTF-8), in this case if also "keyb=" is unspecified is set with those 2 lowercase letters (keyb=it).
+.TP
+.BR "netboot[=" nfs "|" cifs ]
+This tells casper to perform a network mount. The parameter "nfsroot=" (with optional "nfsopts="), should specify where is the location of the root filesystem.  With no args, will try cifs first, and if it fails nfs.
+.TP
+.B persistent
+Casper will look for persistent and snapshot partitions or files labeled "casper-rw", "home-rw", and files called "casper-sn*", "home-sn*" and will try to, in order: mount as /cow the first, mount the second in /home, and just copy the contents of the latter in appropriate locations (snapshots). Snapshots will be tried to be updated on reboot/shutdown. Look at casper-snapshot(1) for more informations.
+.TP
+.B nopersistent
+disables the above mentioned "persistent" feature, useful if the bootloader (like syslinux) has been installed with persistent enabled.
+.TP
+.B "showmounts"
+This parameter will make casper to show on "/" the ro filesystems (mostly compressed) on /casper. This is not enabled by default because could lead to problems by applications like "mono" which store binary paths on installation.
+.TP
+.BI "todisk=" DEVICE 
+Adding this parameter, casper will try to copy the entire read-only media to the specified device before mounting the root filesystem. It probably needs a lot of free space. Subsequent boots should then skip this step and just specify the "live-media=DEVICE" boot parameter with the same DEVICE used this time.
+.TP
+.B toram
+Adding this parameter, casper will try to copy the whole read-only media to the computer's RAM before mounting the root filesystem. This could need a lot of ram, according to the space used by the read-only media.
+.TP
+.BI "{preseed/file|file}=" FILE
+A path to a file present on the rootfs could be used to preseed debconf database.
+.TP
+.BI "package/question=" VALUE
+All debian installed packages could be preseeded from command-line that way, beware of blanks spaces, they will interfere with parsing, use a preseed file in this case.
+
+.SH FILES
+.B /etc/casper.conf
+some variables can be configured via this config file.
+
+.SH BUGS
+.B casper
+works fully on amd64, i386 and ppc, it should also run on other archs.
+
+.SH HOMEPAGE
+Debian Live project <http://live.debian.net/>
+
+.SH SEE ALSO
+.BR casper-snapshot(1), initramfs-tools(8), make-live(8), make-live.conf(5)
+
+.SH AUTHOR
+casper was written by Tollen Fog Heen <tfheen at canonical.com>, Matt Zimmerman <mdz at canonical.com>, and Marco Amadori <marco.amadori at gmail.com>.
+.TP
+This manual page was written by Marco Amadori <marco.amadori at gmail.com>,
+for the Debian project (but may be used by others).

Added: dists/trunk/live-initramfs/debian/rules
===================================================================
--- dists/trunk/live-initramfs/debian/rules	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/rules	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,67 @@
+#! /usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# Looking in which build system we are
+BUILD_SYSTEM := $(shell lsb_release --short --id)
+
+build:
+	dh_testdir
+
+	# Setting BUILD_SYSTEM in the binary package
+	sed -i -e 's/\(BUILD_SYSTEM="\).*"/\1'$(BUILD_SYSTEM)'"/g' casper.conf
+
+	$(MAKE) -C casper-md5check
+	set -e; \
+	for x in bin/* scripts/casper scripts/casper-bottom/* \
+	         ubiquity-hooks/*; do \
+		sh -n $$x; \
+	done
+
+clean:
+	dh_testdir
+	$(MAKE) -C casper-md5check clean
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_clean -k
+	dh_installdirs
+	dh_install
+	install -m755 casper-md5check/casper-md5check debian/casper/usr/lib/casper
+	install -m644 casper.conf debian/casper/etc/casper.conf
+
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installexamples -i
+	dh_installdocs -i
+	dh_installchangelogs -i
+	dh_compress -i
+	dh_fixperms -i
+	dh_installdeb -i
+	dh_gencontrol -i
+	dh_md5sums -i
+	dh_builddeb -i
+
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installdocs -a
+	dh_installman -a
+	dh_installexamples -a
+	dh_installinit -a -r --no-start -- start 89 0 6 .
+	dh_installchangelogs -a
+	dh_link -a
+	dh_strip -a
+	dh_compress -a
+	dh_fixperms -a
+	dh_installdeb -a
+	dh_gencontrol -a
+	dh_md5sums -a
+	dh_builddeb -a
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install


Property changes on: dists/trunk/live-initramfs/debian/rules
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/debian/ubiquity-casper.install
===================================================================
--- dists/trunk/live-initramfs/debian/ubiquity-casper.install	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/debian/ubiquity-casper.install	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,2 @@
+bin/casper-reconfigure usr/bin
+ubiquity-hooks/* usr/lib/ubiquity/target-config

Added: dists/trunk/live-initramfs/hooks/casper
===================================================================
--- dists/trunk/live-initramfs/hooks/casper	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/hooks/casper	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,75 @@
+#!/bin/sh -e
+# initramfs hook for casper
+
+PREREQS=""
+
+# Output pre-requisites
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case "$1" in
+    prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+. /usr/share/initramfs-tools/hook-functions
+
+manual_add_modules unionfs
+
+# We need losetup
+copy_exec /sbin/losetup /sbin
+
+# Casper hooks
+mkdir -p ${DESTDIR}/lib/casper
+copy_exec /usr/share/casper/casper-reconfigure /bin
+copy_exec /usr/share/casper/casper-preseed /bin
+
+mkdir -p ${DESTDIR}/lib/udev
+copy_exec /lib/udev/cdrom_id /lib/udev
+copy_exec /lib/udev/vol_id /lib/udev
+copy_exec /lib/udev/path_id /lib/udev
+copy_exec /usr/bin/udevinfo /bin
+copy_exec /usr/bin/eject /bin
+
+# cifs boot
+if [ -x /sbin/mount.cifs ]; then
+    copy_exec /sbin/mount.cifs /sbin
+    for x in cifs; do
+        manual_add_modules ${x}
+    done
+fi
+
+# squashfs
+manual_add_modules squashfs
+manual_add_modules loop
+
+# random file system modules
+manual_add_modules vfat
+manual_add_modules ext3
+# needed for vfat. :-/
+manual_add_modules nls_cp437
+manual_add_modules nls_utf8
+manual_add_modules nls_iso8859-1
+
+# cdrom modules
+manual_add_modules sr_mod
+manual_add_modules ide-cd
+manual_add_modules sbp2
+manual_add_modules ohci1394
+
+# integrity check
+copy_exec /usr/lib/casper/casper-md5check /bin
+
+cp /usr/share/initramfs-tools/scripts/casper-functions $DESTDIR/scripts
+cp /usr/share/initramfs-tools/scripts/casper-helpers $DESTDIR/scripts
+
+auto_add_modules net
+
+if [ -e /etc/casper.conf ]; then
+    mkdir -p ${DESTDIR}/etc
+    cp /etc/casper.conf ${DESTDIR}/etc
+fi


Property changes on: dists/trunk/live-initramfs/hooks/casper
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper
===================================================================
--- dists/trunk/live-initramfs/scripts/casper	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,549 @@
+#!/bin/sh
+
+# set -e
+
+export PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:/usr/bin:/usr/sbin:/bin:/sbin
+
+echo "/root/lib" >> /etc/ld.so.conf
+echo "/root/usr/lib" >> /etc/ld.so.conf
+
+mountpoint=/cdrom
+
+USERNAME=casper
+USERFULLNAME="Live session user"
+HOST=live
+BUILD_SYSTEM=Custom
+
+mkdir -p $mountpoint
+
+[ -f /etc/casper.conf ] && . /etc/casper.conf
+export USERNAME USERFULLNAME HOST BUILD_SYSTEM
+
+. /scripts/casper-helpers
+
+if [ ! -f /casper.vars ]; then
+    touch /casper.vars
+fi
+
+is_casper_path() {
+    path=$1
+    if [ -d "$path/casper" ]; then
+        if [ "$(echo $path/casper/*.squashfs)" != "$path/casper/*.squashfs" ] ||
+            [ "$(echo $path/casper/*.ext2)" != "$path/casper/*.ext2" ] ||
+            [ "$(echo $path/casper/*.dir)" != "$path/casper/*.dir" ]; then
+            return 0
+        fi
+    fi
+    return 1
+}
+
+get_backing_device() {
+    case "$1" in
+        *.squashfs|*.ext2)
+            echo $(setup_loop "$1" "loop" "/sys/block/loop*")
+            ;;
+        *.dir)
+            echo "directory"
+            ;;
+        *)
+            panic "Unrecognized casper filesystem: $1"
+            ;;
+    esac
+}
+
+match_files_in_dir() {
+    # Does any files match pattern $1 ?
+
+    local pattern="$1"
+    if [ "$(echo $pattern)" != "$pattern" ]; then
+        return 0
+    fi
+    return 1
+}
+
+mount_images_in_directory() {
+    directory="$1"
+    rootmnt="$2"
+    if match_files_in_dir "$directory/casper/*.squashfs" ||
+        match_files_in_dir "$directory/casper/*.ext2" ||
+        match_files_in_dir "$directory/casper/*.dir"; then
+        setup_unionfs "$directory/casper" "$rootmnt"
+    else
+        :
+    fi
+}
+
+is_nice_device() {
+    sysfs_path="${1#/sys}"
+    if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-[ide|scsi|usb])"; then
+        return 0
+    fi
+    return 1
+}
+
+is_supported_fs () {
+    # FIXME: do something better like the scan of supported filesystems
+    fstype="${1}"
+    case ${fstype} in
+        vfat|iso9660|udf|ext2|ext3|ntfs)
+            return 0
+            ;;
+    esac
+    return 1
+}
+
+copy_live_to() {
+    copyfrom="${1}"
+    copytodev="${2}"
+    copyto="${copyfrom}_swap"
+
+    size=$(fs_size "" ${copyfrom} "used")
+
+    if [ "${copytodev}" = "ram" ]; then
+        # copying to ram:
+        freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - ) )
+        mount_options="-o size=${size}k"
+        free_string="memory"
+        fstype="tmpfs"
+        dev="/dev/shm"
+    else
+        # it should be a writable block device
+        if [ -b "${copytodev}" ]; then
+            dev="${copytodev}"
+            free_string="space"
+            fstype=$(get_fstype "${dev}")
+            freespace=$(fs_size "${dev}")
+        else
+            [ "$quiet" != "y" ] && log_warning_msg "${copytodev} is not a block device."
+            return 1
+        fi
+    fi
+    if [ "${freespace}" -lt "${size}" ] ; then
+        [ "$quiet" != "y" ] && log_warning_msg "Not enough free ${free_string} (${freespace}k > ${size}k) to copy live media in ${copytodev}."
+        return 1
+    fi
+
+    # begin copying..
+    mkdir "${copyto}"
+    echo "mount -t ${fstype} ${mount_options} ${dev} ${copyto}"
+    mount -t "${fstype}" ${mount_options} "${dev}" "${copyto}"
+    cp -a ${copyfrom}/* ${copyto} # "cp -a" from busybox also copies hidden files
+    umount ${copyfrom}
+    mount -r -o move ${copyto} ${copyfrom}
+    rmdir ${copyto}
+    return 0
+}
+
+do_netmount() {
+    rc=1
+
+    modprobe "${MP_QUIET}" af_packet # For DHCP
+
+    udevtrigger
+    udevsettle
+
+    ipconfig ${DEVICE} /tmp/net-${DEVICE}.conf | tee /netboot.config
+
+    if [ "${NFSROOT}" = "auto" ]; then
+        NFSROOT=${ROOTSERVER}:${ROOTPATH}
+    fi
+
+    [ "$quiet" != "y" ] && log_begin_msg "Trying netboot from ${NFSROOT}"
+
+    if [ "${NETBOOT}" != "nfs" ] && do_cifsmount ; then
+        rc=0
+    elif do_nfsmount ; then
+        NETBOOT="nfs"
+        export NETBOOT
+        rc=0
+    fi
+
+    [ "$quiet" != "y" ] && log_end_msg
+    return ${rc}
+}
+
+do_nfsmount() {
+    rc=1
+    modprobe "${MP_QUIET}" nfs
+    if [ -z "${NFSOPTS}" ]; then
+        NFSOPTS=""
+    fi
+
+    [ "$quiet" != "y" ] && log_begin_msg "Trying nfsmount -o nolock -o ro ${NFSOPTS} ${NFSROOT} ${mountpoint}"
+    # FIXME: This for loop is an ugly HACK round an nfs bug
+    for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do
+        nfsmount -o nolock -o ro ${NFSOPTS} "${NFSROOT}" "${mountpoint}" && rc=0 && break
+        sleep 1
+    done
+    return ${rc}
+}
+
+do_cifsmount() {
+    rc=1
+    if [ -x "/sbin/mount.cifs" ]; then
+        if [ -z "${NFSOPTS}" ]; then
+            CIFSOPTS="-ouser=root,password="
+        else
+            CIFSOPTS="${NFSOPTS}"
+        fi
+
+        [ "$quiet" != "y" ] && log_begin_msg "Trying mount.cifs ${NFSROOT} ${mountpoint} ${CIFSOPTS}"
+        modprobe "${MP_QUIET}" cifs
+
+        if mount.cifs "${NFSROOT}" "${mountpoint}" "${CIFSOPTS}" ; then
+            rc=0
+        fi
+    fi
+    return ${rc}
+}
+
+do_snap_copy ()
+{
+    fromdev="${1}"
+    todir="${2}"
+    snap_type="${3}"
+
+    size=$(fs_size "${fromdev}" "" "used")
+
+    if [ -b "${fromdev}" ]; then
+        # look for free mem
+        if [ -n "${HOMEMOUNTED}" -a "${snap_type}" = "HOME" ]; then
+            todev=$(cat /proc/mounts | grep -s " $(base_path ${todir}) " | awk '{print $1}' )
+            freespace=$(df -k  | grep -s ${todev} | awk '{print $4}')
+        else
+            freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - ))
+        fi
+
+        tomount="/mnt/tmpsnap"
+        if [ ! -d "${tomount}" ] ; then
+            mkdir -p "${tomount}"
+        fi
+
+        fstype=$(get_fstype "${fromdev}")
+        if [ -n "${fstype}" ]; then
+            # Copying stuff...
+            mount -t "${fstype}" -o ro "${fromdev}" "${tomount}"
+            cp -a "${tomount}"/* ${todir}
+            umount "${tomount}"
+        else
+            log_warning_msg "Unrecognized fstype: ${fstype} on ${fromdev}:${snap_type}"
+        fi
+
+        rmdir "${tomount}"
+        if echo ${fromdev} | grep -qs loop; then
+           losetup -d "${fromdev}"
+        fi
+        return 0
+    else
+        return 1
+        [ "$quiet" != "y" ] && log_warning_msg "Unable to find the snapshot ${snap_type} medium"
+    fi
+}
+
+try_snap ()
+{
+    # Look for $snap_label.* in block devices and copy the contents to $snap_mount
+    #   and remember the device and filename for resync on exit in casper.init
+
+    snap_label="${1}"
+    snap_mount="${2}"
+    snap_type="${3}"
+
+    snapdata=$(find_files "${snap_label}.squashfs ${snap_label}.cpio.gz ${snap_label}.ext2")
+    if [ ! -z "${snapdata}" ]; then
+        snapdev="$(echo ${snapdata} | cut -f1 -d ' ')"
+        snapback="$(echo ${snapdata} | cut -f2 -d ' ')"
+        snapfile="$(echo ${snapdata} | cut -f3 -d ' ')"
+        if echo "${snapfile}" | grep -qs '\(squashfs\|ext2\)'; then
+            # squashfs or ext2 snapshot
+            dev=$(get_backing_device "${snapback}/${snapfile}")
+            if ! do_snap_copy "${dev}" "${snap_mount}" "${snap_type}"; then
+                 log_warning_msg "Impossible to include the ${snapfile} Snapshot"
+                 return 1
+            fi
+        else
+            # cpio.gz snapshot
+            if ! (cd "${snap_mount}" && zcat "${snapback}/${snapfile}" | cpio -i -u -d 2>/dev/null) ; then
+                log_warning_msg "Impossible to include the ${snapfile} Snapshot"
+                return 1
+            fi
+        fi
+        umount "${snapback}"
+    else
+        dev=$(find_cow_device "${snap_label}")
+        if [ -b ${dev} ]; then
+            if echo "${dev}" | grep -qs loop; then
+                # strange things happens, user confused?
+                snaploop=$( losetup ${dev} | awk '{print $3}' | tr -d '()' )
+                snapfile=$(basename ${snaploop})
+                snapdev=$(cat /proc/mounts | awk '{print $2,$1}' | grep -es "^$( dirname ${snaploop} )" | cut -f2 -d ' ')
+            else
+                snapdev="${dev}"
+            fi
+            if ! do_snap_copy "${dev}" "${snap_mount}" "${snap_type}" ; then
+                log_warning_msg "Impossible to include the ${snap_label} Snapshot"
+                return 1
+            else
+                if [ -n "${snapfile}" ]; then
+                     # it was a loop device, user confused
+                     umount ${snapdev}
+                fi
+            fi
+        else
+            log_warning_msg "Impossible to include the ${snap_label} Snapshot"
+            return 1
+        fi
+    fi
+    echo "export ${snap_type}SNAP="${snap_mount}":${snapdev}:${snapfile}" >> /etc/casper.conf # for resync on reboot/halt
+    return 0
+}
+
+setup_unionfs() {
+    image_directory="$1"
+    rootmnt="$2"
+
+    modprobe "${MP_QUIET}" -b unionfs
+
+    # run-init can't deal with images in a subdir, but we're going to
+    # move all of these away before it runs anyway.  No, we're not,
+    # put them in / since move-mounting them into / breaks mono and
+    # some other apps.
+
+    croot="/"
+
+    # Let's just mount the read-only file systems first
+    rofsstring=""
+    rofslist=""
+    if [ "${NETBOOT}" = "nfs" ] ; then
+        roopt="nfsro" # go aroung a bug in nfs-unionfs locking
+    else
+        roopt="ro"
+    fi
+
+    mkdir -p "${croot}"
+    for image_type in "ext2" "squashfs" "dir" ; do
+        for image in "${image_directory}"/*."${image_type}"; do
+            imagename=$(basename "${image}")
+            if [ -d "${image}" ]; then
+                # it is a plain directory: do nothing
+                rofsstring="${image}=${roopt}:${rofsstring}"
+                rofslist="${image} ${rofslist}"
+            elif [ -f "${image}" ]; then
+                backdev=$(get_backing_device "$image")
+                fstype=$(get_fstype "${backdev}")
+                if [ "${fstype}" = "unknown" ]; then
+                    panic "Unknown file system type on ${backdev} (${image})"
+                fi
+                mkdir -p "${croot}/${imagename}"
+                mount -t "${fstype}" -o ro "${backdev}" "${croot}/${imagename}" || panic "Can not mount $backdev ($image) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}"
+            fi
+        done
+    done
+    rofsstring=${rofsstring%:}
+
+    mkdir -p /cow
+    cowdevice="tmpfs"
+    cow_fstype="tmpfs"
+
+    # Looking for "${root_persistence}" device or file
+    if [ -n "${PERSISTENT}" ]; then
+        cowprobe=$(find_cow_device "${root_persistence}")
+        if [ -b "${cowprobe}" ]; then
+            cowdevice=${cowprobe}
+            cow_fstype=$(get_fstype "${cowprobe}")
+        else
+            [ "$quiet" != "y" ] && log_warning_msg "Unable to find the persistent medium"
+        fi
+    fi
+
+    mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount $cowdevice on /cow"
+
+    mount -t unionfs -o dirs=/cow=rw:$rofsstring unionfs "$rootmnt" || panic "Unionfs mount failed"
+
+    # Adding other custom mounts
+    if [ -n "${PERSISTENT}" ]; then
+        # directly mount /home
+        # FIXME: add a custom mounts configurable system
+        homecow=$(find_cow_device "${home_persistence}" )
+        if [ -b "${homecow}" ]; then
+            mount -t $(get_fstype "${homecow}") -o rw "${homecow}" "${rootmnt}/home"
+            export HOMEMOUNTED=1 # used to proper calculate free space in do_snap_copy()
+        else
+            [ "$quiet" != "y" ] && log_warning_msg "Unable to find the persistent home medium"
+        fi
+        # Look for other snapshots to copy in
+        try_snap "${root_snapshot_label}" "${rootmnt}" "ROOT"
+        try_snap "${home_snapshot_label}" "${rootmnt}/home" "HOME"
+    fi
+
+    if [ -n "${SHOWMOUNTS}" ]; then
+        for d in ${rofslist}; do
+            mkdir -p "${rootmnt}/casper/${d##*/}"
+            case d in
+                *.dir) # do nothing # mount -o bind "${d}" "${rootmnt}/casper/${d##*/}"
+                    ;;
+                *) mount -o move "${d}" "${rootmnt}/casper/${d##*/}"
+                    ;;
+            esac
+        done
+        # shows cow fs on /cow for use by casper-snapshot
+        mkdir -p "${rootmnt}/cow"
+        mount -o bind /cow "${rootmnt}/cow"
+    fi
+
+    # move the first mount; no head in busybox-initramfs
+    for d in $(mount -t squashfs | cut -d\  -f 3); do
+        mkdir -p "${rootmnt}/rofs"
+        mount -o move "${d}" "${rootmnt}/rofs"
+        break
+    done
+}
+
+check_dev ()
+{
+    sysdev="${1}"
+    devname="${2}"
+    if [ -z "${devname}" ]; then
+        devname=$(sys2dev "${sysdev}")
+    fi
+
+    if [ -n "${LIVEMEDIA_OFFSET}" ]; then
+        loopdevname=$(setup_loop "${devname}" "loop" "/sys/block/loop*" "${LIVEMEDIA_OFFSET}")
+        devname="${loopdevname}" 
+    fi
+
+    fstype=$(get_fstype "${devname}")
+    if is_supported_fs ${fstype}; then
+        mount -t ${fstype} -o ro "${devname}" $mountpoint || continue
+        if is_casper_path $mountpoint; then
+            echo $mountpoint
+            return 0
+        else
+            umount $mountpoint
+        fi
+    fi
+
+    if [ -n "${LIVEMEDIA_OFFSET}" ]; then
+        losetup -d "${loopdevname}"
+    fi
+    return 1
+}
+
+find_livefs() {
+    timeout="${1}"
+    # first look at the one specified in the command line
+    if [ ! -z "${LIVEMEDIA}" ]; then
+        if check_dev "null" "${LIVEMEDIA}"; then
+            return 0
+        fi
+    fi
+    # don't start autodetection before timeout has expired
+    if [ -n "${LIVEMEDIA_TIMEOUT}" ]; then
+        if [ "${timeout}" -lt "${LIVEMEDIA_TIMEOUT}" ]; then
+            return 1
+        fi
+    fi
+    # or do the scan of block devices
+    for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do
+        devname=$(sys2dev "${sysblock}")
+        fstype=$(get_fstype "${devname}")
+        if /lib/udev/cdrom_id ${devname} > /dev/null; then
+            if check_dev "null" "${devname}" ; then
+                return 0
+            fi
+        elif is_nice_device "${sysblock}" ; then
+            for dev in $(subdevices "${sysblock}"); do
+                if check_dev "${dev}" ; then
+                    return 0
+                fi
+            done
+        elif [ "${fstype}" = "squashfs" -o \
+                "${fstype}" = "ext3" -o \
+                "${fstype}" = "ext2" ]; then
+            # This is an ugly hack situation, the block device has
+            # an image directly on it.  It's hopefully
+            # casper, so take it and run with it.
+            ln -s "${devname}" "${devname}.${fstype}"
+            echo "${devname}.${fstype}"
+            return 0
+        fi
+    done
+    return 1
+}
+
+pulsate() {
+    if [ -x /sbin/usplash_write ]; then
+        /sbin/usplash_write "PULSATE"
+    fi
+}
+
+set_usplash_timeout() {
+    if [ -x /sbin/usplash_write ]; then
+        /sbin/usplash_write "TIMEOUT 120"
+    fi
+}
+
+mountroot() {
+    exec 6>&1
+    exec 7>&2
+    exec > casper.log
+    exec 2>&1
+
+    set_usplash_timeout
+    [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-premount"
+    pulsate
+    run_scripts /scripts/casper-premount
+    [ "$quiet" != "y" ] && log_end_msg
+
+    # Needed here too because some things (*cough* udev *cough*)
+    # changes the timeout
+
+    set_usplash_timeout
+
+    if [ ! -z "${NETBOOT}" ]; then
+        if do_netmount ; then
+            livefs_root="${mountpoint}"
+        else
+            panic "Unable to find a live file system on the network"
+        fi
+    else
+        # Scan local devices for the image
+        for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do
+            livefs_root=$(find_livefs $i)
+            if [ "${livefs_root}" ]; then
+                break
+            fi
+            sleep 1
+        done
+    fi
+
+    if [ -z "${livefs_root}" ]; then
+        panic "Unable to find a medium containing a live file system"
+    fi
+
+    if [ "${TORAM}" ]; then
+        live_dest="ram"
+    elif [ "${TODISK}" ]; then
+        live_dest="${TODISK}"
+    fi
+    if [ "${live_dest}" ]; then
+        log_begin_msg "Copying live_media to ${live_dest}"
+        copy_live_to "${livefs_root}" "${live_dest}"
+        log_end_msg
+    fi
+
+    mount_images_in_directory "${livefs_root}" "${rootmnt}"
+
+    log_end_msg
+
+    maybe_break casper-bottom
+    [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom"
+
+    pulsate
+    run_scripts /scripts/casper-bottom
+    [ "$quiet" != "y" ] && log_end_msg
+
+    exec 1>&6 6>&-
+    exec 2>&7 7>&-
+    cp casper.log "${rootmnt}/var/log/"
+}

Added: dists/trunk/live-initramfs/scripts/casper-bottom/01integrity_check
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/01integrity_check	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/01integrity_check	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+PREREQ=""
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+grep integrity-check /proc/cmdline && casper-md5check /cdrom /cdrom/md5sum.txt < /dev/tty8


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/01integrity_check
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/02_timezone
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/02_timezone	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/02_timezone	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Adding APT-CDROM source..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+cp -f /root/usr/share/zoneinfo/UTC /root/etc/localtime


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/02_timezone
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/05mountpoints
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/05mountpoints	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/05mountpoints	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Moving mount points..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+# Move to the new root filesystem so that programs there can get at it.
+mkdir -p /root/cdrom
+mount -n -o move /cdrom /root/cdrom
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/05mountpoints
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/10adduser
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/10adduser	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/10adduser	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Adding live session user..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+# U6aMy0wojraho is just a blank password
+chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF
+set passwd/root-password-crypted *
+set passwd/user-password-crypted U6aMy0wojraho
+set passwd/user-fullname $USERFULLNAME 
+set passwd/username $USERNAME
+set passwd/user-uid 999
+EOF
+
+chroot /root /usr/lib/user-setup/user-setup-apply > /dev/null
+
+# Clear out debconf database again to avoid confusing ubiquity later.
+chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF
+set passwd/root-password-crypted
+set passwd/user-password-crypted
+set passwd/user-fullname
+set passwd/username
+set passwd/user-uid
+EOF
+
+if [ -f /root/etc/sudoers ]; then
+    if [ "${BUILD_SYSTEM}" = "Ubuntu" ]; then
+        grep -q '^%admin' /root/etc/sudoers && sed -i -e '/^%admin/s/ALL$/NOPASSWD: ALL/' /root/etc/sudoers || echo '%admin  ALL=(ALL) NOPASSWD: ALL' >> /root/etc/sudoers
+    elif [ "${BUILD_SYSTEM}" = "Debian" ]; then
+		echo "${USERNAME}  ALL=(ALL) NOPASSWD: ALL" >> /root/etc/sudoers
+    fi
+fi
+
+# XXX - awful hack to stop xscreensaver locking the screen (#7150)
+echo 'RUNNING_UNDER_GDM="yes"' >> /root/etc/environment
+
+for file in /usr/share/applications/ubiquity-gtkui.desktop /usr/share/applications/kde/ubiquity-kdeui.desktop; do
+    if [ -f "/root/$file" ]; then
+        chroot /root install -D -o $USERNAME -g $USERNAME $file /home/$USERNAME/Desktop/$(basename "$file")
+        break
+    fi
+done
+
+if [ -L /root/home/$USERNAME/Examples ]; then
+    chroot /root install -o $USERNAME -g $USERNAME -d /home/$USERNAME/Desktop/
+    mv /root/home/$USERNAME/Examples /root/home/$USERNAME/Desktop/
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/10adduser
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/12fstab
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/12fstab	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/12fstab	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Configuring fstab..."
+FSTAB=/root/etc/fstab
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+cat > $FSTAB <<EOF
+unionfs / unionfs rw 0 0
+tmpfs /tmp tmpfs nosuid,nodev 0 0
+EOF
+
+rm -f /root/etc/rcS.d/S*checkroot.sh
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/12fstab
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/13swap
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/13swap	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/13swap	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Setting up swap..."
+FSTAB=/root/etc/fstab
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+devices=""
+for device in /dev/[hs]d[a-z][0-9]*; do
+    if ! [ -b "$device" ]; then
+        continue
+    fi
+
+    magic=$(/bin/dd if="$device" bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null) || continue
+    
+    if [ "$magic" = "SWAPSPACE2" -o "$magic" = "SWAP-SPACE" ]; then
+#        log "Found $device"
+        devices="$devices $device"
+        fi
+done
+
+for device in $devices; do
+    cat >> $FSTAB <<EOF
+$device swap swap defaults 0 0
+EOF
+done
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/13swap
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/14locales
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/14locales	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/14locales	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,63 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Setting up locales..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+if [ -e /root/etc/default/locale ]; then
+    grep_file=/root/etc/default/locale
+elif [ -e /root/etc/environment ]; then # Old locales policy
+    grep_file=/root/etc/environment
+fi
+
+if [ -n "${grep_file}" ]; then
+    # use rootfs configured locale
+    locale=$(grep -s 'LANG=' ${grep_file} | sed s/'LANG='// | tr -d '"' )
+else
+    grep_file=/root/etc/default/locale
+fi
+
+# commandline
+for x in $(cat /proc/cmdline); do
+    case $x in
+        debian-installer/locale=*)
+			locale=${x#debian-installer/locale=}
+			set_locale="true"
+			;;
+		locale=*)
+			locale=${x#locale=}
+			set_locale="true"
+            ;;
+    esac
+done
+
+if [ -z "${locale}" ]; then
+    # Set a default one
+    locale=en_US.UTF-8
+    set_locale="true"
+fi
+
+if [ "${set_locale}" ]; then
+    LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 |sed -e 's, .*,,' -e q)
+    printf 'LANG="%s"\n' "${LANG}" >> "${grep_file}"
+    printf '%s UTF-8\n' "${LANG}" > /root/etc/locale.gen
+    chroot /root /usr/sbin/locale-gen "${LANG}"
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/14locales
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/15autologin
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/15autologin	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/15autologin	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Setting up automatic login..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+if chroot /root [ -f /etc/gdm/gdm-cdd.conf ]; then
+    GDMCONF=/etc/gdm/gdm-cdd.conf
+else
+    GDMCONF=/etc/gdm/gdm.conf
+fi
+
+if chroot /root [ -f ${GDMCONF} ]; then
+    # Configure GDM autologin
+    chroot /root sed -i \
+        -e "s/^AutomaticLoginEnable=.*\$/AutomaticLoginEnable=true/" \
+        -e "s/^AutomaticLogin=.*\$/AutomaticLogin=$USERNAME/" \
+        -e "s/^TimedLoginEnable=.*\$/TimedLoginEnable=true/" \
+        -e "s/^TimedLogin=.*\$/TimedLogin=$USERNAME/" \
+        -e "s/^TimedLoginDelay=.*\$/TimedLoginDelay=10/" \
+        ${GDMCONF}
+fi
+
+if [ -f /root/etc/kde3/kdm/kdmrc ]; then
+    # Configure KDM autologin
+    sed -i -r \
+        -e "s/^#?AutoLoginEnable=.*\$/AutoLoginEnable=true/" \
+        -e "s/^#?AutoLoginUser=.*\$/AutoLoginUser=$USERNAME/" \
+        -e "s/^#?AutoReLogin=.*\$/AutoReLogin=true/" \
+        /root/etc/kde3/kdm/kdmrc
+fi
+
+if chroot /root /usr/bin/which kpersonalizer >/dev/null; then
+    # Disable first-login wizard for KDE
+    if [ ! -f /root/etc/kde3/kpersonalizerrc ]; then
+        cat > /root/etc/kde3/kpersonalizerrc <<EOF
+[General]
+FirstLogin=false
+EOF
+    else
+        echo "I'm not smart enough to disable kpersonalizer startup" >&2
+        echo "Because kpersonalizerrc already exists" >&2
+    fi
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/15autologin
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/18hostname
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/18hostname	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/18hostname	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,38 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Setting hostname..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+echo "$HOST" > /root/etc/hostname
+cat > /root/etc/hosts <<EOF
+127.0.0.1 localhost
+127.0.1.1 $HOST
+
+# The following lines are desirable for IPv6 capable hosts
+::1     ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+ff02::3 ip6-allhosts
+
+EOF
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/18hostname
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/19keyboard
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/19keyboard	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/19keyboard	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Setting up console keyboard..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+kbd=us
+cslayout=
+csvariant=
+csmodel=
+
+for x in $(cat /proc/cmdline); do
+        case $x in
+                kbd-chooser/method=*)
+                        kbd=${x#kbd-chooser/method=}
+                        ;;
+                console-setup/layoutcode=*)
+                        cslayout=${x#console-setup/layoutcode=}
+                        ;;
+                console-setup/variantcode=*)
+                        csvariant=${x#console-setup/variantcode=}
+                        ;;
+                console-setup/modelcode=*)
+                        csmodel=${x#console-setup/modelcode=}
+                        ;;
+        esac
+done
+
+if [ -x /root/bin/setupcon ] && [ -f /root/etc/default/console-setup ]; then
+        if [ "$cslayout" ]; then
+                chroot /root sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$cslayout\"/" \
+                        /etc/default/console-setup
+                if [ "$csvariant" ]; then
+                        chroot /root sed -i "s/^XKBVARIANT=.*/XKBVARIANT=\"$csvariant\"/" \
+                                /etc/default/console-setup
+                else
+                        casper-preseed /root console-setup/variantcode '' false
+                fi
+                if [ "$csmodel" ]; then
+                        chroot /root sed -i "s/^XKBMODEL=.*/XKBMODEL=\"$csmodel\"/" \
+                                /etc/default/console-setup
+                else
+                        casper-preseed /root console-setup/modelcode '' false
+                fi
+        else
+                casper-preseed /root console-setup/layoutcode '' false
+                casper-preseed /root console-setup/variantcode '' false
+                casper-preseed /root console-setup/modelcode '' false
+        fi
+else
+        chroot /root /usr/sbin/install-keymap $kbd
+        casper-preseed /root debian-installer/keymap "$kbd"
+fi
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/19keyboard
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/20xconfig
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/20xconfig	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/20xconfig	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Configuring X..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+if [ "$TERM_TYPE" = "serial" ]; then
+    # Don't bother trying to configure or start X on a serial console
+    rm -f /etc/rc?.d/S??[gxk]dm
+    exit 0
+fi
+
+locale=en_US.UTF-8
+
+for x in $(cat /proc/cmdline); do
+                case $x in
+                        debian-installer/locale=*)
+                                locale=${x#debian-installer/locale=}
+                                ;;
+                        locale=*)
+                                locale=${x#locale=}
+                                ;;
+                esac
+done
+
+mount -n -o bind /sys /root/sys
+mount -n -o bind /proc /root/proc
+mount -n -o bind /dev /root/dev
+
+if [ -n "${XDEBCONF}" -a -x /root/usr/sbin/xdebconfigurator ]; then
+    # xdebconfigurator
+    chroot /root /usr/sbin/xdebconfigurator
+fi
+
+chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF
+set xserver-xorg/autodetect_keyboard true
+fset xserver-xorg/autodetect_keyboard seen true
+EOF
+
+DEBUG_XORG_PACKAGE=1 DEBUG_XORG_DEBCONF=1 LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 | sed -e 's, .*,,' -e q) casper-reconfigure /root xserver-xorg
+umount /root/sys
+umount /root/proc
+umount /root/dev
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/20xconfig
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/22gnome_panel_data
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/22gnome_panel_data	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/22gnome_panel_data	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Configuring gnome-panel-data..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+if [ -x /root/usr/sbin/laptop-detect ]; then
+	if chroot /root laptop-detect; then
+	    casper-reconfigure /root gnome-panel-data
+	fi
+fi
+
+panel_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gnome-panel-data 2>/dev/null) || panel_version=""
+if [ -n "$panel_version" ]; then
+    chroot /root sudo -u "$USERNAME" gconftool-2 -s -t bool /apps/panel/global/disable_lock_screen true
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/22gnome_panel_data
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/22screensaver
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/22screensaver	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/22screensaver	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Configuring screensaver..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+gnome_screensaver_version=$(chroot /root dpkg-query -W --showformat='${Version}' gnome-screensaver 2>/dev/null) || gnome_screensaver_version=""
+if [ -n "$gnome_screensaver_version" ]; then
+    # Support legacy gconf value
+    chroot /root sudo -u "$USERNAME" gconftool-2 -t bool -s /apps/gnome-screensaver/lock false
+    chroot /root sudo -u "$USERNAME" gconftool-2 -t bool -s /apps/gnome-screensaver/lock_enabled false
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/22screensaver
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/23etc_modules
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/23etc_modules	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/23etc_modules	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,30 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Preconfiguring /etc/modules..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+case "$DPKG_ARCH" in
+# load the right modules
+powerpc|ppc64)
+        echo snd_powermac >> /root/etc/modules
+	;;
+esac
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/23etc_modules
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/23networking
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/23networking	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/23networking	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,107 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Preconfiguring networking..."
+IFFILE="/root/etc/network/interfaces"
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+if [ "${STATICIP}" = "frommedia" -a -e  "$IFFILE" ] ; then
+    # will use existent /etc/network/interfaces
+    log_end_msg
+    exit 0
+fi
+
+cat > "$IFFILE" <<EOF
+auto lo
+iface lo inet loopback
+
+EOF
+
+udevtrigger
+udevsettle
+
+if [ -z "${NETBOOT}" -a -n "${STATICIP}" -a "${STATICIP}" != "frommedia" ]; then
+    parsed=$(echo "${STATICIP}" | sed -e 's/:/ /g')
+    for ifline in ${parsed}; do
+        ifname="$(echo ${ifline} | cut -f1 -d ',')"
+        ifaddress="$(echo ${ifline} | cut -f2 -d ',')"
+        ifnetmask="$(echo ${ifline} | cut -f3 -d ',')"
+        ifgateway="$(echo ${ifline} | cut -f4 -d ',')"
+        cat >> "$IFFILE" <<EOF
+auto ${ifname}
+iface ${ifname} inet static
+    address ${ifaddress}
+    netmask ${ifnetmask}
+    gateway ${ifgateway}
+
+EOF
+    done
+else
+    if [ -z "${NETBOOT}" ]; then
+        # default, dhcp assigned
+        method="dhcp"
+    else
+        # make sure that the preconfigured interface would not get reassigned by dhcp
+        # on startup by ifup script - otherwise our root fs might be disconnected!
+        method="manual"
+    fi
+    # iterate the physical interfaces and add them to the interfaces list
+    for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do
+        [ -e $interface ] || continue
+        i="$(basename $interface)"
+        cat >> "$IFFILE" <<EOF
+auto $i
+iface $i inet $method
+
+EOF
+    done
+    if [ ! -f /root/etc/resolv.conf -a -f /netboot.config ] ; then
+        # create a resolv.conf if it is not present
+        cp /netboot.config /root/var/log/netboot.config
+        rc_search=$(cat netboot.config | awk '/domain/{print $3}')
+        rc_server0=$(cat netboot.config | awk '/dns0/{print $5}')
+        rc_server1=$(cat netboot.config | awk '/dns0/{print $8}')
+        rc_server0="nameserver ${rc_server0}"
+        if [ "${rc_server1}" = "0.0.0.0" ]; then
+            rc_server1=""
+        else
+            rc_server1="nameserver ${rc_server1}"
+        fi
+        cat > /root/etc/resolv.conf <<EOF
+# /etc/resolv.conf
+# Autogenerated by casper
+search ${rc_search}
+domain ${rc_search}
+${rc_server0}
+${rc_server1}
+EOF
+        cat /root/etc/resolv.conf >> /root/var/log/netboot.config
+    fi
+fi
+
+for i in eth0 eth1 eth2 ath0 wlan0; do
+    grep -q "iface $i" $IFFILE && continue
+    cat >> "$IFFILE" <<EOF
+auto $i
+iface $i inet dhcp
+
+EOF
+done
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/23networking
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/24preseed
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/24preseed	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/24preseed	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,50 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Loading preseed file..."
+
+. /scripts/casper-functions
+
+prereqs ()
+{
+	echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+	prereqs
+	exit 0
+	;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+location=
+for x in $(cat /proc/cmdline); do
+	case $x in
+		preseed/file=*)
+			location="${x#preseed/file=}"
+			;;
+		file=*)
+			location="${x#file=}"
+			;;
+		*/*=*)
+			question="${x%%=*}"
+			value="${x#*=}"
+			casper-preseed /root "$question" "$value"
+			;;
+		locale=*)
+			value="${x#*=}"
+			casper-preseed /root debian-installer/locale "$value"
+			;;
+	esac
+done
+
+if [ "$location" ]; then
+	chroot /root debconf-set-selections < "/root$location"
+fi
+
+log_end_msg
+
+exit 0


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/24preseed
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/25configure_init
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/25configure_init	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/25configure_init	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Setting up init..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+# Arrange for shells on virtual consoles, rather than login prompts
+
+if [ -n "$USERNAME" ]; then
+    if [ -f /root/etc/inittab ]; then
+        sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab
+    fi
+    if [ "/root/etc/event.d/tty*" != "$(echo /root/etc/event.d/tty*)" ]; then
+        for f in /root/etc/event.d/tty*; do
+            sed -i -e "s|^exec.*|exec /bin/login -f $USERNAME </dev/$(basename $f) > /dev/$(basename $f) 2>\&1|" $f
+        done
+    fi
+fi
+
+# This has the nice side effect of the cron.{daily,weekly,monthly} jobs in
+# /etc/crontab remaining disabled, yet also not run by anacron
+if [ -x /root/etc/init.d/anacron ]; then
+    for f in /root/etc/rc?.d/S??anacron; do
+        mv ${f} ${f%/*}/K00anacron
+    done
+fi
+
+# No point, really
+rm -f /root/etc/rc?.d/[SK]??postfix
+
+# Avoid clobbering the user's clock
+rm -f /root/etc/rc?.d/K??hwclock.sh
+
+# Disable readahead since it doesn't play well with squashfs + unionfs
+# use chmod instead of mv to not trigger unionfs bugs.
+if [ -e /root/sbin/readahead-list ]; then
+    chmod -x /root/sbin/readahead-list
+fi
+
+log_end_msg
+
+exit 0


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/25configure_init
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/30accessibility
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/30accessibility	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/30accessibility	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Configuring accessibility options..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+gconf_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gconf2 2>/dev/null) || gconf_version=""
+
+gct() {
+    if [ "$gconf_version" ]; then
+        chroot /root sudo -u "$USERNAME" gconftool-2 "$@"
+    fi
+}
+
+kderc_addtoprefixes() {
+    if [ -e "/root/etc/kderc" ]; then
+        sed -i "s|\\(prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/\\)|\\1,$1|" /root/etc/kderc
+    fi
+}
+
+for x in $(cat /proc/cmdline); do
+                case $x in
+                        # Lesser Visual Impairment
+                        access=v1)
+                        gct -s -t string /desktop/gnome/interface/gtk_theme HighContrastLargePrint
+                        gct -s -t string /desktop/gnome/interface/icon_theme HighContrast
+                        gct -s -t string /desktop/gnome/interface/monospace_font_name "monospace 18"
+                        gct -s -t string /desktop/gnome/interface/font_name "sans 18"
+                        gct -s -t string /apps/metacity/general/theme Atlanta
+                        gct -s -t string /desktop/gnome/background/picture_filename ""
+                        gct -s -t string /desktop/gnome/background/picture_options none
+                        gct -s -t string /desktop/gnome/background/primary_color \#666666
+                        gct -s -t string /desktop/gnome/background/secondary_color \#7F7F7F
+                        gct -s -t string /desktop/gnome/background/color_shading_type solid
+                        gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48
+                        gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass
+
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/
+                        if [ -d /root/usr/share/xubuntu-default-settings/accessibility ]; then
+                            cp -a /root/usr/share/xubuntu-default-settings/accessibility/* /root/etc/xdg/
+                        fi
+                        ;;
+                        # Moderate Visual Impairment
+                        access=v2)
+                        gct -s -t bool /desktop/gnome/interface/accessibility true
+                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca]
+                        if [ -e /root/usr/share/pycentral/gnome-orca/site-packages/orca/settings.py ]; then
+                            sed -i '/^enableSpeech\W/ s/True/False/;/^enableMagnifier/ s/False/True/' /root/usr/share/pycentral/gnome-orca/site-packages/orca/settings.py
+                        fi
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-impairment/
+                        ;;
+                        # Blindness
+                        access=v3)
+                        gct -s -t bool /desktop/gnome/sound/enable_esd false
+                        gct -s -t bool /desktop/gnome/interface/accessibility true
+                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca]
+                        ;;
+                        # Minor Motor Difficulties
+                        access=m1)
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true
+                        gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
+                        gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true
+                        gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700
+                        gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10
+
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/
+                        if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then
+                            sed -i 's/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml
+                        fi 
+                        ;;
+                        # Motor Difficulties - pointing devices
+                        access=m2)
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
+			gct -s -t bool /desktop/gnome/interface/accessibility true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false
+                        gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
+                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [onboard]
+
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/
+                        if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then
+                            sed -i '/Sticky/ s/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml
+                        fi 
+                        ;;
+		esac
+done
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/30accessibility
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/31disable_update_notifier
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/31disable_update_notifier	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/31disable_update_notifier	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Disabling update-notifier..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+# For GNOME, we divert away apt-check to avoid a regular 'apt-get update'
+# equivalent in the live session. We want to run update-notifier for crash
+# report handling.
+chroot /root dpkg-divert --add --rename --quiet \
+	/usr/lib/update-notifier/apt-check
+ln -s /bin/true /root/usr/lib/update-notifier/apt-check
+
+# For KDE, adept_notifier's only useful function at the moment is an
+# 'apt-get update' equivalent, so we disable it entirely.
+rm -f /root/usr/share/autostart/adept_notifier_auto.desktop
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/31disable_update_notifier
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/32disable_hibernation
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/32disable_hibernation	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/32disable_hibernation	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Configuring power management..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+
+gpm_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gnome-power-manager 2>/dev/null) || panel_version=""
+if [ -n "$gpm_version" ]; then
+#    casper-reconfigure /root gnome-power-manager
+    chroot /root sudo -u "$USERNAME" gconftool-2 -s -t bool /apps/gnome-power-manager/can_hibernate false
+    chroot /root sudo -u "$USERNAME" gconftool-2 -s -t bool /apps/gnome-power-manager/can_suspend false
+fi
+
+if [ -d /root/usr/share/kubuntu-default-settings/kde-profile/default/share/config ]; then
+    echo "disableSuspend=1" >> /root/usr/share/kubuntu-default-settings/kde-profile/default/share/config/power-managerrc
+    echo "disableHibernate=1" >> /root/usr/share/kubuntu-default-settings/kde-profile/default/share/config/power-managerrc
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/32disable_hibernation
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/33enable_apport_crashes
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/33enable_apport_crashes	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/33enable_apport_crashes	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+PREREQ=""
+DESCRIPTION="Enabling notifications about program crashes..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+update_notifier_version=$(chroot /root dpkg-query -W --showformat='${Version}' update-notifier 2>/dev/null) || update_notifier_version=""
+if [ -n "$update_notifier_version" ]; then
+    chroot /root sudo -u "$USERNAME" gconftool-2 -t bool -s /apps/update-notifier/show_apport_crashes true
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/33enable_apport_crashes
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/34disable_kwallet
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/34disable_kwallet	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/34disable_kwallet	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,25 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Disabling kwallet..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+rm -f /root/usr/share/services/kded/kwalletd.desktop
+
+log_end_msg
\ No newline at end of file


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/34disable_kwallet
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/35fix_language_selector
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/35fix_language_selector	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/35fix_language_selector	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,32 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Fixing language selector..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+log_begin_msg "$DESCRIPTION"
+
+if [ -e /root/usr/share/applications/language-selector.desktop ]; then
+    sed -i '/^Exec/ s|/usr/bin/gnome-language-selector|"& -n"|' /root/usr/share/applications/language-selector.desktop
+
+fi
+
+if [ -x /root/usr/bin/fontconfig-voodoo ]; then
+    chroot /root fontconfig-voodoo --auto --quiet || true
+fi
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/35fix_language_selector
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/40install_driver_updates
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/40install_driver_updates	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/40install_driver_updates	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,40 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Installing driver updates..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+if [ ! -d /tmp/driver-updates ]; then
+	exit 0
+fi
+
+log_begin_msg "$DESCRIPTION"
+
+install_dir=/var/cache/driver-updates
+
+mkdir "/root$install_dir"
+cp -a /tmp/driver-updates/*.deb "/root$install_dir/"
+
+# We cannot leave packages in a bad state. So if the install fails, remove
+# it. This will get caught in casper.log.
+for deb in "/root$install_dir"/*; do
+	if ! chroot /root dpkg -i "$install_dir/$deb"; then
+		chroot /root dpkg -P "${deb%%_*}"
+	fi
+done
+
+log_end_msg


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/40install_driver_updates
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-bottom/41apt_cdrom
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-bottom/41apt_cdrom	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-bottom/41apt_cdrom	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,24 @@
+#! /bin/sh
+
+PREREQ=""
+DESCRIPTION="Adding APT-CDROM source..."
+
+. /scripts/casper-functions
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+mkdir -p /root/cdrom
+mount -n -o bind /cdrom /root/cdrom
+chroot /root apt-cdrom -m add
+umount /root/cdrom


Property changes on: dists/trunk/live-initramfs/scripts/casper-bottom/41apt_cdrom
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/scripts/casper-functions
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-functions	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-functions	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,21 @@
+
+. /scripts/functions
+
+# Override this so we don't call PROGRESS
+log_end_msg()
+{
+	if [ -x /sbin/usplash_write ]; then
+		/sbin/usplash_write "SUCCESS ok"
+	fi
+	_log_msg "Done."
+}
+
+# Print a message and wait for enter
+log_wait_msg()
+{
+	if [ -x /sbin/usplash_write ]; then
+		/sbin/usplash_write "INPUTENTER $@"
+		read nunya < /dev/.initramfs/usplash_outfifo
+	fi
+	_log_msg "Waiting: $@ ..."
+}

Added: dists/trunk/live-initramfs/scripts/casper-helpers
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-helpers	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-helpers	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,197 @@
+## Casper helper functions, used by casper on boot and by casper-snapshot
+
+if [ "${BUILD_SYSTEM}" = "Ubuntu" ]; then
+    MP_QUIET="-Q"
+elif [ "${BUILD_SYSTEM}" = "Debian" ]; then
+    MP_QUIET="-q"
+else
+    MP_QUIET=""
+fi
+
+if [ ! -x "/bin/fstype" ]; then
+    # klibc not in path -> not in initramfs
+    export PATH="${PATH}:/usr/lib/klibc/bin"
+fi
+
+sys2dev() {
+    sysdev=${1#/sys}
+    echo "/dev/$(udevinfo -q name -p ${sysdev} 2>/dev/null|| echo ${sysdev##*/})"
+}
+
+subdevices() {
+    sysblock=$1
+    r=""
+    for dev in "${sysblock}" "${sysblock}"/*; do
+        if [ -e "${dev}/dev" ]; then
+            r="${r} ${dev}"
+        fi
+    done
+    echo ${r}
+}
+
+get_fstype() {
+    local FSTYPE
+    local FSSIZE
+    eval $(fstype < $1)
+    if [ "$FSTYPE" != "unknown" ]; then
+        echo $FSTYPE
+        return 0
+    fi
+    /lib/udev/vol_id -t $1 2>/dev/null
+}
+
+where_is_mounted() {
+    device=$1
+    if grep -q "^$device " /proc/mounts; then
+        grep "^$device " /proc/mounts | read d mountpoint rest
+        echo $mountpoint
+        return 0
+    fi
+    return 1
+}
+
+lastline() {
+    while read lines ; do
+        line=${lines}
+    done
+    echo "${line}"
+}
+
+base_path ()
+{
+    testpath="${1}"
+    mounts="$(awk '{print $2}' /proc/mounts)"
+    testpath="$(busybox realpath ${testpath})"
+
+    while true ; do
+        if echo "${mounts}" | grep -qs "^${testpath}" ; then
+            set -- `echo "${mounts}" | grep "^${testpath}" | lastline`
+            echo ${1}
+            break
+        else
+            testpath=`dirname $testpath`
+        fi
+    done
+}
+
+fs_size ()
+{
+    # Returns used/free fs kbytes + 5% more
+    # You could pass a block device as $1 or the mount point as $2
+
+    dev="${1}"
+    mountp="${2}"
+    used="${3}"
+
+    if [ -z "${mountp}" ]; then
+        mountp=$(where_is_mounted "${dev}")
+        if [ "$?" -gt 0 ]; then
+            mountp="/mnt/tmp_fs_size"
+            mkdir -p "${mountp}"
+            mount -t $(get_fstype "${dev}") -o ro "${dev}" "${mountp}"
+            doumount=1
+        fi
+    fi
+
+    if [ "${used}" = "used" ]; then
+        size=$(du -ks ${mountp} | cut -f1)
+        size=$(expr ${size} + ${size} / 20 ) # FIXME: 5% more to be sure
+    else
+        # free space
+        size="$(df -k | grep -s ${mountp} | awk '{print $4}')"
+    fi
+
+    if [ -n "${doumount}" ]; then
+        umount "${mountp}"
+        rmdir "${mountp}"
+    fi
+    echo "${size}"
+}
+
+setup_loop() {
+    local fspath=$1
+    local module=$2
+    local pattern=$3
+    local offset=$4
+
+    modprobe ${MP_QUIET} -b "$module"
+    udevsettle
+
+    for loopdev in $pattern; do
+        if [ "$(cat $loopdev/size)" -eq 0 ]; then
+            dev=$(sys2dev "${loopdev}")
+            if [ -n "$offset" ]; then
+                losetup -o "$offset" "$dev" "$fspath"
+            else
+                losetup "$dev" "$fspath"
+            fi
+            echo "$dev"
+            return 0
+        fi
+    done
+    panic "No loop devices available"
+}
+
+try_mount ()
+{
+    dev="${1}"
+    mountp="${2}"
+    opts="${3}"
+
+    if where_is_mounted ${dev} > /dev/null; then
+        mount -o remount,"${opts}" ${dev} $(where_is_mounted ${dev}) || panic "Remounting failed"
+        mount -o bind $(where_is_mounted ${dev}) ${mountp} || panic "Cannot bind-mount"
+    else
+        mount -t $(get_fstype "${dev}") -o "${opts}" "${dev}" "${mountp}" || panic "Cannot mount ${dev} on ${mountp}"
+    fi
+}
+
+find_cow_device() {
+    pers_label="${1}"
+    cow_backing="/${pers_label}-backing"
+    for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop); do
+        for dev in $(subdevices "${sysblock}"); do
+            devname=$(sys2dev "${dev}")
+            if [ "$(/lib/udev/vol_id -l $devname 2>/dev/null)" = "${pers_label}" ]; then
+                echo "$devname"
+                return
+            elif [ "$(get_fstype ${devname})" = "vfat" ]; then # FIXME: all supported block devices should be scanned
+                mkdir -p "${cow_backing}"
+                try_mount "${devname}" "${cow_backing}" "rw"
+                if [ -e "${cow_backing}/${pers_label}" ]; then
+                    echo $(setup_loop "${cow_backing}/${pers_label}" "loop" "/sys/block/loop*")
+                    return 0
+                else
+                    umount ${cow_backing}
+                fi
+            fi
+        done
+    done
+}
+
+find_files()
+# return the first of $filenames found on vfat and ext2 devices
+# FIXME: merge with above function
+{
+    filenames="${1}"
+    snap_backing="/snap-backing"
+    for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop); do
+        for dev in $(subdevices "${sysblock}"); do
+            devname=$(sys2dev "${dev}")
+            devfstype="$(get_fstype ${devname})"
+            if [ "${devfstype}" = "vfat" ] ||  [ "${devfstype}" = "ext2" ] ; then # FIXME: all supported block devices should be scanned
+                mkdir -p "${snap_backing}"
+                try_mount "${devname}" "${snap_backing}" "ro"
+                for filename in ${filenames}; do
+                    if [ -e "${snap_backing}/${filename}" ]; then
+                        echo "${devname} ${snap_backing} ${filename}"
+                        return 0
+                    fi
+                done
+                umount ${snap_backing}
+            fi
+        done
+    done
+}
+
+

Added: dists/trunk/live-initramfs/scripts/casper-premount/10driver_updates
===================================================================
--- dists/trunk/live-initramfs/scripts/casper-premount/10driver_updates	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/scripts/casper-premount/10driver_updates	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+PREREQ=""
+. /scripts/casper-functions
+. /scripts/casper-helpers
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+# get pre-requisites
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+mountpoint=/cdrom
+
+is_updates_path() {
+	# Driver packages are stored in ubuntu-drivers/<kver>/
+	# subdirectory. Each package contains a module for a specific
+	# kernel flavour.
+	path=$1
+	kbase=$(uname -r | sed 's/^\([0-9]*\.[0-9]*\.[0-9]*\)-.*/\1/')
+	update_dir="$path/ubuntu-drivers/$kbase"
+	if [ -d "$update_dir" ]; then
+		if [ "$(echo $update_dir/*_$DPKG_ARCH.deb)" != \
+			"$update_dir/*_$DPKG_ARCH.deb" ]; then
+			echo "$update_dir"
+			return 0;
+		fi
+	fi
+	return 1;
+}
+
+is_nice_device() {
+    sysfs_path="${1#/sys}"
+    if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-[ide|scsi|usb])"; then
+        return 0
+    fi
+    return 1
+}
+
+is_supported_fs () {
+    # FIXME: do something better like the scan of supported filesystems
+    fstype="${1}"
+    case ${fstype} in
+        vfat|iso9660|udf|ext2|ext3|ntfs)
+            return 0
+            ;;
+    esac
+    return 1
+}
+
+check_dev_updates ()
+{
+    sysdev="${1}"
+    devname="${2}"
+    if [ -z "${devname}" ]; then
+        devname=$(sys2dev "${sysdev}")
+    fi
+
+    fstype=$(get_fstype "${devname}")
+    if is_supported_fs ${fstype}; then
+        mount -t ${fstype} -o ro "${devname}" $mountpoint || continue
+        if is_updates_path $mountpoint; then
+            return 0
+        else
+            umount $mountpoint
+        fi
+    fi
+
+    return 1
+}
+
+find_driver_updates() {
+    for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do
+        devname=$(sys2dev "${sysblock}")
+        fstype=$(get_fstype "${devname}")
+        if /lib/udev/cdrom_id ${devname} > /dev/null; then
+            if check_dev_updates "null" "${devname}" ; then
+                return 0
+            fi
+        elif is_nice_device "${sysblock}" ; then
+            for dev in $(subdevices "${sysblock}"); do
+                if check_dev_updates "${dev}" ; then
+                    return 0
+                fi
+            done
+        fi
+    done
+    return 1
+}
+
+pulsate() {
+    if [ -x /sbin/usplash_write ]; then
+        /sbin/usplash_write "PULSATE"
+    fi
+}
+
+
+updates="false"
+
+for x in $(cat /proc/cmdline); do
+	case $x in
+		debian-installer/driver-update=*)
+			updates=${x#debian-installer/driver-update=}
+			;;
+	esac
+done
+
+if [ "$updates" != "true" ]; then
+	log_end_msg
+	exit 0
+fi
+
+# Not sure what to do for network installs. I assume there isn't even a CD
+# for this anyway, so fail.
+if [ -n "${NETBOOT}" ]; then
+	log_end_msg
+	exit 0;
+fi
+
+#if chroot /root [ -f /etc/gdm/gdm-cdd.conf ]; then
+#    GDMCONF=/etc/gdm/gdm-cdd.conf
+#else
+#    GDMCONF=/etc/gdm/gdm.conf
+#fi
+
+eject
+log_wait_msg "Insert a driver CD and press ENTER ($DPKG_ARCH)"
+
+log_begin_msg "Looking for driver update CD"
+
+for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do
+	updates_root=$(find_driver_updates)
+	if [ "${updates_root}" ]; then
+		break;
+	fi
+	sleep 1
+done
+
+log_end_msg
+
+if [ -z "${updates_root}" ]; then
+	log_begin_msg "Could not find driver updates"
+	log_wait_msg "Re-insert install CD and press ENTER"
+	exit 0
+fi
+
+log_begin_msg "Copying driver updates to temporary location"
+
+mkdir -p /tmp/driver-updates
+cp $updates_root/*_$DPKG_ARCH.deb /tmp/driver-updates/
+umount $mountpoint
+eject
+
+log_end_msg
+
+log_wait_msg "Re-insert install CD and press ENTER."


Property changes on: dists/trunk/live-initramfs/scripts/casper-premount/10driver_updates
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/ubiquity-hooks/20xconfig
===================================================================
--- dists/trunk/live-initramfs/ubiquity-hooks/20xconfig	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/ubiquity-hooks/20xconfig	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,11 @@
+#! /bin/sh
+set -e
+
+if [ -f /etc/X11/xorg.conf ]; then
+    cp -a /etc/X11/xorg.conf /target/etc/X11/xorg.conf
+    # requires x11-common (>= 7.0.0-0ubuntu1)
+    mkdir -p /target/var/lib/x11
+    chroot /target sh -c 'md5sum /etc/X11/xorg.conf > /var/lib/x11/xorg.conf.md5sum'
+fi
+
+exit 0


Property changes on: dists/trunk/live-initramfs/ubiquity-hooks/20xconfig
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/ubiquity-hooks/22gnome_panel_data
===================================================================
--- dists/trunk/live-initramfs/ubiquity-hooks/22gnome_panel_data	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/ubiquity-hooks/22gnome_panel_data	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,8 @@
+#! /bin/sh
+set -e
+
+if laptop-detect; then
+    casper-reconfigure /target gnome-panel-data
+fi
+
+exit 0


Property changes on: dists/trunk/live-initramfs/ubiquity-hooks/22gnome_panel_data
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/ubiquity-hooks/25modules
===================================================================
--- dists/trunk/live-initramfs/ubiquity-hooks/25modules	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/ubiquity-hooks/25modules	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,8 @@
+#! /bin/sh
+set -e
+
+if [ -f /etc/modules ]; then
+    cp -a /etc/modules /target/etc/modules
+fi
+
+exit 0


Property changes on: dists/trunk/live-initramfs/ubiquity-hooks/25modules
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/ubiquity-hooks/30accessibility
===================================================================
--- dists/trunk/live-initramfs/ubiquity-hooks/30accessibility	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/ubiquity-hooks/30accessibility	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,95 @@
+#!/bin/sh
+
+. /usr/share/debconf/confmodule
+
+PREREQ=""
+DESCRIPTION="Configuring accessibility options..."
+db_get passwd/username
+USERNAME="$RET"
+
+gct() {
+    chroot /target sudo -u "$USERNAME" gconftool-2 "$@"
+}
+
+kderc_addtoprefixes() {
+    if [ -e "/target/etc/kderc" ]; then
+        sed -i "s|\\(prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/\\)|\\1,$1|" /target/etc/kderc
+    fi
+}
+
+for x in $(cat /proc/cmdline); do
+                case $x in
+                        # Lesser Visual Impairment
+                        access=v1)
+                        gct -s -t string /desktop/gnome/interface/gtk_theme HighContrastLargePrint
+                        gct -s -t string /desktop/gnome/interface/icon_theme HighContrast
+                        gct -s -t string /desktop/gnome/interface/monospace_font_name "monospace 18"
+                        gct -s -t string /desktop/gnome/interface/font_name "sans 18"
+                        gct -s -t string /apps/metacity/general/theme Atlanta
+                        gct -s -t string /desktop/gnome/background/picture_filename ""
+                        gct -s -t string /desktop/gnome/background/picture_options none
+                        gct -s -t string /desktop/gnome/background/primary_color \#666666
+                        gct -s -t string /desktop/gnome/background/secondary_color \#7F7F7F
+                        gct -s -t string /desktop/gnome/background/color_shading_type solid
+                        gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48
+                        gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/
+                        if [ -d /target/usr/share/xubuntu-default-settings/accessibility ]; then
+                            cp -a /target/usr/share/xubuntu-default-settings/accessibility/* /target/etc/xdg/
+                        fi
+                        ;;
+                        # Moderate Visual Impairment
+                        access=v2)
+                        gct -s -t bool /desktop/gnome/interface/accessibility true
+                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca]
+
+                        if [ -d /usr/share/xubuntu-default-settings ]; then
+                          apt-install gnome-orca gnome-mag
+                        fi
+
+                        if [ -e /target/usr/share/pycentral/gnome-orca/site-packages/orca/settings.py ]; then
+                            sed -i '/^enableSpeech\W/ s/True/False/;/^enableMagnifier/ s/False/True/' /target/usr/share/pycentral/gnome-orca/site-packages/orca/settings.py
+                        fi
+
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-impairment/
+                        ;;
+                        # Blindness
+                        access=v3)
+                        gct -s -t bool /desktop/gnome/sound/enable_esd false
+                        gct -s -t bool /desktop/gnome/interface/accessibility true
+                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca]
+
+                        if [ -d /usr/share/xubuntu-default-settings ]; then
+                          apt-install gnome-orca
+                        fi
+                        ;;
+                        # Minor Motor Difficulties
+                        access=m1)
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true
+                        gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
+                        gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true
+                        gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700
+                        gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/
+                        if [ -e /target/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then
+                            sed -i 's/0/1/' /target/etc/xdg/xfce4/mcs_settings/keyboard.xml
+                        fi
+                        ;;
+                        # Motor Difficulties - pointing devices
+                        access=m2)
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
+			gct -s -t bool /desktop/gnome/interface/accessibility true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
+                        gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false
+                        gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
+                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [onboard]
+                        kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/
+                        if [ -e /target/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then
+                            sed -i '/Sticky/ s/0/1/' /target/etc/xdg/xfce4/mcs_settings/keyboard.xml
+                        fi
+                        ;;
+		esac
+done


Property changes on: dists/trunk/live-initramfs/ubiquity-hooks/30accessibility
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/ubiquity-hooks/32gnome_power_manager
===================================================================
--- dists/trunk/live-initramfs/ubiquity-hooks/32gnome_power_manager	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/ubiquity-hooks/32gnome_power_manager	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,6 @@
+#! /bin/sh
+set -e
+
+casper-reconfigure /target gnome-power-manager
+
+exit 0


Property changes on: dists/trunk/live-initramfs/ubiquity-hooks/32gnome_power_manager
___________________________________________________________________
Name: svn:executable
   + *

Added: dists/trunk/live-initramfs/ubiquity-hooks/40install_driver_updates
===================================================================
--- dists/trunk/live-initramfs/ubiquity-hooks/40install_driver_updates	2007-05-05 20:37:59 UTC (rev 1268)
+++ dists/trunk/live-initramfs/ubiquity-hooks/40install_driver_updates	2007-05-05 20:40:51 UTC (rev 1269)
@@ -0,0 +1,23 @@
+#! /bin/sh
+set -e
+
+if [ ! -d /var/cache/driver-updates ]; then
+	exit 0
+fi
+
+install_dir=/var/cache/driver-updates
+
+trap "rm -rf /target$install_dir" EXIT HUP INT QUIT TERM
+mkdir -p "/target$install_dir"
+cp -a /var/cache/driver-updates/*.deb "/target$install_dir/" || exit 0
+
+# We cannot leave packages in a bad state. So if the install fails, remove
+# it. This will get caught in /var/log/syslog.
+for deb in "/target$install_dir"/*; do
+	[ -f "$deb" ] || continue
+	if ! chroot /target dpkg -i "$install_dir/$deb"; then
+		chroot /target dpkg -P "${deb%%_*}"
+	fi
+done
+
+exit 0


Property changes on: dists/trunk/live-initramfs/ubiquity-hooks/40install_driver_updates
___________________________________________________________________
Name: svn:executable
   + *




More information about the Debian-live-changes mailing list