Adding casper 1.71+debian-1. debian/1.71+debian-1
authorDaniel Baumann <daniel@debian.org>
Sun, 23 Sep 2007 12:46:25 +0000 (14:46 +0200)
committerDaniel Baumann <daniel@debian.org>
Sun, 23 Sep 2007 12:46:25 +0000 (14:46 +0200)
36 files changed:
bin/casper-snapshot [new file with mode: 0644]
debian/casper.init
debian/casper.install
debian/casper.manpages
debian/changelog
debian/changelog.upstream
debian/control
debian/control.debian
debian/control.ubuntu
debian/manpage/casper-snapshot.1 [new file with mode: 0644]
debian/manpage/casper.7
debian/rules
hooks/casper
scripts/casper
scripts/casper-bottom/05mountpoints
scripts/casper-bottom/10adduser
scripts/casper-bottom/12fstab
scripts/casper-bottom/13swap
scripts/casper-bottom/14locales
scripts/casper-bottom/15autologin
scripts/casper-bottom/18hostname
scripts/casper-bottom/19keyboard
scripts/casper-bottom/20xconfig
scripts/casper-bottom/22gnome_panel_data
scripts/casper-bottom/22screensaver
scripts/casper-bottom/23etc_modules
scripts/casper-bottom/23networking
scripts/casper-bottom/24preseed
scripts/casper-bottom/25configure_init
scripts/casper-bottom/30accessibility
scripts/casper-bottom/31disable_update_notifier
scripts/casper-bottom/32disable_hibernation
scripts/casper-bottom/33disable_binary_drivers
scripts/casper-bottom/34disable_kwallet [new file with mode: 0755]
scripts/casper-bottom/35fix_language_selector [new file with mode: 0755]
scripts/casper-functions [new file with mode: 0644]

diff --git a/bin/casper-snapshot b/bin/casper-snapshot
new file mode 100644 (file)
index 0000000..d49034c
--- /dev/null
@@ -0,0 +1,226 @@
+#!/bin/sh
+
+# casper-snapshot - utility to do Debian Live systems snapshots
+#
+#   This program mount a /tmpfs under ~/Desktop and save the /cow
+#   filesystem in it for reusing in another session.
+#
+# Copyright (C) 2006 Marco Amadori <marco.amadori@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 ${1}`"
+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 ':'`
+fi
+
+Header ()
+{
+       echo "${PROGRAM} - utility to do Debian Live snapshots"
+       echo
+       echo "Usage: ${PROGRAM} [-c|--cow DIRECTORY] [-d|--dest DIRECTORY] [-o|--output FILE] [-t|--type TYPE]"
+       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, --destination: specifies the output snapshot directory (default: /home/\$USERNAME/Desktop/casper-snapshot)."
+       echo "  -o, --output: specifies the output image file (default: $type dependent)."
+       echo "  -t,--type: specifies the snapshot type between \'squashfs\', \'ext2\' or \'cpio\'.gz archive (default: cpio)"
+       exit 0
+}
+
+Version ()
+{
+       echo "${PROGRAM}, version ${VERSION}"
+       echo
+       echo "Copyright (C) 2006 Marco Amadori <marco.amadori@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)
+                       mksquashfs "${COW}" "${DEST}" || exit 1
+                       ;;
+               cpio)
+                       (cd "${COW}" && find . | cpio --quiet -o -H newc | gzip -9 > "${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
+}
+
+Lastline()
+{
+       while read lines ; do
+               line=${lines}
+       done
+       echo "${line}"
+}
+
+Base_path ()
+{
+       testpath="${1}"
+       mounts="`awk '{print $2}' /proc/mounts`"
+       testpath="`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
+}
+
+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
+       ARGUMENTS="`getopt --longoptions cow:,destination:,output:,type:,help,usage,version --name=${PROGRAM} --options c:d:o:t:,h,u,v --shell sh -- ${@}`"
+
+       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|--destination)
+                               SNAP_DEST="${2}"; shift 2 ;;
+                       -o|--output)
+                               SNAP_OUTPUT="${2}"; shift 2 ;;
+                       -t|--type)
+                               SNAP_TYPE="${2}"; shift 2 ;;
+                       -h|--help)
+                               Help; shift ;;
+                       -u|--usage)
+                               Usage ; shift ;;
+                       -v|--version)
+                               Version; shift ;;
+                       --)
+                               shift; break ;;
+                       *)
+                               echo "Internal error."; exit 1 ;;
+               esac
+       done
+}
+
+Defaults ()
+{
+       DEF_COW="/cow"
+
+       # Bad options handling
+       if [ -z "${SNAP_COW}" ]; then
+               COW="${DEF_COW}"
+       else
+               COW="${SNAP_COW}"
+       fi
+       if [ ! -d "${COW}" ]; then
+               Usage "Error: ${COW} is not a directory\nMaybe you booted with \"hide-cow\" as kernel parameter?"
+       fi
+
+       case "${SNAP_TYPE}" in
+               "cpio"|"squashfs"|"ext2")
+                       TYPE="${SNAP_TYPE}"
+                       ;;
+               "")
+                       TYPE="cpio" ;;
+               *)
+                       Usage "Error: unrecognized snapshot type"
+                       ;;
+       esac
+}
+
+Main ()
+{
+       Parse_args "${@}"
+       Defaults
+       Do_snapshot
+}
+
+Main "${@}"
index c69e387..ae1a1a4 100644 (file)
@@ -64,11 +64,11 @@ do_stop ()
        eject -p -m /live_media >/dev/null 2>&1
 
        # XXX - i18n
        eject -p -m /live_media >/dev/null 2>&1
 
        # XXX - i18n
