From a7e62470dcdcd93501d9f54a96ca45d267ad1fe5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 23 Sep 2007 14:46:22 +0200 Subject: [PATCH] Adding casper 1.61+debian-1. --- bin/casper-reconfigure | 2 +- casper.conf | 6 +- debian/casper.install | 4 - debian/changelog | 13 + debian/changelog.upstream | 12 +- debian/control | 4 +- debian/{casper.dirs => dirs} | 0 debian/examples | 1 + debian/{casper.init => init.d} | 6 +- debian/install | 5 + debian/{casper.lintian => lintian} | 0 debian/patches/00list | 1 + debian/patches/01-conglomeration.dpatch | 586 +++++++++++++++++++++++++ debian/{casper.postinst => postinst} | 0 debian/rules | 26 +- debian/ubiquity-casper.install | 2 - hooks/casper | 36 +- scripts/casper | 213 +++------ scripts/casper-bottom/01integrity_check | 2 +- scripts/casper-bottom/10adduser | 29 +- scripts/casper-bottom/14locales | 35 +- scripts/casper-bottom/22gnome_panel_data | 6 +- scripts/casper-bottom/23networking | 6 +- scripts/casper-bottom/25configure_init | 19 +- scripts/casper-bottom/33disable_binary_drivers | 4 +- ubiquity-hooks/30accessibility | 67 +++ 26 files changed, 825 insertions(+), 260 deletions(-) delete mode 100644 debian/casper.install rename debian/{casper.dirs => dirs} (100%) create mode 100644 debian/examples rename debian/{casper.init => init.d} (82%) mode change 100755 => 100644 create mode 100644 debian/install rename debian/{casper.lintian => lintian} (100%) create mode 100644 debian/patches/00list create mode 100644 debian/patches/01-conglomeration.dpatch rename debian/{casper.postinst => postinst} (100%) delete mode 100644 debian/ubiquity-casper.install create mode 100755 ubiquity-hooks/30accessibility diff --git a/bin/casper-reconfigure b/bin/casper-reconfigure index 628bff3..51f999b 100755 --- a/bin/casper-reconfigure +++ b/bin/casper-reconfigure @@ -47,6 +47,6 @@ if [ -z "$version" ]; then exit 0 fi -runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload -phigh "$package" +runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload "$package" exit 0 diff --git a/casper.conf b/casper.conf index c6967f9..6b16149 100644 --- a/casper.conf +++ b/casper.conf @@ -3,7 +3,7 @@ # Supported variables are: # USERNAME, USERFULLNAME, HOST -export USERNAME="debian" -export USERFULLNAME="Debian Live user" -export HOST="debian" +export USERNAME="ubuntu" +export USERFULLNAME="Custom LiveCD user" +export HOST="ubuntu" diff --git a/debian/casper.install b/debian/casper.install deleted file mode 100644 index 28a4469..0000000 --- a/debian/casper.install +++ /dev/null @@ -1,4 +0,0 @@ -bin/casper-reconfigure usr/share/casper -bin/casper-preseed usr/share/casper -hooks usr/share/initramfs-tools -scripts usr/share/initramfs-tools diff --git a/debian/changelog b/debian/changelog index f2182d6..030dd54 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +casper (1.61+debian-1) unstable; urgency=low + + [ Daniel Baumann ] + * Rebuild tarball without debian directory. + * Using dpatch for upstream modifications. + * Added patch for proper GDM autologin from Arnaud Cornet + . + + [ Marco Amadori ] + * New upstream release (Resynced with 1.61, bzr 258). + * Usb discover patch from Malcom Gilles . + -- Marco Amadori Tue, 18 Jul 2006 23:34:59 +0200 + casper (1.59+debian-1) unstable; urgency=low [ Daniel Baumann ] diff --git a/debian/changelog.upstream b/debian/changelog.upstream index c27fcbe..f979257 100644 --- a/debian/changelog.upstream +++ b/debian/changelog.upstream @@ -1,10 +1,19 @@ -casper (1.59) UNRELEASED; urgency=low +casper (1.61) edgy; urgency=low + + * Move PATH setting to top of casper script to avoid silliness where + PATH isn't correctly set. + + -- Tollef Fog Heen Mon, 17 Jul 2006 12:53:59 +0200 + +casper (1.60) edgy; urgency=low * Change start symlinks to kill symlinks for anacron, to avoid it being started by invoke-rc.d and similar. * Rearrange source package. * Redo how the init script works and require it to be installed in the live fs. + * Bump version number to be higher than Debian's so we don't + automatically sync. -- Tollef Fog Heen Wed, 31 May 2006 00:01:40 +0200 @@ -1077,3 +1086,4 @@ casper (0.1) hoary; urgency=low * Initial Release. -- Matt Zimmerman Wed, 5 Jan 2005 14:30:28 -0800 + diff --git a/debian/control b/debian/control index 95a9674..0012c86 100644 --- a/debian/control +++ b/debian/control @@ -3,14 +3,14 @@ Section: admin Priority: optional Maintainer: Marco Amadori Uploaders: Daniel Baumann -Build-Depends: debhelper (>= 4) +Build-Depends: debhelper (>= 4), dpatch Standards-Version: 3.7.2 Package: casper -Section: admin Architecture: any Depends: initramfs-tools (>= 0.40), user-setup Conflicts: usplash (<< 0.1-30) +Recommends: live-package Suggests: dmsetup Description: Debian Live initramfs generator Casper provides an initramfs generator suited for booting a Debian Live systems diff --git a/debian/casper.dirs b/debian/dirs similarity index 100% rename from debian/casper.dirs rename to debian/dirs diff --git a/debian/examples b/debian/examples new file mode 100644 index 0000000..195687c --- /dev/null +++ b/debian/examples @@ -0,0 +1 @@ +casper.conf diff --git a/debian/casper.init b/debian/init.d old mode 100755 new mode 100644 similarity index 82% rename from debian/casper.init rename to debian/init.d index 797d230..6d2d6d3 --- a/debian/casper.init +++ b/debian/init.d @@ -2,7 +2,7 @@ grep -qs boot=casper /proc/cmdline || exit 0 -# Try to cache everything we're likely to need after ejecting. This +# Try to cache everything we're likely to need after ejecting. This # is fragile and simple-minded, but our options are limited. cache_path() { path="$1" @@ -25,10 +25,10 @@ for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default; do cache_path "$path" done -eject -p -m /live_media >/dev/null 2>&1 +eject -p -m /cdrom >/dev/null 2>&1 # XXX - i18n -echo -n "Please remove the disc (if any), close the tray (if any) and press ENTER: " +echo -n "Please remove the disc, 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)" diff --git a/debian/install b/debian/install new file mode 100644 index 0000000..3253fd7 --- /dev/null +++ b/debian/install @@ -0,0 +1,5 @@ +bin/casper-preseed /usr/share/casper +bin/casper-reconfigure /usr/share/casper +casper-md5check/casper-md5check /usr/lib/casper +hooks /usr/share/initramfs-tools +scripts /usr/share/initramfs-tools diff --git a/debian/casper.lintian b/debian/lintian similarity index 100% rename from debian/casper.lintian rename to debian/lintian diff --git a/debian/patches/00list b/debian/patches/00list new file mode 100644 index 0000000..4997088 --- /dev/null +++ b/debian/patches/00list @@ -0,0 +1 @@ +01-conglomeration diff --git a/debian/patches/01-conglomeration.dpatch b/debian/patches/01-conglomeration.dpatch new file mode 100644 index 0000000..f9d868e --- /dev/null +++ b/debian/patches/01-conglomeration.dpatch @@ -0,0 +1,586 @@ +#!/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 17:38:18.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 17:38:18.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 17:38:18.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 17:38:18.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 17:38:18.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 17:38:18.000000000 +0000 +@@ -28,7 +28,9 @@ + 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 <> /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 17:38:18.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 17:48:50.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 17:38:18.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 17:38:18.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 17:38:18.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 17:38:18.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 diff --git a/debian/casper.postinst b/debian/postinst similarity index 100% rename from debian/casper.postinst rename to debian/postinst diff --git a/debian/rules b/debian/rules index 1b140bb..53b9e33 100755 --- a/debian/rules +++ b/debian/rules @@ -3,38 +3,37 @@ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 -VERSION:=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p') -DEB_BUILD_PROG:=dpkg-buildpackage -us -uc -rfakeroot +include /usr/share/dpatch/dpatch.make -upstream: - cd .. && bzr branch http://mammadori.homeip.net/bzr/casper-debian || exit 0 - rm .bzr -rf - find . -type d -name .svn -exec rm -rf {} \; || exit 0 - -build: build-stamp +build: patch-stamp build-stamp build-stamp: dh_testdir + # Building package $(MAKE) -C casper-md5check touch build-stamp -clean: +clean: unpatch dh_testdir - rm -f build-stamp + rm -f patch-stamp build-stamp + # Cleaning package -$(MAKE) -C casper-md5check clean dh_clean install: build dh_testdir + dh_testroot dh_clean -k dh_installdirs dh_install - install -m755 casper-md5check/casper-md5check debian/casper/usr/lib/casper - install -D -m 644 debian/casper.lintian debian/casper/usr/share/lintian/overrides/casper + # Installing lintian override + install -D -m 0644 debian/lintian debian/casper/usr/share/lintian/overrides/casper + + # Fixing permission chmod 0755 debian/casper/usr/share/initramfs-tools/scripts/casper binary-indep: build install @@ -42,9 +41,10 @@ binary-indep: build install binary-arch: build install dh_testdir dh_testroot + dh_installchangelogs debian/changelog.upstream dh_installdocs + dh_installexamples dh_installinit -r --no-start -- start 89 0 6 . - dh_installchangelogs debian/changelog.upstream dh_link dh_strip dh_compress diff --git a/debian/ubiquity-casper.install b/debian/ubiquity-casper.install deleted file mode 100644 index 866ebdd..0000000 --- a/debian/ubiquity-casper.install +++ /dev/null @@ -1,2 +0,0 @@ -bin/casper-reconfigure usr/bin -ubiquity-hooks/* usr/lib/ubiquity/target-config diff --git a/hooks/casper b/hooks/casper index 7229612..8779944 100755 --- a/hooks/casper +++ b/hooks/casper @@ -18,17 +18,10 @@ 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 @@ -37,25 +30,16 @@ mkdir -p ${DESTDIR}/lib/casper copy_exec /usr/share/casper/casper-reconfigure /bin copy_exec /usr/share/casper/casper-preseed /bin -# 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 - +mkdir -p ${DESTDIR}/lib/udev +copy_exec /lib/udev/cdrom_id /lib/udev +copy_exec /lib/udev/vol_id /lib/udev +copy_exec /lib/udev/path_id /lib/udev copy_exec /usr/bin/udevinfo /bin -# 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 +# Needed for devmapper +copy_exec /sbin/blockdev /sbin +copy_exec /sbin/dmsetup /sbin +manual_add_modules dm-snapshot # squashfs manual_add_modules squashfs diff --git a/scripts/casper b/scripts/casper index 2557595..3d8c453 100644 --- a/scripts/casper +++ b/scripts/casper @@ -2,9 +2,9 @@ # set -e -mountpoint=/live_media -root_persistence="casper-rw" -home_persistence="home-rw" +export PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:/usr/bin:/usr/sbin:/bin:/sbin + +mountpoint=/cdrom mkdir -p $mountpoint @@ -13,15 +13,15 @@ if [ "${DPKG_ARCH}" = "ia64" ] || [ "${DPKG_ARCH}" = "hppa" ] || [ "${DPKG_ARCH} overlay_method=devmapper fi -USERNAME=debian -USERFULLNAME="Debian Live user" -HOST=debian +USERNAME=ubuntu +USERFULLNAME="Ubuntu LiveCD user" +HOST=ubuntu [ -f /etc/casper.conf ] && . /etc/casper.conf export USERNAME USERFULLNAME HOST -casper_path() { # Fixme: uglyness +casper_path() { path=$1 if [ -e "$path/casper/filesystem.cloop" ]; then echo "$path/casper/filesystem.cloop" @@ -29,12 +29,6 @@ casper_path() { # Fixme: uglyness 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 } @@ -55,7 +49,7 @@ get_backing_device() { *.cloop) echo $(setup_loop "$1" "cloop" "/sys/block/cloop*") ;; - *.squashfs|*.ext2|*.xfs) + *.squashfs) echo $(setup_loop "$1" "loop" "/sys/block/loop*") ;; *) @@ -84,12 +78,8 @@ setup_loop() { local module=$2 local pattern=$3 - modprobe -qb "$module" - if [ -x /sbin/udevplug ]; then - udevplug -W - else - udevtrigger - fi + modprobe -Qb "$module" + udevplug -W for loopdev in $pattern; do if [ "$(cat $loopdev/size)" -eq 0 ]; then @@ -117,7 +107,7 @@ setup_devmapper() { backdev="$1" rootmnt="$2" - modprobe -qb dm-mod + modprobe -Qb dm-mod COW_DEVICE=/dev/ram1 COW_NAME="casper-cow" @@ -153,126 +143,71 @@ where_is_mounted() { return 1 } -copy_to_ram() { - copyto="${mountpoint}_swap" - - 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=" + 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 - [ "$quiet" != "y" ] && log_begin_msg "Mounting using mount.cifs with ${NFSROOT} ${rofsmnt} ${NFSOPTS}" - mount.cifs "${NFSROOT}" "${rofsmnt}" "${NFSOPTS}" - [ "$quiet" != "y" ] && log_end_msg + 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 } setup_unionfs() { backdev="$1" rootmnt="$2" - 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 - - mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount $cowdevice on /cow" + 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 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 - + 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" - - # 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 + 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" } is_usb_device() { @@ -283,7 +218,7 @@ is_usb_device() { return 1 } -find_live() { +find_cd() { mounted= for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do devname=$(sys2dev "${sysblock}") @@ -348,32 +283,24 @@ mountroot() { 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_live) + live_image=$(find_cd) if [ "${live_image}" ]; then break fi sleep 1 done if [ "$?" -gt 0 ]; then - panic "Unable to find a medium containing a live file system" + panic "Unable to find a CD-ROM 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 [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom" - PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:$PATH run_scripts /scripts/casper-bottom + run_scripts /scripts/casper-bottom [ "$quiet" != "y" ] && log_end_msg exec 1>&6 6>&- diff --git a/scripts/casper-bottom/01integrity_check b/scripts/casper-bottom/01integrity_check index 8c8e153..637a1ff 100755 --- a/scripts/casper-bottom/01integrity_check +++ b/scripts/casper-bottom/01integrity_check @@ -15,4 +15,4 @@ prereqs) ;; esac -grep integrity-check /proc/cmdline && casper-md5check /live_media /live_media/md5sum.txt < /dev/tty8 +grep integrity-check /proc/cmdline && casper-md5check /cdrom /cdrom/md5sum.txt < /dev/tty8 diff --git a/scripts/casper-bottom/10adduser b/scripts/casper-bottom/10adduser index dc8aaa8..a37d831 100755 --- a/scripts/casper-bottom/10adduser +++ b/scripts/casper-bottom/10adduser @@ -28,9 +28,7 @@ set passwd/username $USERNAME set passwd/user-uid 999 EOF -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 +chroot /root /usr/lib/user-setup/user-setup-apply > /dev/null # Clear out debconf database again to avoid confusing ubiquity later. chroot /root debconf-communicate -fnoninteractive casper > /dev/null <> /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 + 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 + fi +done + if [ -L /root/home/$USERNAME/Examples ]; then chroot /root install -o $USERNAME -g $USERNAME -d /home/$USERNAME/Desktop/ mv /root/home/$USERNAME/Examples /root/home/$USERNAME/Desktop/ diff --git a/scripts/casper-bottom/14locales b/scripts/casper-bottom/14locales index 6d5b73c..d9343cd 100755 --- a/scripts/casper-bottom/14locales +++ b/scripts/casper-bottom/14locales @@ -20,33 +20,18 @@ esac log_begin_msg "$DESCRIPTION" -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 +locale=en_US.UTF-8 for x in $(cat /proc/cmdline); do - case $x in - debian-installer/locale=*) - locale=${x#debian-installer/locale=} - set_locale="true" - ;; - esac + case $x in + debian-installer/locale=*) + locale=${x#debian-installer/locale=} + ;; + esac done -if [ -z "${locale}" ]; then - # Set a default one - locale=en_US.UTF-8 - set_locale="true" -fi - -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 +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}" log_end_msg diff --git a/scripts/casper-bottom/22gnome_panel_data b/scripts/casper-bottom/22gnome_panel_data index 7bedd7a..b232c27 100755 --- a/scripts/casper-bottom/22gnome_panel_data +++ b/scripts/casper-bottom/22gnome_panel_data @@ -20,10 +20,8 @@ esac log_begin_msg "$DESCRIPTION" -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 +if chroot /root /bin/sh -c laptop-detect; then + casper-reconfigure /root gnome-panel-data fi panel_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gnome-panel-data 2>/dev/null) || panel_version="" diff --git a/scripts/casper-bottom/23networking b/scripts/casper-bottom/23networking index 7238773..021aca9 100755 --- a/scripts/casper-bottom/23networking +++ b/scripts/casper-bottom/23networking @@ -27,11 +27,7 @@ iface lo inet loopback EOF -if [ -x /sbin/udevplug ]; then - udevplug -Bpci -Iclass="0x02*" -else - udevtrigger -fi +udevplug -Bpci -Iclass="0x02*" for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do [ -e $interface ] || continue diff --git a/scripts/casper-bottom/25configure_init b/scripts/casper-bottom/25configure_init index 0c5c43e..12e6315 100755 --- a/scripts/casper-bottom/25configure_init +++ b/scripts/casper-bottom/25configure_init @@ -28,11 +28,9 @@ fi # This has the nice side effect of the cron.{daily,weekly,monthly} jobs in # /etc/crontab remaining disabled, yet also not run by anacron -if [ -x /root/etc/init.d/anacron ]; then - for f in /root/etc/rc?.d/S??anacron; do - mv ${f} $(dirname ${f})/K00anacron - done -fi +for f in /root/etc/rc?.d/S??anacron; do + mv ${f} ${f%/*}/K00anacron +done # No point, really rm -f /root/etc/rc?.d/[SK]??postfix @@ -42,8 +40,15 @@ rm -f /root/etc/rc?.d/K??hwclock.sh # Disable readahead since it doesn't play well with squashfs + unionfs # use chmod instead of mv to not trigger unionfs bugs. -if [ -e /root/sbin/readahead-list ]; then - chmod -x /root/sbin/readahead-list +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 fi log_end_msg diff --git a/scripts/casper-bottom/33disable_binary_drivers b/scripts/casper-bottom/33disable_binary_drivers index 4e4fec3..52bcbf4 100755 --- a/scripts/casper-bottom/33disable_binary_drivers +++ b/scripts/casper-bottom/33disable_binary_drivers @@ -20,6 +20,4 @@ esac 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 +echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common diff --git a/ubiquity-hooks/30accessibility b/ubiquity-hooks/30accessibility new file mode 100755 index 0000000..4d871fd --- /dev/null +++ b/ubiquity-hooks/30accessibility @@ -0,0 +1,67 @@ +#!/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 -- 2.1.4