Adding casper 1.63+debian-1. debian/1.63+debian-1
authorDaniel Baumann <daniel@debian.org>
Sun, 23 Sep 2007 12:46:23 +0000 (14:46 +0200)
committerDaniel Baumann <daniel@debian.org>
Sun, 23 Sep 2007 12:46:23 +0000 (14:46 +0200)
24 files changed:
bin/casper-reconfigure
casper-md5check/Makefile
casper.conf
debian/changelog
debian/changelog.upstream
debian/control
debian/dirs
debian/init.d
debian/install
debian/patches/00list [deleted file]
debian/patches/01-conglomeration.dpatch [deleted file]
debian/rules
hooks/casper
scripts/casper
scripts/casper-bottom/01integrity_check
scripts/casper-bottom/05mountpoints
scripts/casper-bottom/10adduser
scripts/casper-bottom/14locales
scripts/casper-bottom/15autologin
scripts/casper-bottom/22gnome_panel_data
scripts/casper-bottom/23networking
scripts/casper-bottom/25configure_init
scripts/casper-bottom/33disable_binary_drivers
ubiquity-hooks/30accessibility [deleted file]

index 51f999b..628bff3 100755 (executable)
@@ -47,6 +47,6 @@ if [ -z "$version" ]; then
     exit 0
 fi
 
-runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload "$package"
+runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload -phigh "$package"
 
 exit 0
index 193ac69..4e5408f 100644 (file)
@@ -6,4 +6,4 @@ CFLAGS=$(getconf LFS_CFLAGS) -Wall -O2
 casper-md5check: casper-md5check.c md5.c
 
 clean:
-       rm *.o casper-md5check
+       rm -f *.o casper-md5check
index 6b16149..1596dff 100644 (file)
@@ -1,9 +1,8 @@
-# This file should go in 
-#  conf/conf.d/
+# This file should go in /etc/casper.conf
 # Supported variables are:
 # USERNAME, USERFULLNAME, HOST
 
-export USERNAME="ubuntu"
-export USERFULLNAME="Custom LiveCD user"
-export HOST="ubuntu"
+export USERNAME="casper"
+export USERFULLNAME="Live session user"
+export HOST="live"
 
index be7286b..62a5d3a 100644 (file)
@@ -1,3 +1,24 @@
+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@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).
+
+ -- Marco Amadori <marco.amadori@gmail.com>  Sun, 30 Jul 2006 19:10:23 +0200
+
 casper (1.61+debian-2) unstable; urgency=low
 
   * Set password for user to 'debian'.
index f979257..5385ac0 100644 (file)
@@ -1,3 +1,32 @@
+casper (1.63) edgy; urgency=low
+
+  [ Tollef Fog Heen ]
+  * Change "Live CD user" to "live session user" in the adduser script.
+    Malone #46882
+  * 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.
+  * Remove ubuntu-specific branding from the default casper.
+  * Install default configuration file and make it end up in the
+    initramfs.
+    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.
+  * Wait for persistent devices for 30 seconds, not 1500.
+  * Make sure that readahead-list is installed before chmod -x'ing it.
+  * Only copy devmapper relevant files if devmapper is installed. 
+  * Get rid of CD references and replace with medium or other appropriate.
+
+  [ Malcolm Gilles ]
+  * USB devices can have ID_PATH with pci-*-usb, too.
+
+ -- Tollef Fog Heen <tfheen@ubuntu.com>  Tue, 18 Jul 2006 10:20:51 +0200
+
 casper (1.61) edgy; urgency=low
 
   * Move PATH setting to top of casper script to avoid silliness where
index 0012c86..171d184 100644 (file)
@@ -1,5 +1,5 @@
 Source: casper
-Section: admin
+Section: misc
 Priority: optional
 Maintainer: Marco Amadori <marco.amadori@gmail.com>
 Uploaders: Daniel Baumann <daniel@debian.org>
index 276a2b3..bb225f1 100644 (file)
@@ -1,3 +1,4 @@
+/etc
 /usr/lib/casper
 /usr/share/initramfs-tools/hooks
 /usr/share/initramfs-tools/scripts
index 6d2d6d3..bed1b89 100644 (file)
@@ -25,10 +25,10 @@ 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
+eject -p -m /live_media >/dev/null 2>&1
 
 # XXX - i18n
-echo -n "Please remove the disc, close the tray (if any) and press ENTER: "
+echo -n "Please remove the disc (if any), close the tray (if any) and press ENTER: "
 if [ -x /sbin/usplash_write ]; then
     /sbin/usplash_write "TIMEOUT 0"
     /sbin/usplash_write "TEXT Please remove the disc, close the tray (if any)"
index 3253fd7..2909dff 100644 (file)
@@ -1,5 +1,4 @@
-bin/casper-preseed             /usr/share/casper
 bin/casper-reconfigure         /usr/share/casper
-casper-md5check/casper-md5check        /usr/lib/casper
+bin/casper-preseed             /usr/share/casper
 hooks                          /usr/share/initramfs-tools
 scripts                                /usr/share/initramfs-tools