-       echo -n "Please remove the disc and close the tray (if any) then press ENTER: "
+       echo "Please remove the disc and close the tray (if any) then press ENTER: "
        if [ -x /sbin/usplash_write ]; then
        if [ -x /sbin/usplash_write ]; then
-               /sbin/usplash_write "TIMEOUT 0"
-               /sbin/usplash_write "TEXT Please remove the disc, close the tray (if any)"
-               /sbin/usplash_write "TEXT and press ENTER to continue"
+               /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
        fi
 
        read x < /dev/console
@@ -76,8 +76,10 @@ do_stop ()
 
 case "$1" in
        start|restart|reload|force-reload|status)
 
 case "$1" in
        start|restart|reload|force-reload|status)
+               [ "$VERBOSE" != no ] && log_end_msg 0
                ;;
        stop)
                ;;
        stop)
+               log_begin_msg "Caching reboot files..."
                do_stop
                case "$?" in
                        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                do_stop
                case "$?" in
                        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
@@ -85,7 +87,7 @@ case "$1" in
                esac
                ;;
        *)
                esac
                ;;
        *)
-               echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+               log_success_msg "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
                exit 3
                ;;
 esac
                exit 3
                ;;
 esac
index 436f6d2..13d8134 100644 (file)
@@ -2,5 +2,6 @@ bin/casper-getty                sbin
 bin/casper-login               sbin
 bin/casper-preseed             usr/share/casper
 bin/casper-reconfigure         usr/share/casper
 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
 hooks                          usr/share/initramfs-tools
 scripts                                usr/share/initramfs-tools
index c16a42d..c455a7e 100644 (file)
@@ -1 +1,2 @@
 debian/manpage/casper.7
 debian/manpage/casper.7
