From 8a4793dbe68ec2e28f0dbcc123f13339f57fac2b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 23 Sep 2007 14:46:24 +0200 Subject: [PATCH 1/1] Adding casper 1.68+debian-1. --- casper-md5check/casper-md5check.c | 28 ++++++++++++++--- debian/changelog | 10 ++++++ debian/changelog.upstream | 18 +++++++++++ debian/control | 4 +-- debian/control.debian | 4 +-- debian/control.ubuntu | 2 +- scripts/casper | 54 +++++++++++++++++++-------------- scripts/casper-bottom/02etc_casper_conf | 7 +++++ scripts/casper-bottom/19keyboard | 32 ++++++++++++++----- scripts/casper-bottom/22screensaver | 10 +++++- scripts/casper-bottom/23networking | 44 ++++++++++++++++++--------- scripts/casper-bottom/25configure_init | 14 ++++++--- scripts/casper-bottom/30accessibility | 21 ++++++++++++- ubiquity-hooks/20xconfig | 2 +- ubiquity-hooks/30accessibility | 4 +++ 15 files changed, 194 insertions(+), 60 deletions(-) diff --git a/casper-md5check/casper-md5check.c b/casper-md5check/casper-md5check.c index 0571e49..1e9d1bb 100644 --- a/casper-md5check/casper-md5check.c +++ b/casper-md5check/casper-md5check.c @@ -100,6 +100,23 @@ void usplash_text(int fd, char *format, ...) { free(s1); } +void usplash_urgent(int fd, char *format, ...) { + char *s, *s1; + va_list argp; + + va_start(argp, format); + vasprintf(&s, format, argp); + va_end(argp); + + asprintf(&s1, "TEXT-URGENT %s", s); + + write_and_retry(fd, s1); + + free(s); + free(s1); +} + + void usplash_success(int fd, char *format, ...) { char *s, *s1; va_list argp; @@ -173,10 +190,13 @@ int main(int argc, char **argv) { if (pipe_fd == -1) { /* We can't really do anything useful here */ + perror("Opening pipe"); exit(1); } + usplash_progress(pipe_fd, 0); + usplash_urgent(pipe_fd, "Checking integrity, this may take some time"); md5_file = fopen(argv[2], "r"); if (!md5_file) { perror("fopen md5_file"); @@ -214,7 +234,7 @@ int main(int argc, char **argv) { while (rsize > 0) { csize += rsize; - usplash_progress(pipe_fd, floorl(100*csize/tsize)); + usplash_progress(pipe_fd, floorl(100*((long double)csize)/tsize)); md5_append(&state, (const md5_byte_t *)buf, rsize); rsize = read(check_fd, buf, sizeof(buf)); @@ -235,9 +255,9 @@ int main(int argc, char **argv) { free(checksum); free(checkfile); } - usplash_text(pipe_fd, "Check finished, %d checksums failed", failed); - usplash_text(pipe_fd, "Press any key to reboot your system"); - usplash_timeout(pipe_fd, 0); + usplash_urgent(pipe_fd, "Check finished, %d checksums failed", failed); + usplash_urgent(pipe_fd, "Press any key to reboot your system"); + usplash_timeout(pipe_fd, 86400); set_nocanonical_tty(0); getchar(); reboot(LINUX_REBOOT_CMD_RESTART); diff --git a/debian/changelog b/debian/changelog index 33da0a9..125ea94 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +casper (1.68+debian-1) unstable; urgency=low + + * New upstream release. + * Added static network configuration support. + * Fixed gnome-screensaver-lock differences between ubuntu. + * username, host, and userfullname are now also settable + via kernel parameters. + + -- Marco Amadori Fri, 8 Sep 2006 11:26:02 +0200 + casper (1.66+debian-1) unstable; urgency=low * Added "magic" to make it work seamlessy also on ubuntu systems. diff --git a/debian/changelog.upstream b/debian/changelog.upstream index 6eb6873..bcf6f11 100644 --- a/debian/changelog.upstream +++ b/debian/changelog.upstream @@ -1,3 +1,21 @@ +casper (1.68) edgy; urgency=low + + * Honour console-setup/layoutcode and console-setup/variantcode preseeding + (closes: Malone #61573). + + -- Colin Watson Fri, 22 Sep 2006 16:09:53 +0100 + +casper (1.67) edgy; urgency=low + + * Make sure to write xorg.conf md5sum to the installed system, not the + live system in ubiquity-hooks/20xconfig + * Implement support for setting KDE's accessibility options too, thanks + to Jonathan Riddell for the patch. + * Use usplash's TEXT-URGENT for important messages when doing md5 checks + * Fix flashing of progress bar on 32 bit arches + + -- Tollef Fog Heen Wed, 23 Aug 2006 14:34:57 +0200 + casper (1.66) edgy; urgency=low * Fix use of db_get in ubiquity accessibility hook. diff --git a/debian/control b/debian/control index cd9eee6..34be909 100644 --- a/debian/control +++ b/debian/control @@ -8,8 +8,8 @@ Standards-Version: 3.7.2 Package: casper Architecture: any -Depends: initramfs-tools (>= 0.40), user-setup -Conflicts: usplash (<< 0.1-30) +Depends: initramfs-tools (>= 0.40), user-setup, sudo +Conflicts: usplash (<< 0.4-27) Recommends: live-package Suggests: dmsetup Description: Debian Live initramfs generator diff --git a/debian/control.debian b/debian/control.debian index cd9eee6..34be909 100644 --- a/debian/control.debian +++ b/debian/control.debian @@ -8,8 +8,8 @@ Standards-Version: 3.7.2 Package: casper Architecture: any -Depends: initramfs-tools (>= 0.40), user-setup -Conflicts: usplash (<< 0.1-30) +Depends: initramfs-tools (>= 0.40), user-setup, sudo +Conflicts: usplash (<< 0.4-27) Recommends: live-package Suggests: dmsetup Description: Debian Live initramfs generator diff --git a/debian/control.ubuntu b/debian/control.ubuntu index a8ab8de..6767acc 100644 --- a/debian/control.ubuntu +++ b/debian/control.ubuntu @@ -10,7 +10,7 @@ Architecture: any Section: misc Priority: extra Depends: initramfs-tools (>= 0.40ubuntu11), dmsetup, user-setup, sudo -Conflicts: usplash (<< 0.1-30) +Conflicts: usplash (<< 0.4-27) Description: Run a "live" preinstalled system from read-only media Package: ubiquity-casper diff --git a/scripts/casper b/scripts/casper index 3e4ed06..c019e3b 100644 --- a/scripts/casper +++ b/scripts/casper @@ -6,20 +6,9 @@ export PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:/usr/bin:/usr/sbin mountpoint=/live_media -# Will be mounted if found as copy on write instead of tmpfs root_persistence="casper-rw" - -# TODO -## Each file found with this pattern will be mounted directly in the -## mountpoint extracted from file name "${other_mounts_pattern}" -#other_mounts_pattern="casper-mount-" home_persistence="home-rw" -#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" @@ -40,14 +29,32 @@ fi # looking for casper specifics options as kernel parameters for x in $(cat /proc/cmdline); do case $x in + userfullname*) + export USERFULLNAME=${x#userfullname=} + export CASPERCONF="changed" + ;; + host*) + export HOST=${x#host=} + export CASPERCONF="changed" + ;; + username*) + export USERNAME=${x#username=} + export CASPERCONF="changed" + ;; netboot*) export NETBOOT=${x#netboot=} ;; toram) export TORAM=1 ;; - show-cow) - export SHOWCOW=1 ;; + hide-cow) + export HIDECOW=1 ;; persistent) export PERSISTENT=1 ;; + staticip*) + STATICIP=${x#staticip=} + if [ "${STATICIP}" == "" ]; then + STATICIP="frommedia" + fi + export STATICIP ;; casper-getty) export CASPERGETTY=1 ;; esac @@ -155,8 +162,6 @@ setup_loop() { } get_fstype() { - #FIXME# one use of this function expects "unknown" another does not! - # which is it??? local FSTYPE local FSSIZE eval $(fstype < $1) @@ -374,7 +379,7 @@ setup_unionfs() { mkdir -p /cow cowdevice="tmpfs" cow_fstype="tmpfs" - + # Looking for "${root_persistence}" device or file if [ ! -z "${PERSISTENT}" ]; then cowprobe=$(find_cow_device "${root_persistence}") @@ -382,19 +387,24 @@ setup_unionfs() { cowdevice=${cowprobe} cow_fstype=$(get_fstype "${cowprobe}") else - [ "$quiet" != "y" ] && log_begin_msg "Unable to find the persistent medium" + [ "$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" + + # Look for a snapshot to copy + mount -t unionfs -o dirs=/cow=rw:$rofsstring unionfs "$rootmnt" || panic "Unionfs mount failed" - + for d in ${rofslist}; do mkdir -p "${rootmnt}/casper/${d##*/}" case d in - *.dir) mount -o bind "${d}" "${rootmnt}/casper/${d##*/}" ;; - *) mount -o move "${d}" "${rootmnt}/casper/${d##*/}" ;; + *.dir) # do nothing # mount -o bind "${d}" "${rootmnt}/casper/${d##*/}" + ;; + *) mount -o move "${d}" "${rootmnt}/casper/${d##*/}" + ;; esac done @@ -408,7 +418,7 @@ setup_unionfs() { fi fi - if [ ! -z "${SHOWCOW}" ]; then + if [ -z "${HIDECOW}" ]; then mkdir -p "$rootmnt/cow" mount -o bind /cow "$rootmnt/cow" fi @@ -416,7 +426,7 @@ setup_unionfs() { is_usb_device() { sysfs_path="${1#/sys}" - if /lib/udev/path_id "${sysfs_path}" | grep -Eq "ID_PATH=(usb|pci-[^-]*-usb)"; then + if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-usb)"; then return 0 fi return 1 diff --git a/scripts/casper-bottom/02etc_casper_conf b/scripts/casper-bottom/02etc_casper_conf index fd19ac9..7c4d08d 100644 --- a/scripts/casper-bottom/02etc_casper_conf +++ b/scripts/casper-bottom/02etc_casper_conf @@ -17,7 +17,14 @@ esac if [ -f /etc/casper.conf ] ; then + if [ ! -z "${CASPERCONF}" ]; then + # Updating casper.conf + sed -i -e 's/\(USERNAME="\).*"/\1'"${USERNAME}"'"/g' \ + -e 's/\(USERFULLNAME="\).*"/\1'"${USERFULLNAME}"'"/g' \ + -e 's/\(HOST="\).*"/\1'"${HOST}"'"/g' /etc/casper.conf + fi cp -p /etc/casper.conf /root/etc/casper.conf + else cat </root/etc/casper.conf export USERNAME="$USERNAME" diff --git a/scripts/casper-bottom/19keyboard b/scripts/casper-bottom/19keyboard index 895a698..d738faf 100755 --- a/scripts/casper-bottom/19keyboard +++ b/scripts/casper-bottom/19keyboard @@ -21,15 +21,33 @@ esac log_begin_msg "$DESCRIPTION" kbd=us +cslayout= +csvariant= for x in $(cat /proc/cmdline); do - case $x in - kbd-chooser/method=*) - kbd=${x#kbd-chooser/method=} - ;; - esac + case $x in + kbd-chooser/method=*) + kbd=${x#kbd-chooser/method=} + ;; + console-setup/layoutcode=*) + cslayout=${x#console-setup/layoutcode=} + ;; + console-setup/variantcode=*) + csvariant=${x#console-setup/variantcode=} + ;; + esac done -chroot /root /usr/sbin/install-keymap $kbd -casper-preseed /root debian-installer/keymap "$kbd" +if [ "$cslayout" ] && [ -x /root/bin/setupcon ] && \ + [ -f /etc/default/console-setup ]; then + chroot /root sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$cslayout\"/" \ + /etc/default/console-setup + if [ "$csvariant" ]; then + chroot /root sed -i "s/^XKBVARIANT=.*/XKBVARIANT=\"$csvariant\"/" \ + /etc/default/console-setup + fi +else + chroot /root /usr/sbin/install-keymap $kbd + casper-preseed /root debian-installer/keymap "$kbd" +fi log_end_msg diff --git a/scripts/casper-bottom/22screensaver b/scripts/casper-bottom/22screensaver index 6719f5f..ff3ec81 100755 --- a/scripts/casper-bottom/22screensaver +++ b/scripts/casper-bottom/22screensaver @@ -20,9 +20,17 @@ esac log_begin_msg "$DESCRIPTION" + gnome_screensaver_version=$(chroot /root dpkg-query -W --showformat='${Version}' gnome-screensaver 2>/dev/null) || gnome_screensaver_version="" + +if [ "${BUILD_SYSTEM}" == "Ubuntu" ]; then + gnome_screensaver_lock="/apps/gnome-screensaver/lock" +else + gnome_screensaver_lock="/apps/gnome-screensaver/lock_enabled" +fi + if [ -n "$gnome_screensaver_version" ]; then - chroot /root sudo -u "$USERNAME" gconftool-2 -t bool -s /apps/gnome-screensaver/lock false + chroot /root sudo -u "$USERNAME" gconftool-2 -t bool -s "${gnome_screensaver_lock}" false fi log_end_msg diff --git a/scripts/casper-bottom/23networking b/scripts/casper-bottom/23networking index 10d4ab2..8f4b698 100755 --- a/scripts/casper-bottom/23networking +++ b/scripts/casper-bottom/23networking @@ -21,34 +21,48 @@ esac log_begin_msg "$DESCRIPTION" +if [ "${STATICIP}" == "frommedia" ] && [ -e "$IFFILE" ] ; then + # will use existent /etc/network/interfaces + log_end_msg + exit 0 +fi + cat > "$IFFILE" <> "$IFFILE" <> "$IFFILE" <> "$IFFILE" <> "$IFFILE" </dev/\2 2>\&1|" /root/etc/inittab - else - sed -i -e'/^[^#]/s%respawn:/sbin/getty%respawn:/sbin/casper-getty%' /root/etc/inittab + if [ ! -z "${CASPERGETTY}" ]; then # AUTOMATIC SERIAL CONSOLE # defconsole=$(sed -e 's%.*console=%console=%' /proc/cmdline) if echo "${defconsole}" | grep -qs console=ttyS; then @@ -50,6 +47,15 @@ if [ -n "$USERNAME" ]; then >>/root/etc/inittab fi fi + else + if [ -f /root/etc/inittab ]; then + sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME /dev/\2 2>\&1|" /root/etc/inittab + fi + if [ "/root/etc/event.d/tty*" != "$(echo /root/etc/event.d/tty*)" ]; then + for f in /root/etc/event.d/tty*; do + sed -i -e "s|^respawn.*|respawn /bin/login -f $USERNAME /dev/$(basename $f) 2>\&1|" $f + done + fi fi fi diff --git a/scripts/casper-bottom/30accessibility b/scripts/casper-bottom/30accessibility index 8352fb6..b0c049b 100755 --- a/scripts/casper-bottom/30accessibility +++ b/scripts/casper-bottom/30accessibility @@ -20,8 +20,18 @@ esac log_begin_msg "$DESCRIPTION" +gconf_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gconf-2 2>/dev/null) || gconf_version="" + gct() { - chroot /root sudo -u "$USERNAME" gconftool-2 "$@" + if [ "$gconf_version" ]; then + chroot /root sudo -u "$USERNAME" gconftool-2 "$@" + fi +} + +kderc_addtoprefixes() { + if [ -e "/root/etc/kderc" ]; then + sed -i "s|\\(prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/\\)|\\1,$1|" /root/etc/kderc + fi } for x in $(cat /proc/cmdline); do @@ -40,6 +50,9 @@ for x in $(cat /proc/cmdline); do gct -s -t string /desktop/gnome/background/color_shading_type solid gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48 gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass + + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/ + fi ;; # Moderate Visual Impairment access=v2) @@ -47,6 +60,8 @@ for x in $(cat /proc/cmdline); do 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 + + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-impairment/ ;; # Blindness access=v3) @@ -66,6 +81,8 @@ for x in $(cat /proc/cmdline); do gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700 gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10 + + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/ ;; # Motor Difficulties - pointing devices access=m2) @@ -75,6 +92,8 @@ for x in $(cat /proc/cmdline); do 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 + + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/ ;; esac done diff --git a/ubiquity-hooks/20xconfig b/ubiquity-hooks/20xconfig index 6f8becd..92d7097 100755 --- a/ubiquity-hooks/20xconfig +++ b/ubiquity-hooks/20xconfig @@ -5,7 +5,7 @@ if [ -f /etc/X11/xorg.conf ]; then cp -a /etc/X11/xorg.conf /target/etc/X11/xorg.conf # requires x11-common (>= 7.0.0-0ubuntu1) mkdir -p /target/var/lib/x11 - chroot /target md5sum /etc/X11/xorg.conf > /var/lib/x11/xorg.conf.md5sum + chroot /target sh -c 'md5sum /etc/X11/xorg.conf > /var/lib/x11/xorg.conf.md5sum' fi exit 0 diff --git a/ubiquity-hooks/30accessibility b/ubiquity-hooks/30accessibility index 9fcfc26..967c30c 100755 --- a/ubiquity-hooks/30accessibility +++ b/ubiquity-hooks/30accessibility @@ -27,6 +27,7 @@ for x in $(cat /proc/cmdline); do 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 + sed -i s.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/,/usr/share/kubuntu-default-settings/kde-profile/lesser-visual-imparement/. /etc/kderc ;; # Moderate Visual Impairment access=v2) @@ -34,6 +35,7 @@ for x in $(cat /proc/cmdline); do 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 + sed -i s.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/,/usr/share/kubuntu-default-settings/kde-profile/lesser-visual-imparement/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-imparement/. /etc/kderc ;; # Blindness access=v3) @@ -53,6 +55,7 @@ for x in $(cat /proc/cmdline); do 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 + sed -i s.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/,/usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/. /etc/kderc ;; # Motor Difficulties - pointing devices access=m2) @@ -62,6 +65,7 @@ for x in $(cat /proc/cmdline); do 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 + sed -i s.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/.prefixes=/usr/share/kubuntu-default-settings/kde-profile/default/,/usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/. /etc/kderc ;; esac done -- 2.1.4