diff --git a/debian/patches/00list b/debian/patches/00list
deleted file mode 100644 (file)
index 4997088..0000000
+++ /dev/null
@@ -1 +0,0 @@
-01-conglomeration
diff --git a/debian/patches/01-conglomeration.dpatch b/debian/patches/01-conglomeration.dpatch
deleted file mode 100644 (file)
index 11c0f8c..0000000
+++ /dev/null
@@ -1,593 +0,0 @@
-#!/bin/sh /usr/share/dpatch/dpatch-run
-## 01-conglomeration.dpatch
-##
-## DP: Needs to be broken out.
-
-@DPATCH@
-
-diff -Naur casper-1.61+debian.orig/bin/casper-reconfigure casper-1.61+debian/bin/casper-reconfigure
---- casper-1.61+debian.orig/bin/casper-reconfigure     2006-05-11 19:03:29.000000000 +0000
-+++ casper-1.61+debian/bin/casper-reconfigure  2006-07-19 18:54:36.000000000 +0000
-@@ -47,6 +47,6 @@
-     exit 0
- fi
--runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload "$package"
-+runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload -phigh "$package"
- exit 0
-diff -Naur casper-1.61+debian.orig/casper.conf casper-1.61+debian/casper.conf
---- casper-1.61+debian.orig/casper.conf        2006-05-02 12:16:55.000000000 +0000
-+++ casper-1.61+debian/casper.conf     2006-07-19 18:54:36.000000000 +0000
-@@ -3,7 +3,7 @@
- # Supported variables are:
- # USERNAME, USERFULLNAME, HOST
--export USERNAME="ubuntu"
--export USERFULLNAME="Custom LiveCD user"
--export HOST="ubuntu"
-+export USERNAME="debian"
-+export USERFULLNAME="Debian Live user"
-+export HOST="debian"
-diff -Naur casper-1.61+debian.orig/hooks/casper casper-1.61+debian/hooks/casper
---- casper-1.61+debian.orig/hooks/casper       2006-06-15 09:04:08.000000000 +0000
-+++ casper-1.61+debian/hooks/casper    2006-07-19 18:54:36.000000000 +0000
-@@ -18,10 +18,17 @@
- . /usr/share/initramfs-tools/hook-functions
--# cloop is needed
--manual_add_modules cloop
-+
- manual_add_modules unionfs
-+# Needed for devmapper
-+if [ -e /sbin/dmsetup ]; then
-+      manual_add_modules cloop
-+      copy_exec /sbin/blockdev /sbin
-+      copy_exec /sbin/dmsetup /sbin
-+      manual_add_modules dm-snapshot
-+fi
-+
- # We need losetup
- copy_exec /sbin/losetup /sbin
-@@ -30,16 +37,25 @@
- 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
-+# Ubuntu or Debian test
-+if [ -x /sbin/udevplug ]; then
-+      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
-+else
-+      copy_exec /sbin/udevtrigger /sbin
-+fi
-+
- copy_exec /usr/bin/udevinfo /bin
--# Needed for devmapper
--copy_exec /sbin/blockdev /sbin
--copy_exec /sbin/dmsetup /sbin
--manual_add_modules dm-snapshot
-+# 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
-diff -Naur casper-1.61+debian.orig/scripts/casper casper-1.61+debian/scripts/casper
---- casper-1.61+debian.orig/scripts/casper     2006-07-17 10:53:28.000000000 +0000
-+++ casper-1.61+debian/scripts/casper  2006-07-19 18:54:36.000000000 +0000
-@@ -4,7 +4,9 @@
- export PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:/usr/bin:/usr/sbin:/bin:/sbin
--mountpoint=/cdrom
-+mountpoint=/live_media
-+root_persistence="casper-rw"
-+home_persistence="home-rw"
- mkdir -p $mountpoint
-@@ -13,15 +15,15 @@
-     overlay_method=devmapper
- fi
--USERNAME=ubuntu
--USERFULLNAME="Ubuntu LiveCD user"
--HOST=ubuntu
-+USERNAME=debian
-+USERFULLNAME="Debian Live user"
-+HOST=debian
- [ -f /etc/casper.conf ] && . /etc/casper.conf
- export USERNAME USERFULLNAME HOST
--casper_path() {
-+casper_path() { # Fixme: uglyness
-     path=$1
-     if [ -e "$path/casper/filesystem.cloop" ]; then
-         echo "$path/casper/filesystem.cloop"
-@@ -29,6 +31,12 @@
-     elif [ -e "$path/casper/filesystem.squashfs" ]; then
-         echo "$path/casper/filesystem.squashfs"
-         return 0
-+    elif [ -e "$path/casper/filesystem.ext2" ]; then
-+        echo "$path/casper/filesystem.ext2"
-+        return 0
-+    elif [ -e "$path/casper/filesystem.xfs" ]; then
-+        echo "$path/casper/filesystem.xfs"
-+        return 0
-     fi
-     return 1
- }
-@@ -49,7 +57,7 @@
-             *.cloop)
-                 echo $(setup_loop "$1" "cloop" "/sys/block/cloop*")
-                       ;;
--            *.squashfs)
-+            *.squashfs|*.ext2|*.xfs)
-                 echo $(setup_loop "$1" "loop" "/sys/block/loop*")
-                 ;;
-             *)
-@@ -78,8 +86,12 @@
-     local module=$2
-     local pattern=$3
--    modprobe -Qb "$module"
--    udevplug -W
-+    modprobe -qb "$module"
-+    if [ -x /sbin/udevplug ]; then
-+        udevplug -W
-+    else
-+        udevtrigger
-+    fi
-  
-     for loopdev in $pattern; do
-         if [ "$(cat $loopdev/size)" -eq 0 ]; then
-@@ -107,7 +119,7 @@
-     backdev="$1"
-     rootmnt="$2"
--    modprobe -Qb dm-mod
-+    modprobe -qb dm-mod
-     COW_DEVICE=/dev/ram1
-     COW_NAME="casper-cow"
-@@ -143,82 +155,137 @@
-     return 1
- }
--find_cow_device() {
--    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)" = "casper-rw" ]; then
--                echo "$devname"
--                return
--            elif [ "$(get_fstype ${devname})" = "vfat" ]; then
--                mkdir -p /cow-backing
--                if where_is_mounted ${devname} > /dev/null; then
--                    mount -o remount,rw ${devname} $(where_is_mounted ${devname}) || panic "Remounting failed"
--                    mount -o bind $(where_is_mounted ${devname}) /cow-backing || panic "Cannot bind-mount"
--                else
--                    mount -t $(get_fstype "${devname}") -o rw "${devname}" /cow-backing || panic "Cannot mount $devname on /cow-backing"
--                fi
-+copy_to_ram() {
-+      copyto="${mountpoint}_swap"
--                if [ -e "/cow-backing/casper-rw" ]; then
--                    echo $(setup_loop "/cow-backing/casper-rw" "loop" "/sys/block/loop*")
--                    return 0
--                else
--                    umount /cow-backing
--                fi
--            fi
--            
--        done
--    done
--    return 1    
-+      size=$(du -ks ${mountpoint} | cut -f1)
-+      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
-+              return
-+      else
-+              [ "$quiet" != "y" ] && log_begin_msg "Copying live media to ram..."
-+              mkdir "${copyto}"
-+              mount -t tmpfs -o size=${size}k /dev/shm ${copyto}
-+              cp -a ${mountpoint}/* ${copyto}
-+              umount ${mountpoint}
-+              mount -r -o move ${copyto} ${mountpoint}
-+              rmdir ${copyto}
-+              [ "$quiet" != "y" ] && log_end_msg
-+      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
-+                              mkdir -p "${cow_backing}"
-+                              if where_is_mounted ${devname} > /dev/null; then
-+                                      mount -o remount,rw ${devname} $(where_is_mounted ${devname}) || panic "Remounting failed"
-+                                      mount -o bind $(where_is_mounted ${devname}) ${cow_backing} || panic "Cannot bind-mount"
-+                              else
-+                                      mount -t $(get_fstype "${devname}") -o rw "${devname}" ${cow_backing} || panic "Cannot mount $devname on /cow-backing"
-+                              fi
-+
-+                              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
-+}
-+
-+do_netmount() {
-+      rofsmnt="$1"
-+      # adapted from NFS filesystem mounting
-+
-+      modprobe -q cifs
-+      # For DHCP
-+      modprobe -q af_packet
-+
-+      ipconfig ${DEVICE} /tmp/net-${DEVICE}.conf
-+      if [ "x${NFSROOT}" = "xauto" ]; then
-+              NFSROOT=${ROOTSERVER}:${ROOTPATH}
-+      fi
-+
-+      NFSOPTS="-ouser=root,password="
-+
-+      [ "$quiet" != "y" ] && log_begin_msg "Mounting using mount.cifs with ${NFSROOT} ${rofsmnt} ${NFSOPTS}"
-+      mount.cifs "${NFSROOT}" "${rofsmnt}" "${NFSOPTS}" 
-+      [ "$quiet" != "y" ] && log_end_msg
- }
- setup_unionfs() {
-       backdev="$1"
-       rootmnt="$2"
--        modprobe -Qb unionfs
--        mkdir -p /cow
-+      modprobe -qb unionfs
-+      mkdir -p /cow
-+      cowdevice="tmpfs"
-+      cow_fstype="tmpfs"
-+      # Looking for "${root_persistence}" device or file
-+      if grep -q persistent /proc/cmdline; then
-+              cowprobe=$(find_cow_device "${root_persistence}")
-+              if [ -b "${cowprobe}" ]; then
-+                      cowdevice=${cowprobe}
-+                      cow_fstype=$(get_fstype "${cowprobe}")
-+              else
-+                      [ "$quiet" != "y" ] &&  log_begin_msg "Unable to find the persistent medium"
-+              fi
-+      fi
--        if grep -q persistent /proc/cmdline; then
--            i=0
--            # We love udev and the kernel!
--            while [ "$i" -lt 300 ]; do
--                cowdevice=$(find_cow_device) 
--                if [ -b "$cowdevice" ]; then
--                    mount -t $(get_fstype "$cowdevice") -o rw "$cowdevice" /cow || panic "Can not mount $cowdevice on /cow"
--                    break
--                fi
--                sleep 5
--#                sleep 0.1
--                i=$(( $i + 1 ))
--            done
--        else
--            mount -t tmpfs tmpfs /cow
--        fi
-+      mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount $cowdevice on /cow"
-       mkdir -p /rofs
--    if [ "$(get_fstype $backdev)" = "unknown" ]; then
--        panic "Unknown file system type on $backdev"
--    fi
--      mount -t $(get_fstype "$backdev") -o ro "$backdev" /rofs || panic "Can not mount $backdev on /rofs"
--
-+      if grep -q netboot /proc/cmdline; then
-+              do_netmount /rofs || panic "Can not mount netroot on /rofs"
-+      else
-+              if [ "$(get_fstype $backdev)" = "unknown" ]; then
-+                      panic "Unknown file system type on $backdev"
-+              fi
-+              mount -t $(get_fstype "$backdev") -o ro "$backdev" /rofs || panic "Can not mount $backdev on /rofs"
-+      fi
-+      
-       mount -t unionfs -o dirs=/cow=rw:/rofs=ro unionfs "$rootmnt"
--        if grep -q show-cow /proc/cmdline; then
--            mkdir -p "$rootmnt/cow"
--            mount -o bind /cow "$rootmnt/cow"
--        fi
--        mkdir -p "$rootmnt/rofs"
--        mount -o bind /rofs "$rootmnt/rofs"
-+      if grep -q show-cow /proc/cmdline; then
-+              mkdir -p "$rootmnt/cow"
-+              mount -o bind /cow "$rootmnt/cow"
-+      fi
-+      mkdir -p "$rootmnt/rofs"
-+      mount -o bind /rofs "$rootmnt/rofs"
-+
-+      # Adding home persitence
-+      if grep -q homepersistence /proc/cmdline; then
-+              homecow=$(find_cow_device "${home_persistence}" )
-+              if [ -b "${homecow}" ]; then
-+                      mount ${homecow} -t $(get_fstype "${homecow}") -o rw "${rootmnt}/home"
-+              else 
-+                      [ "$quiet" != "y" ] &&  log_begin_msg "Unable to find the persistent home medium"
-+              fi
-+      fi
- }
- is_usb_device() {
-     sysfs_path="${1#/sys}"
--    if /lib/udev/path_id "${sysfs_path}" | grep -q "ID_PATH=usb"; then
-+    if /lib/udev/path_id "${sysfs_path}" | grep -q "ID_PATH=(usb|pci-[^-]*-usb)"; then
-         return 0
-     fi
-     return 1
- }
--find_cd() {
-+find_live() {
-       mounted=
-         for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do
-             devname=$(sys2dev "${sysblock}")
-@@ -283,18 +350,26 @@
-     set_usplash_timeout
-     for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do
--        live_image=$(find_cd)
-+        live_image=$(find_live)
-         if [ "${live_image}" ]; then
-             break
-         fi
-         sleep 1
-     done
-     if [ "$?" -gt 0 ]; then
--        panic "Unable to find a CD-ROM containing a live file system"
-+        panic "Unable to find a medium containing a live file system"
-     fi
-     
-+      if grep -q toram /proc/cmdline; then
-+              copy_to_ram
-+      fi
-+
-     setup_cow "$overlay_method" "$(get_backing_device $live_image)" "$rootmnt"
-+      # show it on new rootfs
-+      mkdir ${rootmnt}/${mountpoint}
-+      mount -o bind ${mountpoint} ${rootmnt}/${mountpoint}
-+
-     log_end_msg
-     maybe_break casper-bottom
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/01integrity_check casper-1.61+debian/scripts/casper-bottom/01integrity_check
---- casper-1.61+debian.orig/scripts/casper-bottom/01integrity_check    2006-04-21 14:08:09.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/01integrity_check 2006-07-19 18:54:36.000000000 +0000
-@@ -15,4 +15,4 @@
-        ;;
- esac
--grep integrity-check /proc/cmdline && casper-md5check /cdrom /cdrom/md5sum.txt < /dev/tty8
-+grep integrity-check /proc/cmdline && casper-md5check /live_media /live_media/md5sum.txt < /dev/tty8
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/10adduser casper-1.61+debian/scripts/casper-bottom/10adduser
---- casper-1.61+debian.orig/scripts/casper-bottom/10adduser    2006-05-11 11:35:21.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/10adduser 2006-07-19 18:54:55.000000000 +0000
-@@ -22,13 +22,15 @@
- chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF
- set passwd/root-password-crypted *
--set passwd/user-password-crypted U6aMy0wojraho
-+set passwd/user-password-crypted $1$NkzZXpgE$WUcfPW16xGuUQAlx99HAF0
- 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
-+chroot /root /usr/bin/env -i HOME="/root" \
-+       TERM="${TERM}" PATH="/usr/sbin:/usr/bin:/sbin:/bin" \
-+       /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
-@@ -40,18 +42,21 @@
- EOF
- if [ -f /root/etc/sudoers ]; 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
--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
-+      if [ -x /sbin/udevplug ]; then 
-+              # FIXME: ugly hack, admin is not present in debian so we do here ubuntu stuff
-+              # XXX - awful hack to stop xscreensaver locking the screen (#7150)
-+              echo 'RUNNING_UNDER_GDM="yes"' >> /root/etc/environment
-+        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
-+              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
-+    else # We are in debian :-)
-+        echo "${USERNAME}  ALL=(ALL) NOPASSWD: ALL" >> /root/etc/sudoers          
-     fi
--done
-+fi
- if [ -L /root/home/$USERNAME/Examples ]; then
-     chroot /root install -o $USERNAME -g $USERNAME -d /home/$USERNAME/Desktop/
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/14locales casper-1.61+debian/scripts/casper-bottom/14locales
---- casper-1.61+debian.orig/scripts/casper-bottom/14locales    2006-05-16 10:45:27.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/14locales 2006-07-19 18:54:36.000000000 +0000
-@@ -20,18 +20,33 @@
- log_begin_msg "$DESCRIPTION"
--locale=en_US.UTF-8
-+if [ -e /root/etc/default/locale ]; then
-+      grep_file=/root/etc/default/locale
-+      locale=$(grep 'LANG=' ${grep_file} | sed s/'LANG='// | tr -d '"' ) 
-+elif [ -e /root/etc/environment ]; then # Old locales policy
-+      grep_file=/root/etc/environment
-+fi
-+
-+# commandline
- for x in $(cat /proc/cmdline); do
--                case $x in
--                        debian-installer/locale=*)
--                                locale=${x#debian-installer/locale=}
--                                ;;
--                esac
-+      case $x in
-+              debian-installer/locale=*)
-+                      locale=${x#debian-installer/locale=}
-+                      set_locale="true"
-+                      ;;
-+      esac
- done
--LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 |sed -e 's, .*,,' -e q)
-+if [ -z "${locale}" ]; then
-+      # Set a default one
-+      locale=en_US.UTF-8
-+      set_locale="true"
-+fi
--printf 'LANG="%s"\n' "${LANG}" >> /root/etc/environment
--chroot /root /usr/sbin/locale-gen "${LANG}"
-+if [ ! -z "${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}" 
-+      chroot /root /usr/sbin/locale-gen "${LANG}"
-+fi
- log_end_msg
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/15autologin casper-1.61+debian/scripts/casper-bottom/15autologin
---- casper-1.61+debian.orig/scripts/casper-bottom/15autologin  2006-05-11 10:06:07.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/15autologin       2006-07-19 18:54:36.000000000 +0000
-@@ -27,6 +27,8 @@
- fi
- if chroot /root [ -f ${GDMCONF} ]; then
-+    # true hack ! -- nohar
-+    chroot /root cp /usr/share/gdm/defaults.conf /etc/gdm/gdm.conf
-     # Configure GDM autologin
-     chroot /root sed -i \
-         -e "s/^AutomaticLoginEnable=.*\$/AutomaticLoginEnable=true/" \
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/22gnome_panel_data casper-1.61+debian/scripts/casper-bottom/22gnome_panel_data
---- casper-1.61+debian.orig/scripts/casper-bottom/22gnome_panel_data   2006-05-11 10:05:55.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/22gnome_panel_data        2006-07-19 18:54:36.000000000 +0000
-@@ -20,8 +20,10 @@
- log_begin_msg "$DESCRIPTION"
--if chroot /root /bin/sh -c laptop-detect; then
--    casper-reconfigure /root gnome-panel-data
-+if [ -x /root/usr/sbin/laptop-detect ]; then
-+      if chroot /root /bin/sh -c /usr/sbin/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=""
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/23networking casper-1.61+debian/scripts/casper-bottom/23networking
---- casper-1.61+debian.orig/scripts/casper-bottom/23networking 2006-05-11 10:05:11.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/23networking      2006-07-19 18:54:36.000000000 +0000
-@@ -27,7 +27,11 @@
- EOF
--udevplug -Bpci -Iclass="0x02*"
-+if [ -x /sbin/udevplug ]; then
-+      udevplug -Bpci -Iclass="0x02*"
-+else
-+      udevtrigger
-+fi
- for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do
-     [ -e $interface ] || continue
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/25configure_init casper-1.61+debian/scripts/casper-bottom/25configure_init
---- casper-1.61+debian.orig/scripts/casper-bottom/25configure_init     2006-06-15 09:08:14.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/25configure_init  2006-07-19 18:54:36.000000000 +0000
-@@ -28,9 +28,11 @@
- # This has the nice side effect of the cron.{daily,weekly,monthly} jobs in
- # /etc/crontab remaining disabled, yet also not run by anacron
--for f in /root/etc/rc?.d/S??anacron; do
--    mv ${f} ${f%/*}/K00anacron
--done
-+if [ -x /root/etc/init.d/anacron ]; then
-+      for f in /root/etc/rc?.d/S??anacron; do
-+      mv ${f} $(dirname ${f})/K00anacron
-+      done
-+fi
- # No point, really
- rm -f /root/etc/rc?.d/[SK]??postfix
-@@ -40,15 +42,8 @@
- # Disable readahead since it doesn't play well with squashfs + unionfs
- # use chmod instead of mv to not trigger unionfs bugs.
--chmod -x /root/sbin/readahead-list
--
--# Install shutdown script
--cp -a /lib/casper/shutdown /root/etc/init.d/casper-shutdown
--if [ -f /root/etc/rc0.d/S90halt ]; then
--    ln -s ../init.d/casper-shutdown /root/etc/rc0.d/S89casper
--fi
--if [ -f /root/etc/rc6.d/S90reboot ]; then
--    ln -s ../init.d/casper-shutdown /root/etc/rc6.d/S89casper
-+if [ -e /root/sbin/readahead-list ]; then
-+      chmod -x /root/sbin/readahead-list
- fi
- log_end_msg
-diff -Naur casper-1.61+debian.orig/scripts/casper-bottom/33disable_binary_drivers casper-1.61+debian/scripts/casper-bottom/33disable_binary_drivers
---- casper-1.61+debian.orig/scripts/casper-bottom/33disable_binary_drivers     2006-05-13 08:13:22.000000000 +0000
-+++ casper-1.61+debian/scripts/casper-bottom/33disable_binary_drivers  2006-07-19 18:54:36.000000000 +0000
-@@ -20,4 +20,6 @@
- log_begin_msg "$DESCRIPTION"
--echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common
-+if [ -e /root/etc/default/linux-restricted-modules-common ]; then
-+      echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common
-+fi
index 53b9e33..c7fdbac 100755 (executable)
@@ -8,7 +8,7 @@ include /usr/share/dpatch/dpatch.make
 build: patch-stamp build-stamp
 build-stamp:
        dh_testdir
-
+       
        # Building package
        $(MAKE) -C casper-md5check
 
@@ -30,12 +30,15 @@ install: build
        dh_installdirs
        dh_install
 
-       # Installing lintian override
-       install -D -m 0644 debian/lintian debian/casper/usr/share/lintian/overrides/casper
+       # Install md5check
+       install -m 0755 casper-md5check/casper-md5check debian/casper/usr/lib/casper
 
        # Fixing permission
        chmod 0755 debian/casper/usr/share/initramfs-tools/scripts/casper
 
+       # Installing lintian override
+       install -D -m 0644 debian/lintian debian/casper/usr/share/lintian/overrides/casper
+
 binary-indep: build install
 
 binary-arch: build install
index 8779944..7229612 100755 (executable)
@@ -18,10 +18,17 @@ esac
 
 . /usr/share/initramfs-tools/hook-functions
 
-# cloop is needed
-manual_add_modules cloop
+
 manual_add_modules unionfs
 
+# Needed for devmapper
+if [ -e /sbin/dmsetup ]; then
+       manual_add_modules cloop
+       copy_exec /sbin/blockdev /sbin
+       copy_exec /sbin/dmsetup /sbin
+       manual_add_modules dm-snapshot
+fi
+
 # We need losetup
 copy_exec /sbin/losetup /sbin
 
@@ -30,16 +37,25 @@ 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
+# Ubuntu or Debian test
+if [ -x /sbin/udevplug ]; then
+       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
+else
+       copy_exec /sbin/udevtrigger /sbin
+fi
+
 copy_exec /usr/bin/udevinfo /bin
 
-# Needed for devmapper
-copy_exec /sbin/blockdev /sbin
-copy_exec /sbin/dmsetup /sbin
-manual_add_modules dm-snapshot
+# 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
index 3d8c453..2375bb6 100644 (file)
 
 export PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:/usr/bin:/usr/sbin:/bin:/sbin
 
-mountpoint=/cdrom
+mountpoint=/live_media
 
-mkdir -p $mountpoint
+# Will be mounted if found as copy on write instead of tmpfs
+persistence_pattern="casper-rw"
+
+# Each file found with this pattern will be mounted directly in the 
+# mountpoint extracted from file name "${other_mounts_pattern}<mountpoint>"
+other_mounts_pattern="casper-mount-"
+netboot=""
+
+#overlay_method=unionfs
+#if [ "${DPKG_ARCH}" = "ia64" ] || [ "${DPKG_ARCH}" = "hppa" ] || [ "${DPKG_ARCH}" = "sparc" ]; then
+#    overlay_method=devmapper
+#fi
 
-overlay_method=unionfs
-if [ "${DPKG_ARCH}" = "ia64" ] || [ "${DPKG_ARCH}" = "hppa" ] || [ "${DPKG_ARCH}" = "sparc" ]; then
-    overlay_method=devmapper
-fi
+USERNAME="casper"
+USERFULLNAME="Live session user"
+HOST="live"
 
-USERNAME=ubuntu
-USERFULLNAME="Ubuntu LiveCD user"
-HOST=ubuntu
+mkdir -p $mountpoint
 
 [ -f /etc/casper.conf ] && . /etc/casper.conf
 
 export USERNAME USERFULLNAME HOST
 
-casper_path() {
-    path=$1
-    if [ -e "$path/casper/filesystem.cloop" ]; then
-        echo "$path/casper/filesystem.cloop"
-        return 0
-    elif [ -e "$path/casper/filesystem.squashfs" ]; then
-        echo "$path/casper/filesystem.squashfs"
-        return 0
-    fi
-    return 1
+is_casper_path() {
+       path=$1
+       if [ -d "$path/casper" ]; then
+               if [ "$(echo $path/casper/*.cloop)" != "$path/casper/*.cloop" ] ||
+                       [ "$(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
 }
 
 subdevices() {
-    sysblock=$1
-    r=""
-    for dev in "${sysblock}" "${sysblock}"/*; do
-        if [ -e "${dev}/dev" ]; then
-            r="${r} ${dev}"
-        fi
-    done
-    echo ${r}
+       sysblock=$1
+       r=""
+       for dev in "${sysblock}" "${sysblock}"/*; do
+               if [ -e "${dev}/dev" ]; then
+                       r="${r} ${dev}"
+               fi
+       done
+       echo ${r}
 }
 
 get_backing_device() {
        case "$1" in
-            *.cloop)
-                echo $(setup_loop "$1" "cloop" "/sys/block/cloop*")
+               *.cloop)
+                       echo $(setup_loop "$1" "cloop" "/sys/block/cloop*")
+                       ;;
+               *.squashfs|*.ext2)
+                       echo $(setup_loop "$1" "loop" "/sys/block/loop*")
+                       ;;
+               *.dir)
+                       echo "directory"
+                       ;;
+               *)
+                       panic "Unrecognized casper filesystem: $1"
                        ;;
-            *.squashfs)
-                echo $(setup_loop "$1" "loop" "/sys/block/loop*")
-                ;;
-            *)
-                panic "Unrecognized casper filesystem: $1"
-                ;;
        esac
 }
 
-setup_cow() {
-       case "$1" in
-            unionfs)
-                setup_unionfs "$2" "$rootmnt"
-                ;;
-            devmapper)
-                setup_devmapper "$2" "$rootmnt"
-       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/*.cloop"; then
+               # Let's hope there's just one matching *.cloop... FIXME
+               setup_devmapper $(get_backing_device "$directory/casper/*.cloop") "$rootmnt"
+       elif 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
 }
 
 sys2dev() {
-    sysdev=${1#/sys}
-    echo "/dev/$(udevinfo -q name -p ${sysdev} 2>/dev/null|| echo ${sysdev##*/})"
+       sysdev=${1#/sys}
+       echo "/dev/$(udevinfo -q name -p ${sysdev} 2>/dev/null|| echo ${sysdev##*/})"
 }
 
 setup_loop() {
-    local fspath=$1
-    local module=$2
-    local pattern=$3
-
-    modprobe -Qb "$module"
-    udevplug -W
-    for loopdev in $pattern; do
-        if [ "$(cat $loopdev/size)" -eq 0 ]; then
-            dev=$(sys2dev "${loopdev}")
-            losetup "$dev" "$fspath"
-            echo "$dev"
-            return 0
-        fi
-    done
-    panic "No loop devices available"
+       local fspath=$1
+       local module=$2
+       local pattern=$3
+
+       modprobe -qb "$module"
+       if [ -x /sbin/udevplug ]; then
+               udevplug -W
+       else
+               udevtrigger
+       fi
+
+       for loopdev in $pattern; do
+               if [ "$(cat $loopdev/size)" -eq 0 ]; then
+                       dev=$(sys2dev "${loopdev}")
+                       losetup "$dev" "$fspath"
+                       echo "$dev"
+                       return 0
+               fi
+       done
+       panic "No loop devices available"
 }
 
 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