+debian/manpage/casper-snapshot.1
index e930683..888457b 100644 (file)
@@ -1,3 +1,11 @@
+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@gmail.com>  Thu, 28 Sep 2006 16:04:54 +0200
+
 casper (1.68+debian-3) unstable; urgency=low
 
   * Really add casper manpage (Closes: #389867).
 casper (1.68+debian-3) unstable; urgency=low
 
   * Really add casper manpage (Closes: #389867).
index 0f50d72..e9288e9 100644 (file)
@@ -1,8 +1,39 @@
-casper (1.69) UNRELEASED; urgency=low
+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@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@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
   * 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).
 
 
- -- Tollef Fog Heen <tfheen@ubuntu.com>  Mon, 25 Sep 2006 14:54:57 +0200
+ -- Colin Watson <cjwatson@ubuntu.com>  Mon,  2 Oct 2006 10:58:19 +0100
 
 casper (1.68) edgy; urgency=low
 
 
 casper (1.68) edgy; urgency=low
 
index 34be909..1999790 100644 (file)
@@ -12,6 +12,7 @@ Depends: initramfs-tools (>= 0.40), user-setup, sudo
 Conflicts: usplash (<< 0.4-27)
 Recommends: live-package
 Suggests: dmsetup
 Conflicts: usplash (<< 0.4-27)
 Recommends: live-package
 Suggests: dmsetup
+Tag: admin::boot, admin::filesystem, implemented-in::shell, protocol::smb, role::plugin, scope::utility, special::completely-tagged, works-with-format::iso9660
 Description: Debian Live initramfs generator
  Casper provides an initramfs generator suited for booting a Debian Live systems
  from read only media. Useful to build live CDs.
 Description: Debian Live initramfs generator
  Casper provides an initramfs generator suited for booting a Debian Live systems
  from read only media. Useful to build live CDs.
index 34be909..1999790 100644 (file)
@@ -12,6 +12,7 @@ Depends: initramfs-tools (>= 0.40), user-setup, sudo
 Conflicts: usplash (<< 0.4-27)
 Recommends: live-package
 Suggests: dmsetup
 Conflicts: usplash (<< 0.4-27)
 Recommends: live-package
 Suggests: dmsetup
+Tag: admin::boot, admin::filesystem, implemented-in::shell, protocol::smb, role::plugin, scope::utility, special::completely-tagged, works-with-format::iso9660
 Description: Debian Live initramfs generator
  Casper provides an initramfs generator suited for booting a Debian Live systems
  from read only media. Useful to build live CDs.
 Description: Debian Live initramfs generator
  Casper provides an initramfs generator suited for booting a Debian Live systems
  from read only media. Useful to build live CDs.
index 6767acc..77c9cb2 100644 (file)
@@ -11,6 +11,7 @@ Section: misc
 Priority: extra
 Depends: initramfs-tools (>= 0.40ubuntu11), dmsetup, user-setup, sudo
 Conflicts: usplash (<< 0.4-27)
 Priority: extra
 Depends: initramfs-tools (>= 0.40ubuntu11), dmsetup, user-setup, sudo
 Conflicts: usplash (<< 0.4-27)
+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
 Description: Run a "live" preinstalled system from read-only media
 
 Package: ubiquity-casper
@@ -19,6 +20,7 @@ Depends: laptop-detect, sudo
 Conflicts: espresso-casper
 Replaces: espresso-casper
 Enhances: ubiquity
 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
 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
diff --git a/debian/manpage/casper-snapshot.1 b/debian/manpage/casper-snapshot.1
new file mode 100644 (file)
index 0000000..1e17251
--- /dev/null
@@ -0,0 +1,55 @@
+.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 \||\| \-\-destination
+.IR DIRECTORY \||\| FILE \|]
+.RB [\| \-o \||\| \-\-output
+.IR FILE \|]
+.RB [\| \-t \||\| \-\-type
+.IR TYPE \|]
+.PP
+.B make-live
+.RB \-h \||\| \-\-help
+.br
+.B make-live
+.RB \-u \||\| \-\-usage
+.br
+.B make-live
+.RB \-v \||\| \-\-version
+
+.SH DESCRIPTION
+Casper-snapshot is a script useful to build the right types of persistent image files supported by casper.
+
+.SH OPTIONS
+.TP
+.BI "\-c, \-\-cow" DIRECTORY
+specifies the input directory to be cloned in the image file.
+This parameters often does not need to be specified as the default of "/cow" for it 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, \-\-destination" DIRECTORY
+.TP
+.BI "\-o, \-\-output" FILE
+.TP
+.BI "\-t, \-\-type" TYPE
+
+.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@gmail.com>.
+.TP
+This manual page was written by Marco Amadori <marco.amadori@gmail.com>,
+for the Debian project (but may be used by others).
index c6763cf..1bc0b22 100644 (file)
@@ -1,4 +1,4 @@
-.TH CASPER 7 "Mon,  25 Sep 2006" "1.68" "Initramfs-tools hook"
+.TH CASPER 7 "Thu,  28 Sep 2006" "1.69" "Initramfs-tools hook"
 
 .SH NAME
 casper \- an hook for initramfs-tools to boot live systems.
 
 .SH NAME
 casper \- an hook for initramfs-tools to boot live systems.
@@ -8,15 +8,18 @@ casper \- an hook for initramfs-tools to boot live systems.
 As kernel parameter boot prompt.
 
 .SH DESCRIPTION
 As kernel parameter boot prompt.
 
 .SH DESCRIPTION