+       #FIXME# one use of this function expects "unknown" another does not!
+       # which is it???
+       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
 }
 
 setup_devmapper() {
-    backdev="$1"
-    rootmnt="$2"
+       backdev="$1"
+       rootmnt="$2"
 
-    modprobe -Qb dm-mod
-    COW_DEVICE=/dev/ram1
-    COW_NAME="casper-cow"
+       modprobe -qb dm-mod
+       COW_DEVICE=/dev/ram1
+       COW_NAME="casper-cow"
 
-    BACKING_FILE_SIZE=$(blockdev --getsize "$backdev")
-    MAX_COW_SIZE=$(blockdev --getsize "$COW_DEVICE")
-    CHUNK_SIZE=8 # sectors
+       BACKING_FILE_SIZE=$(blockdev --getsize "$backdev")
+       MAX_COW_SIZE=$(blockdev --getsize "$COW_DEVICE")
+       CHUNK_SIZE=8 # sectors
 
-    if [ -z "$COW_SIZE" -o "$COW_SIZE" -gt "$MAX_COW_SIZE" ]; then
-        COW_SIZE=$MAX_COW_SIZE
-    fi
+       if [ -z "$COW_SIZE" -o "$COW_SIZE" -gt "$MAX_COW_SIZE" ]; then
+               COW_SIZE=$MAX_COW_SIZE
+       fi
 
-    echo "0 $COW_SIZE linear $COW_DEVICE 0" | dmsetup create $COW_NAME
+       echo "0 $COW_SIZE linear $COW_DEVICE 0" | dmsetup create $COW_NAME
 
-    echo "0 $BACKING_FILE_SIZE snapshot $backdev /dev/mapper/$COW_NAME p $CHUNK_SIZE" | \
-        dmsetup create casper-snapshot
-    if [ "$(get_fstype $backdev)" = "unknown" ]; then
-        panic "Unknown file system type on $backdev"
-    fi
-    mount -t $(get_fstype "$backdev") /dev/mapper/casper-snapshot $rootmnt || panic "Can not mount /dev/mapper/casper/snapshot on $rootmnt"
+       echo "0 $BACKING_FILE_SIZE snapshot $backdev /dev/mapper/$COW_NAME p $CHUNK_SIZE" | \
+               dmsetup create casper-snapshot
+       if [ "$(get_fstype $backdev)" = "unknown" ]; then
+               panic "Unknown file system type on $backdev"
+       fi
+       mount -t $(get_fstype "$backdev") /dev/mapper/casper-snapshot $rootmnt || panic "Can not mount /dev/mapper/casper/snapshot on $rootmnt"
 
-    mkdir -p "$rootmnt/rofs"
-    echo "0 $BACKING_FILE_SIZE linear $backdev 0" | dmsetup create casper-backing
-    mount -t $(get_fstype "$backdev") /dev/mapper/casper-backing "$rootmnt/rofs"
+       mkdir -p "$rootmnt/rofs"
+       echo "0 $BACKING_FILE_SIZE linear $backdev 0" | dmsetup create casper-backing
+       mount -t $(get_fstype "$backdev") /dev/mapper/casper-backing "$rootmnt/rofs"
 }
 
 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
+       device=$1
+       if grep -q "^$device " /proc/mounts; then
+               grep "^$device " /proc/mounts | read d mountpoint rest
+               echo $mountpoint
+               return 0
+       fi
+       return 1
+}
+
+copy_to_ram() {
+       copyform="$1"
+       copyto="${copyform}_swap"
+
+       size=$(du -ks ${copyform} | cut -f1)
+       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
+               return
+       else
+               [ "$quiet" != "y" ] && log_begin_msg "Copying live media to ram..."
+               mkdir "${copyto}"
+               mount -t tmpfs -o size=${size}k /dev/shm ${copyto}
+               cp -a ${copyform}/* ${copyto}
+               umount ${copyform}
+               mount -r -o move ${copyto} ${copyform}
+               rmdir ${copyto}
+               [ "$quiet" != "y" ] && log_end_msg
+       fi
 }
 
 find_cow_device() {
-    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)" = "casper-rw" ]; then
-                echo "$devname"
-                return
-            elif [ "$(get_fstype ${devname})" = "vfat" ]; then
-                mkdir -p /cow-backing
-                if where_is_mounted ${devname} > /dev/null; then
-                    mount -o remount,rw ${devname} $(where_is_mounted ${devname}) || panic "Remounting failed"
-                    mount -o bind $(where_is_mounted ${devname}) /cow-backing || panic "Cannot bind-mount"
-                else
-                    mount -t $(get_fstype "${devname}") -o rw "${devname}" /cow-backing || panic "Cannot mount $devname on /cow-backing"
-                fi
-
-                if [ -e "/cow-backing/casper-rw" ]; then
-                    echo $(setup_loop "/cow-backing/casper-rw" "loop" "/sys/block/loop*")
-                    return 0
-                else
-                    umount /cow-backing
-                fi
-            fi
-            
-        done
-    done
-    return 1    
+       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
+                               mkdir -p "${cow_backing}"
+                               if where_is_mounted ${devname} > /dev/null; then
+                                       mount -o remount,rw ${devname} $(where_is_mounted ${devname}) || panic "Remounting failed"
+                                       mount -o bind $(where_is_mounted ${devname}) ${cow_backing} || panic "Cannot bind-mount"
+                               else
+                                       mount -t $(get_fstype "${devname}") -o rw "${devname}" ${cow_backing} || panic "Cannot mount $devname on /cow-backing"
+                               fi
+
+                               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
+}
+
+do_netmount() {
+       # Will mount a remote share and return the mountpoint
+
+       modprobe -q nfs
+       # For DHCP
+       modprobe -q af_packet
+
+       ipconfig ${DEVICE} /tmp/net-${DEVICE}.conf
+       if [ "x${NFSROOT}" = "xauto" ]; then
+               NFSROOT=${ROOTSERVER}:${ROOTPATH}
+       fi
+
+       #choose NFS or CIFS mount 
+       if [ ${netboot} = "NFS"  ] ; then
+               echo $(do_nfsmount)
+       else
+               echo $(do_cifsmount)
+       fi
+}
+
+do_nfsmount() {
+       if [ "x${NFSOPTS}" = "x" ]; then
+               NFSOPTS=""
+       fi
+
+       [ "$quiet" != "y" ] && log_begin_msg "Mounting NFS with nfsmount -o nolock -o ro ${NFSOPTS} ${NFSROOT} ${mountpoint}"
+       while true ; do 
+                       nfsmount -o nolock -o ro ${NFSOPTS} "${NFSROOT}" "${mountpoint}" && break
+               sleep 1
+       done
+       echo "${mountpoint}"
+       # FIXME: add error check
+       [ "$quiet" != "y" ] && log_end_msg
+}
+
+do_cifsmount() {
+       NFSOPTS="-ouser=root,password="
+
+       [ "$quiet" != "y" ] && log_begin_msg "Mounting using mount.cifs with ${NFSROOT} ${mountpoint} ${NFSOPTS}"
+       mount.cifs "${NFSROOT}" "${mountpoint}" "${NFSOPTS}" && echo "${mountpoint}"
+       # FIXME: add error check
+       [ "$quiet" != "y" ] && log_end_msg
 }
 
 setup_unionfs() {
-       backdev="$1"
+       image_directory="$1"
        rootmnt="$2"
-        modprobe -Qb unionfs
-        mkdir -p /cow
-
-        if grep -q persistent /proc/cmdline; then
-            i=0
-            # We love udev and the kernel!
-            while [ "$i" -lt 300 ]; do
-                cowdevice=$(find_cow_device) 
-                if [ -b "$cowdevice" ]; then
-                    mount -t $(get_fstype "$cowdevice") -o rw "$cowdevice" /cow || panic "Can not mount $cowdevice on /cow"
-                    break
-                fi
-                sleep 5
-#                sleep 0.1
-                i=$(( $i + 1 ))
-            done
-        else
-            mount -t tmpfs tmpfs /cow
-        fi
-
-       mkdir -p /rofs
-    if [ "$(get_fstype $backdev)" = "unknown" ]; then
-        panic "Unknown file system type on $backdev"
-    fi
-       mount -t $(get_fstype "$backdev") -o ro "$backdev" /rofs || panic "Can not mount $backdev on /rofs"
-
-       mount -t unionfs -o dirs=/cow=rw:/rofs=ro unionfs "$rootmnt"
-        if grep -q show-cow /proc/cmdline; then
-            mkdir -p "$rootmnt/cow"
-            mount -o bind /cow "$rootmnt/cow"
-        fi
-        mkdir -p "$rootmnt/rofs"
-        mount -o bind /rofs "$rootmnt/rofs"
+       image_type="$3"
+
+       modprobe -qb unionfs
+       croot=""        # Should really be /casper, but run-init doesn't handle
+                               # mount-points in subdirectories at all
+
+       # Let's just mount the read-only file systems first
+       rofsstring=""
+       rofslist=""
+       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
+                               rofslist="${image} ${rofslist}"
+                               rofsstring="${image}=ro:${rofsstring}"
+                       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}=ro:${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 grep -q persistent /proc/cmdline; then
+               cowprobe=$(find_cow_device "${root_persistence}")
+               if [ -b "${cowprobe}" ]; then
+                       cowdevice=${cowprobe}
+                       cow_fstype=$(get_fstype "${cowprobe}")
+               else
+                       [ "$quiet" != "y" ] &&  log_begin_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"
+       
+       for d in ${rofslist}; do
+               mkdir -p "${rootmnt}/casper/${d}"
+               mount -o bind "${d}" "${rootmnt}/${d}"
+               case d in 
+                       *.dir) ;; # do nothing
+                       *) umount "${d}" ;;
+               esac
+       done
+
+       # Adding other custom mounts
+       if grep -q homepersistence /proc/cmdline; then
+               homecow=$(find_cow_device "${home_persistence}" )
+               if [ -b "${homecow}" ]; then
+                       mount ${homecow} -t $(get_fstype "${homecow}") -o rw "${rootmnt}/home"
+               else 
+                       [ "$quiet" != "y" ] &&  log_begin_msg "Unable to find the persistent home medium"
+               fi
+       fi
+
+       if grep -q show-cow /proc/cmdline; then
+               mkdir -p "$rootmnt/cow"
+               mount -o bind /cow "$rootmnt/cow"
+       fi
 }
 
 is_usb_device() {
     sysfs_path="${1#/sys}"
-    if /lib/udev/path_id "${sysfs_path}" | grep -q "ID_PATH=usb"; then
+    if /lib/udev/path_id "${sysfs_path}" | grep -Eq "ID_PATH=(usb|pci-[^-]*-usb)"; then
         return 0
     fi
     return 1
 }
 
-find_cd() {
+find_livefs() {
        mounted=
-        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
-                mount -t ${fstype} -o ro "$devname" $mountpoint || continue
-                if casper_path $mountpoint; then
-                    echo $(casper_path $mountpoint)
-                    return
-                else
-                    umount $mountpoint
-                fi
-            elif is_usb_device "$sysblock"; then
-                for dev in $(subdevices "${sysblock}"); do
-                    devname=$(sys2dev "${dev}")
-                    fstype=$(get_fstype "${devname}")
-                    case ${fstype} in
-                        vfat|iso9660|udf)
-                            mount -t ${fstype} -o ro "${devname}" $mountpoint || continue
-                            if casper_path $mountpoint; then
-                                echo $(casper_path $mountpoint)
-                                return
-                            else
-                                umount $mountpoint
-                            fi
-                            ;;
-                    esac
-                done
-           elif [ "${fstype}" = "squashfs" ]; then
-
-                # This is an ugly hack situation, the block device has
-                # a squashfs image directly on it.  It's hopefully
-                # casper, so take it and run with it.
-
-                ln -s "${devname}" "${devname}.${fstype}"
-                echo "${devname}.${fstype}"
-                return
-            fi
-        done
+       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
+                       mount -t ${fstype} -o ro "$devname" $mountpoint || continue
+                       if is_casper_path $mountpoint; then
+                               echo $mountpoint
+                               return
+                       else
+                               umount $mountpoint
+                       fi
+               elif is_usb_device "$sysblock"; then
+                       for dev in $(subdevices "${sysblock}"); do
+                               devname=$(sys2dev "${dev}")
+                               fstype=$(get_fstype "${devname}")
+                               case ${fstype} in
+                                       vfat|iso9660|udf)
+                                               mount -t ${fstype} -o ro "${devname}" $mountpoint || continue
+                                               if is_casper_path $mountpoint; then
+                                                       echo $mountpoint
+                                                       return
+                                               else
+                                                       umount $mountpoint
+                                               fi
+                                               ;;
+                               esac
+                       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.
+               
+                       ln -s "${devname}" "${devname}.${fstype}"
+                       echo "${devname}.${fstype}"
+                       return
+               fi
+       done
 }
 
 set_usplash_timeout() {
-    if [ -x /sbin/usplash_write ]; then
-        /sbin/usplash_write "TIMEOUT 120"
-    fi
+       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"
-    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
-
-    for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do
-        live_image=$(find_cd)
-        if [ "${live_image}" ]; then
-            break
-        fi
-        sleep 1
-    done
-    if [ "$?" -gt 0 ]; then
-        panic "Unable to find a CD-ROM containing a live file system"
-    fi
-    
-    setup_cow "$overlay_method" "$(get_backing_device $live_image)" "$rootmnt"
-
-    log_end_msg
-
-    maybe_break casper-bottom
-    [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom"
-
-    run_scripts /scripts/casper-bottom
-    [ "$quiet" != "y" ] && log_end_msg
-
-    exec 1>&6 6>&-
-    exec 2>&7 7>&-
-    cp casper.log "${rootmnt}/var/log/"
+       exec 6>&1
+       exec 7>&2
+       exec > casper.log
+       exec 2>&1
+       
+       set_usplash_timeout
+       [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-premount"
+       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 grep -q netboot /proc/cmdline; then
+               netboot="CIFS"
+               for x in $(cat /proc/cmdline); do
+                       case $x in
+                               netboot=*)
+                                       netboot=${x#netboot=}
+                               ;;
+                       esac
+               done
+               livefs_root=$(do_netboot)
+       else
+               # Scan 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)
+                       if [ "${livefs_root}" ]; then
+                               break
+                       fi
+                       sleep 1
+               done
+       fi
+               
+       if [ "$?" -gt 0 ]; then
+               panic "Unable to find a medium containing a live file system"
+       fi
+               
+       if grep -q toram /proc/cmdline; then
+               copy_to_ram "${livefs_root}"
+       fi
+       
+       mount_images_in_directory "$livefs_root" "$rootmnt"
+
+       log_end_msg
+
+       maybe_break casper-bottom
+       [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom"
+
+       run_scripts /scripts/casper-bottom
+       [ "$quiet" != "y" ] && log_end_msg
+
+       exec 1>&6 6>&-
+       exec 2>&7 7>&-
+       cp casper.log "${rootmnt}/var/log/"
 }
index 637a1ff..8c8e153 100755 (executable)
@@ -15,4 +15,4 @@ prereqs)
        ;;
 esac
 
-grep integrity-check /proc/cmdline && casper-md5check /cdrom /cdrom/md5sum.txt < /dev/tty8
+grep integrity-check /proc/cmdline && casper-md5check /live_media /live_media/md5sum.txt < /dev/tty8
index ca8845a..33f265d 100755 (executable)
@@ -21,7 +21,7 @@ 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
+mkdir -p /root/live_media
+mount -n -o move /live_media /root/live_media
 
 log_end_msg
index a37d831..700f8c3 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 PREREQ=""
-DESCRIPTION="Adding live CD user..."
+DESCRIPTION="Adding live session user..."
 
 . /scripts/functions
 
@@ -20,15 +20,18 @@ 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-password-crypted UMxWpqk1F1hww
 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
+chroot /root /usr/bin/env -i HOME="/root" \
+       TERM="${TERM}" PATH="/usr/sbin:/usr/bin:/sbin:/bin" \
+       /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
@@ -40,18 +43,21 @@ set passwd/user-uid
 EOF
 
 if [ -f /root/etc/sudoers ]; 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
-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
+       if [ -x /sbin/udevplug ]; then 
+               # FIXME: ugly hack, admin is not present in debian so we do here ubuntu stuff
+               # XXX - awful hack to stop xscreensaver locking the screen (#7150)
+               echo 'RUNNING_UNDER_GDM="yes"' >> /root/etc/environment
+        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
+               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
+    else # We are in debian :-)
+        echo "${USERNAME}  ALL=(ALL) NOPASSWD: ALL" >> /root/etc/sudoers           
     fi
-done
+fi
 
 if [ -L /root/home/$USERNAME/Examples ]; then
     chroot /root install -o $USERNAME -g $USERNAME -d /home/$USERNAME/Desktop/
index d9343cd..0d4e171 100755 (executable)
@@ -20,18 +20,33 @@ esac
 
 log_begin_msg "$DESCRIPTION"
 
-locale=en_US.UTF-8
+if [ -e /root/etc/default/locale ]; then
+       grep_file=/root/etc/default/locale
+       locale=$(grep 'LANG=' ${grep_file} | sed s/'LANG='// | tr -d '"' ) 
+elif [ -e /root/etc/environment ]; then # Old locales policy
+       grep_file=/root/etc/environment
+fi
+
+# commandline
 for x in $(cat /proc/cmdline); do
-                case $x in
-                        debian-installer/locale=*)
-                                locale=${x#debian-installer/locale=}
-                                ;;
-                esac
+       case $x in
+               debian-installer/locale=*)
+                       locale=${x#debian-installer/locale=}
+                       set_locale="true"
+                       ;;
+       esac
 done
 
-LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 |sed -e 's, .*,,' -e q)
-
-printf 'LANG="%s"\n' "${LANG}" >> /root/etc/environment
-chroot /root /usr/sbin/locale-gen "${LANG}"
+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}" 
+       chroot /root /usr/sbin/locale-gen "${LANG}"
+fi
 
 log_end_msg
index 5f7797a..745e6ce 100755 (executable)
@@ -27,6 +27,8 @@ else
 fi
 
 if chroot /root [ -f ${GDMCONF} ]; then
+       # true hack ! -- nohar
+    chroot /root cp /usr/share/gdm/defaults.conf /etc/gdm/gdm.conf
     # Configure GDM autologin
     chroot /root sed -i \
         -e "s/^AutomaticLoginEnable=.*\$/AutomaticLoginEnable=true/" \
index b232c27..e87c94f 100755 (executable)
@@ -20,8 +20,10 @@ esac
 
 log_begin_msg "$DESCRIPTION"
 
-if chroot /root /bin/sh -c laptop-detect; then
-    casper-reconfigure /root gnome-panel-data
+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=""
index 021aca9..7238773 100755 (executable)
@@ -27,7 +27,11 @@ iface lo inet loopback
 
 EOF
 
-udevplug -Bpci -Iclass="0x02*"
+if [ -x /sbin/udevplug ]; then
+       udevplug -Bpci -Iclass="0x02*"
+else
+       udevtrigger
+fi
 
 for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do
     [ -e $interface ] || continue
index 12e6315..7c39478 100755 (executable)
@@ -23,14 +23,16 @@ log_begin_msg "$DESCRIPTION"
 # Arrange for shells on virtual consoles, rather than login prompts
 
 if [ -n "$USERNAME" ]; then
-    sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab
+    sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9].*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab
 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
-for f in /root/etc/rc?.d/S??anacron; do
-    mv ${f} ${f%/*}/K00anacron
-done
+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
@@ -40,15 +42,8 @@ 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.
-chmod -x /root/sbin/readahead-list
-
-# Install shutdown script
-cp -a /lib/casper/shutdown /root/etc/init.d/casper-shutdown
-if [ -f /root/etc/rc0.d/S90halt ]; then
-    ln -s ../init.d/casper-shutdown /root/etc/rc0.d/S89casper
-fi
-if [ -f /root/etc/rc6.d/S90reboot ]; then
-    ln -s ../init.d/casper-shutdown /root/etc/rc6.d/S89casper
+if [ -e /root/sbin/readahead-list ]; then
+    chmod -x /root/sbin/readahead-list
 fi
 
 log_end_msg
index 52bcbf4..6bc2279 100755 (executable)
@@ -20,4 +20,6 @@ esac
 
 log_begin_msg "$DESCRIPTION"
 
-echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common
+if [ -e /root/etc/default/linux-restricted-modules-common ]; then
+    echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common
+fi
diff --git a/ubiquity-hooks/30accessibility b/ubiquity-hooks/30accessibility
deleted file mode 100755 (executable)
index 4d871fd..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-
-. /usr/share/debconf/confmodule
-
-PREREQ=""
-DESCRIPTION="Configuring accessibility options..."
-USERNAME=$(db_get passwd/username)
-
-gct() {
-    chroot /root su $USERNAME -- gconftool-2 "$@"
-}
-
-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
-                        ;;
-                        # 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 [gnopernicus]
-                        gct -s -t bool /apps/gnopernicus/srcore/mag_active true
-                        gct -s -t bool /apps/gnopernicus/srcore/sp_active false
-                        ;;
-                        # 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 [gnopernicus]
-                        gct -s -t bool /apps/gnopernicus/srcore/sp_active true
-                        gct -s -t bool /apps/gnopernicus/srcore/mag_active false
-                        ;;
-                        # 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
-                        ;;
-                        # Motor Difficulties - pointing devices
-                        access=m2)
-                        gct -s -t bool /desktop/gnome/accessibility/keyboard/enable 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 bool /desktop/gnome/interface/accessibility true
-                        gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats gok
-                        ;;
-               esac
-done
-log_end_msg