-Casper is an hook for initramfs-tools used to boot live systems like those created by make-live, this includes the Debian-Live isos, netboot tarballs, and usb stick image and Ubuntu live cds. At boot time it will look for a (often read only) media containing a "/casper" directory where root filesystems (often squashfs compressed) lies and create, using unionfs, a writable environment for debian like systems to boot from.
+Casper is an hook for initramfs-tools used to generate initramfs able to boot live systems like those created by make-live, this includes the Debian-Live isos, netboot tarballs, and usb stick image and Ubuntu live cds. At boot time it will look for a (often read-only) media containing a "/casper" directory where root filesystems (often squashfs compressed) lies and create, using unionfs, a writable environment for debian like systems to boot from.
 
 .SH RECOGNIZED BOOT OPTIONS
 .TP
 
 .SH RECOGNIZED BOOT OPTIONS
 .TP
+.B casper-getty
+This enable a special serial login shell (experimental).
+.TP
 .BI "host=" HOSTNAME " , userfullname=" USERFULLNAME " , username=" USERNAME
 Those parameters lets you override values read from the config file.
 .TP
 .BI "host=" HOSTNAME " , userfullname=" USERFULLNAME " , username=" USERNAME
 Those parameters lets you override values read from the config file.
 .TP
-.B casper-getty
-This enable a special serial login shell (experimental).
+.B "showmounts"
+Specifying this 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 application like "mono" which store binary paths on installation.
 .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 it if you want to use dhcp (default).
 .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 it if you want to use dhcp (default).
@@ -32,7 +35,7 @@ This tells casper to look for a network mount, to be specified by parameter "nfs
 Casper will look for persistent and snapshot partitions or files labeled "casper-rw", "home-rw", "casper-snap*", "home-snap*" and will try to, in order: mount as /cow the first, mount the second in /home, and just copy the contents of the latters in appropriate locations.
 .TP
 .B toram
 Casper will look for persistent and snapshot partitions or files labeled "casper-rw", "home-rw", "casper-snap*", "home-snap*" and will try to, in order: mount as /cow the first, mount the second in /home, and just copy the contents of the latters in appropriate locations.
 .TP
 .B toram
-Adding this parameter, casper will try to copy to ram the whole read-only media before mounting the root filesystem(s), it could need a lot of ram, according to the space used by the read only media.
+Adding this parameter, casper will try to copy to ram the whole read-only media before mounting the root filesystem(s), it could need a lot of ram, according to the space used by the read-only media.
 
 .SH FILES
 .B /etc/casper.conf
 
 .SH FILES
 .B /etc/casper.conf
@@ -46,10 +49,10 @@ works fully on amd64, i386 and ppc, it should too on other archs.
 Debian Live project <http://live.debian.net/>
 
 .SH SEE ALSO
 Debian Live project <http://live.debian.net/>
 
 .SH SEE ALSO
-.BR initramfs-tools(8), make-live(8), make-live.conf(8)
+.BR casper-snapshot(1), initramfs-tools(8), make-live(1), make-live.conf(5)
 
 .SH AUTHOR
 
 .SH AUTHOR
-casper was written by Tollen Fog Heen <tfheen@canonical.com>, Matt Zimmerman <mdz@canonical.com>, and Marco Amadori <marco.amadori@gmail.com>,
+casper was written by Tollen Fog Heen <tfheen@canonical.com>, Matt Zimmerman <mdz@canonical.com>, and Marco Amadori <marco.amadori@gmail.com>.
 .TP
 .TP
-This manual was written by Marco Amadori <marco.amadori@gmail.com>,
+This manual page was written by Marco Amadori <marco.amadori@gmail.com>,
 for the Debian project (but may be used by others).
 for the Debian project (but may be used by others).
index cb3bb04..9441b3a 100755 (executable)
@@ -20,6 +20,11 @@ endif
 
        # Building package
        $(MAKE) -C casper-md5check
 
        # Building package
        $(MAKE) -C casper-md5check
+       set -e; \
+       for x in bin/* scripts/casper scripts/casper-bottom/* \
+                ubiquity-hooks/*; do \
+               sh -n $$x; \
+       done
 
        touch build-stamp
 
 
        touch build-stamp
 
index f7fee12..2ebd188 100755 (executable)
@@ -84,4 +84,6 @@ manual_add_modules ohci1394
 # integrity check
 copy_exec /usr/lib/casper/casper-md5check /bin
 
 # integrity check
 copy_exec /usr/lib/casper/casper-md5check /bin
 
+cp /usr/share/initramfs-tools/scripts/casper-functions $DESTDIR/scripts
+
 auto_add_modules net
 auto_add_modules net
index dba4b4a..6f7bbb0 100644 (file)
@@ -29,28 +29,28 @@ fi
 # looking for casper specifics options as kernel parameters
 for x in $(cat /proc/cmdline); do
     case $x in
 # looking for casper specifics options as kernel parameters
 for x in $(cat /proc/cmdline); do
     case $x in
-       userfullname*)
-           export USERFULLNAME=${x#userfullname=} 
-           export CASPERCONF="changed"
-           ;;
-       host*)
-           export HOST=${x#host=} 
-           export CASPERCONF="changed"
-           ;;
-       username*)
-           export USERNAME=${x#username=} 
-           export CASPERCONF="changed"
-           ;;
+        userfullname*)
+            export USERFULLNAME=${x#userfullname=} 
+            export CASPERCONF="changed"
+            ;;
+        host*)
+            export HOST=${x#host=} 
+            export CASPERCONF="changed"
+            ;;
+        username*)
+            export USERNAME=${x#username=} 
+            export CASPERCONF="changed"
+            ;;
         netboot*)
             export NETBOOT=${x#netboot=} ;;
         toram)
             export TORAM=1 ;;
         netboot*)
             export NETBOOT=${x#netboot=} ;;
         toram)
             export TORAM=1 ;;
-        hide-cow)
-            export HIDECOW=1 ;;
+        showmounts)
+            export SHOWMOUNTS=1 ;;
         persistent)
             export PERSISTENT=1 ;;
         ip*)
         persistent)
             export PERSISTENT=1 ;;
         ip*)
-            STATICIP=${x#ip=} 
+            STATICIP=${x#ip=}
             if [ "${STATICIP}" == "" ]; then
                 STATICIP="frommedia"
             fi
             if [ "${STATICIP}" == "" ]; then
                 STATICIP="frommedia"
             fi
@@ -228,7 +228,7 @@ copy_to_ram() {
     size=$(expr ${size} + ${size}/20 ) # Fixme: 5% more to be sure
     needed_space=$(expr ${size} * 1024)
     freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - ))
     size=$(expr ${size} + ${size}/20 ) # Fixme: 5% more to be sure
     needed_space=$(expr ${size} * 1024)
     freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - ))
-    
+
     if [ ! ${freespace} -lt ${needed_space}  ] ; then
         [ "$quiet" != "y" ] && log_begin_msg "Not enough free memory to copy to ram"
         [ "$quiet" != "y" ] && log_end_msg
     if [ ! ${freespace} -lt ${needed_space}  ] ; then
         [ "$quiet" != "y" ] && log_begin_msg "Not enough free memory to copy to ram"
         [ "$quiet" != "y" ] && log_end_msg
@@ -288,7 +288,7 @@ do_netmount() {
     fi
 
     [ "$quiet" != "y" ] && log_begin_msg "Trying netboot from ${NFSROOT}"
     fi
 
     [ "$quiet" != "y" ] && log_begin_msg "Trying netboot from ${NFSROOT}"
-    
+
     if [ "${NETBOOT}" != "nfs" ] && do_cifsmount ; then
         rc=0
     elif do_nfsmount ; then
     if [ "${NETBOOT}" != "nfs" ] && do_cifsmount ; then
         rc=0
     elif do_nfsmount ; then
@@ -342,9 +342,12 @@ setup_unionfs() {
 
     modprobe "${MP_QUIET}" -b unionfs
 
 
     modprobe "${MP_QUIET}" -b unionfs
 
-    # run-init can't deal with this, but we're going to move all of these
-    # away before it runs anyway.
-    croot="/casper"
+    # 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=""
 
     # Let's just mount the read-only file systems first
     rofsstring=""
@@ -393,20 +396,9 @@ setup_unionfs() {
 
     mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount $cowdevice on /cow"
 
 
     mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount $cowdevice on /cow"
 
-    # Look for a snapshot to copy
-    
-
     mount -t unionfs -o dirs=/cow=rw:$rofsstring unionfs "$rootmnt" || panic "Unionfs mount failed"
 
     mount -t unionfs -o dirs=/cow=rw:$rofsstring unionfs "$rootmnt" || panic "Unionfs mount failed"
 
-    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
+    # Look for a snapshot to copy
 
     # Adding other custom mounts
     if [ ! -z "${PERSISTENT}" ]; then
 
     # Adding other custom mounts
     if [ ! -z "${PERSISTENT}" ]; then
@@ -418,10 +410,21 @@ setup_unionfs() {
         fi
     fi
 
         fi
     fi
 
-    if [ -z "${HIDECOW}" ]; then
-        mkdir -p "$rootmnt/cow"
-        mount -o bind /cow "$rootmnt/cow"
+    if [ ! -z "${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
     fi
     fi
+
+    # shows cow fs on /cow for use by casper-snapshot
+    mkdir -p "$rootmnt/cow"
+    mount -o bind /cow "$rootmnt/cow"
 }
 
 is_usb_device() {
 }
 
 is_usb_device() {
@@ -463,11 +466,11 @@ find_livefs() {
             done
         elif [ "${fstype}" = "squashfs" ||  \
                 "${fstype}" = "ext2" ]; then
             done
         elif [ "${fstype}" = "squashfs" ||  \
                 "${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.
             # 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
             ln -s "${devname}" "${devname}.${fstype}"
             echo "${devname}.${fstype}"
             return
@@ -475,6 +478,12 @@ find_livefs() {
     done
 }
 
     done
 }
 
+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"
 set_usplash_timeout() {
     if [ -x /sbin/usplash_write ]; then
         /sbin/usplash_write "TIMEOUT 120"
@@ -486,9 +495,10 @@ mountroot() {
     exec 7>&2
     exec > casper.log
     exec 2>&1
     exec 7>&2
     exec > casper.log
     exec 2>&1
-    
+
     set_usplash_timeout
     [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-premount"
     set_usplash_timeout
     [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-premount"
+    pulsate
     run_scripts /scripts/casper-premount
     [ "$quiet" != "y" ] && log_end_msg
 
     run_scripts /scripts/casper-premount
     [ "$quiet" != "y" ] && log_end_msg
 
@@ -515,7 +525,7 @@ mountroot() {
         if [ "$?" -gt 0 ]; then
             panic "Unable to find a medium containing a live file system"
         fi
         if [ "$?" -gt 0 ]; then
             panic "Unable to find a medium containing a live file system"
         fi
-            
+
         if [ ! -z "${TORAM}" ]; then
             copy_to_ram "${livefs_root}"
         fi
         if [ ! -z "${TORAM}" ]; then
             copy_to_ram "${livefs_root}"
         fi
@@ -529,6 +539,7 @@ mountroot() {
     maybe_break casper-bottom
     [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom"
 
     maybe_break casper-bottom
     [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom"
 
+    pulsate
     run_scripts /scripts/casper-bottom
     [ "$quiet" != "y" ] && log_end_msg
 
     run_scripts /scripts/casper-bottom
     [ "$quiet" != "y" ] && log_end_msg
 
index 20a28fd..be76755 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Moving mount points..."
 
 PREREQ=""
 DESCRIPTION="Moving mount points..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index e85f947..af7754b 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Adding live session user..."
 
 PREREQ=""
 DESCRIPTION="Adding live session user..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 00e5c50..ac39396 100755 (executable)
@@ -4,7 +4,7 @@ PREREQ=""
 DESCRIPTION="Configuring fstab..."
 FSTAB=/root/etc/fstab
 
 DESCRIPTION="Configuring fstab..."
 FSTAB=/root/etc/fstab
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 44d73f3..986b079 100755 (executable)
@@ -4,7 +4,7 @@ PREREQ=""
 DESCRIPTION="Setting up swap..."
 FSTAB=/root/etc/fstab
 
 DESCRIPTION="Setting up swap..."
 FSTAB=/root/etc/fstab
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index f69fa0f..4297a58 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Setting up locales..."
 
 PREREQ=""
 DESCRIPTION="Setting up locales..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index ff88721..cdaa038 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Setting up automatic login..."
 
 PREREQ=""
 DESCRIPTION="Setting up automatic login..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 7ac5b00..19ac61f 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Setting hostname..."
 
 PREREQ=""
 DESCRIPTION="Setting hostname..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index d738faf..1d833ad 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Setting up keyboard..."
 
 PREREQ=""
 DESCRIPTION="Setting up keyboard..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
@@ -39,7 +39,7 @@ for x in $(cat /proc/cmdline); do
 done
 
 if [ "$cslayout" ] && [ -x /root/bin/setupcon ] && \
 done
 
 if [ "$cslayout" ] && [ -x /root/bin/setupcon ] && \
-   [ -f /etc/default/console-setup ]; then
+   [ -f /root/etc/default/console-setup ]; then
         chroot /root sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$cslayout\"/" \
                 /etc/default/console-setup
         if [ "$csvariant" ]; then
         chroot /root sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$cslayout\"/" \
                 /etc/default/console-setup
         if [ "$csvariant" ]; then
index b8a4552..3916f41 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Configuring X..."
 
 PREREQ=""
 DESCRIPTION="Configuring X..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 5509ce1..4dd5d9d 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Configuring gnome-panel-data..."
 
 PREREQ=""
 DESCRIPTION="Configuring gnome-panel-data..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index ff3ec81..e5965e8 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Configuring screensaver..."
 
 PREREQ=""
 DESCRIPTION="Configuring screensaver..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 622d96e..754a832 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Preconfiguring /etc/modules..."
 
 PREREQ=""
 DESCRIPTION="Preconfiguring /etc/modules..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 8f4b698..f410321 100755 (executable)
@@ -4,7 +4,7 @@ PREREQ=""
 DESCRIPTION="Preconfiguring networking..."
 IFFILE="/root/etc/network/interfaces"
 
 DESCRIPTION="Preconfiguring networking..."
 IFFILE="/root/etc/network/interfaces"
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 98a9864..cd52467 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Loading preseed file..."
 
 PREREQ=""
 DESCRIPTION="Loading preseed file..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs ()
 {
 
 prereqs ()
 {
@@ -26,6 +26,9 @@ for x in $(cat /proc/cmdline); do
                preseed/file=*)
                        location="${x#preseed/file=}"
                        ;;
                preseed/file=*)
                        location="${x#preseed/file=}"
                        ;;
+               file=*)
+                       location="${x#file=}"
+                       ;;
                */*=*)
                        question="${x%%=*}"
                        value="${x#*=}"
                */*=*)
                        question="${x%%=*}"
                        value="${x#*=}"
index 84fa741..573b2a6 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Setting up init..."
 
 PREREQ=""
 DESCRIPTION="Setting up init..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index e8e7e8a..cc64832 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Configuring accessibility options..."
 
 PREREQ=""
 DESCRIPTION="Configuring accessibility options..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 082b818..10b86a2 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Disabling update-notifier..."
 
 PREREQ=""
 DESCRIPTION="Disabling update-notifier..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index badcef6..47344fa 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Configuring power management..."
 
 PREREQ=""
 DESCRIPTION="Configuring power management..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
index 6bc2279..971ce8e 100755 (executable)
@@ -3,7 +3,7 @@
 PREREQ=""
 DESCRIPTION="Configuring some drivers..."
 
 PREREQ=""
 DESCRIPTION="Configuring some drivers..."
 
-. /scripts/functions
+. /scripts/casper-functions
 
 prereqs()
 {
 
 prereqs()
 {
@@ -23,3 +23,5 @@ log_begin_msg "$DESCRIPTION"
 if [ -e /root/etc/default/linux-restricted-modules-common ]; then
     echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common
 fi
 if [ -e /root/etc/default/linux-restricted-modules-common ]; then
     echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common
 fi
+
+log_end_msg
\ No newline at end of file
diff --git a/scripts/casper-bottom/34disable_kwallet b/scripts/casper-bottom/34disable_kwallet
new file mode 100755 (executable)
index 0000000..add7cca
--- /dev/null
@@ -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
diff --git a/scripts/casper-bottom/35fix_language_selector b/scripts/casper-bottom/35fix_language_selector
new file mode 100755 (executable)
index 0000000..96a1d6c
--- /dev/null
@@ -0,0 +1,28 @@
+#! /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
+
+log_end_msg
diff --git a/scripts/casper-functions b/scripts/casper-functions
new file mode 100644 (file)
index 0000000..9e36db7
--- /dev/null
@@ -0,0 +1,12 @@
+
+. /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."
+}
+