diff options
Diffstat (limited to 'scripts')
24 files changed, 509 insertions, 498 deletions
diff --git a/scripts/casper b/scripts/casper index 545942e..a4c78b3 100644..100755 --- a/scripts/casper +++ b/scripts/casper @@ -4,22 +4,20 @@ export PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:/usr/bin:/usr/sbin:/bin:/sbin -mountpoint=/live_media +echo "/root/lib" >> /etc/ld.so.conf +echo "/root/usr/lib" >> /etc/ld.so.conf -root_persistence="casper-rw" -home_persistence="home-rw" -root_snapshot_label="casper-sn" -home_snapshot_label="home-sn" +mountpoint=/cdrom -USERNAME="casper" +USERNAME=casper USERFULLNAME="Live session user" -HOSTNAME="live" -BUILD_SYSTEM="Custom" +HOST=live +BUILD_SYSTEM=Custom mkdir -p $mountpoint [ -f /etc/casper.conf ] && . /etc/casper.conf -export USERNAME USERFULLNAME HOSTNAME BUILD_SYSTEM +export USERNAME USERFULLNAME HOST BUILD_SYSTEM . /scripts/casper-helpers @@ -27,98 +25,6 @@ if [ ! -f /casper.vars ]; then touch /casper.vars fi -parse_cmdline () -{ - PRESEEDS= - # 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" - ;; - hostname=*) - export HOSTNAME=${x#hostname=} - export CASPERCONF="changed" - ;; - username=*) - export USERNAME=${x#username=} - export CASPERCONF="changed" - ;; - netboot*) - export NETBOOT=${x#netboot=} ;; - access=*) - export ACCESS=${x#access=} ;; - xdebconf) - export XDEBCONF="Yes" ;; - toram) - export TORAM="Yes" ;; - todisk=*) - export TODISK=${x#todisk=} ;; - showmounts) - export SHOWMOUNTS="Yes" ;; - persistent) - export PERSISTENT="Yes" ;; - nopersistent) - export PERSISTENT="" ;; - ip*) - STATICIP=${x#ip=} - if [ "${STATICIP}" == "" ]; then - STATICIP="frommedia" - fi - export STATICIP ;; - casper-getty) - export CASPERGETTY=1 ;; - bootfrom=*|live-media=*) - export LIVEMEDIA=${x#*=} ;; - live-media-encryption=*|encryption=*) - export LIVEMEDIA_ENCRYPTION=${x#*=} ;; - live-media-timeout=*) - export LIVEMEDIA_TIMEOUT=${x#live-media-timeout=} ;; - live-media-offset=*) - export LIVEMEDIA_OFFSET=${x#live-media-offset=} ;; - locale=*|debian-installer/locale=*) - export LOCALE=${x#*=} ;; - keyb=*|kbd-chooser/method=*) - export KBD=${x#*=} ;; - klayout=*|console-setup/layoutcode=*) - export KLAYOUT=${x#*=} ;; - koptions=*) - export KOPTIONS=${x#koptions=} ;; - kvariant=*|console-setup/variantcode=*) - export KVARIANT=${x#*=} ;; - kmodel=*|console-setup/modelcode=*) - export KMODEL=${x#*=} ;; - module=*) - export MODULE=${x#module=} ;; - preseed/file=*|file=*) - export LOCATION="${x#*=}" ;; - */*=*) - question="${x%%=*}" - value="${x#*=}" - PRESEEDS="${PRESEEDS}\"${question}=${value}\" " - ;; - console=*) - export DEFCONSOLE="${x#*=}" ;; - esac - done - - # sort of compatibility with netboot.h from linux docs - if [ -z "${NETBOOT}" ]; then - if [ "${ROOT}" == "/dev/nfs" ]; then - NETBOOT="nfs" - export NETBOOT - elif [ "${ROOT}" == "/dev/cifs" ]; then - NETBOOT="cifs" - export NETBOOT - fi - fi - - if [ -z "${MODULE}" ]; then - MODULE=order - fi -} - is_casper_path() { path=$1 if [ -d "$path/casper" ]; then @@ -134,7 +40,7 @@ is_casper_path() { get_backing_device() { case "$1" in *.squashfs|*.ext2) - echo $(setup_loop "$1" "loop" "/sys/block/loop*" '0' "${LIVEMEDIA_ENCRYPTION}") + echo $(setup_loop "$1" "loop" "/sys/block/loop*") ;; *.dir) echo "directory" @@ -233,6 +139,9 @@ do_netmount() { modprobe "${MP_QUIET}" af_packet # For DHCP + udevtrigger + udevsettle + ipconfig ${DEVICE} /tmp/net-${DEVICE}.conf | tee /netboot.config if [ "${NFSROOT}" = "auto" ]; then @@ -411,46 +320,28 @@ setup_unionfs() { roopt="ro" fi - # Read image names from ${MODULE}.lst if it exists - if [ -e "${image_directory}/${MODULE}.lst" ]; then - for image in $(cat "${image_directory}/${MODULE}.lst"); do - image_string="${image_string} ${image_directory}/${image}"; - done - else - # If ${MODULE}.lst does not exist, create a list of images - for image_type in "ext2" "squashfs" "dir"; do - for image in "${image_directory}"/*."${image_type}"; do - if [ -e "${image}" ]; then - image_string="${image_string} ${image}"; - fi - done - done - # Now sort the list - image_string=$(echo ${image_string} | sed -e 's/ /\n/g' | sort ) - fi - mkdir -p "${croot}" - for image in ${image_string}; do - imagename=$(basename "${image}") - if [ -d "${image}" ]; then - # it is a plain directory: do nothing - rofsstring="${image}=${roopt}:${rofsstring}" - rofslist="${image} ${rofslist}" - elif [ -f "${image}" ]; then - backdev=$(get_backing_device "$image") - fstype=$(get_fstype "${backdev}") - if [ "${fstype}" = "unknown" ]; then - panic "Unknown file system type on ${backdev} (${image})" + for image_type in "ext2" "squashfs" "dir" ; do + for image in "${image_directory}"/*."${image_type}"; do + imagename=$(basename "${image}") + if [ -d "${image}" ]; then + # it is a plain directory: do nothing + rofsstring="${image}=${roopt}:${rofsstring}" + rofslist="${image} ${rofslist}" + elif [ -f "${image}" ]; then + backdev=$(get_backing_device "$image") + fstype=$(get_fstype "${backdev}") + if [ "${fstype}" = "unknown" ]; then + panic "Unknown file system type on ${backdev} (${image})" + fi + mkdir -p "${croot}/${imagename}" + mount -t "${fstype}" -o ro "${backdev}" "${croot}/${imagename}" || panic "Can not mount $backdev ($image) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}" fi - mkdir -p "${croot}/${imagename}" - mount -t "${fstype}" -o ro "${backdev}" "${croot}/${imagename}" || panic "Can not mount $backdev ($image) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}" - fi + done done - rofsstring=${rofsstring%:} mkdir -p /cow - cowdevice="tmpfs" cow_fstype="tmpfs" @@ -495,11 +386,17 @@ setup_unionfs() { ;; esac done + # shows cow fs on /cow for use by casper-snapshot + mkdir -p "${rootmnt}/cow" + mount -o bind /cow "${rootmnt}/cow" fi - # shows cow fs on /cow for use by casper-snapshot - mkdir -p "${rootmnt}/cow" - mount -o bind /cow "${rootmnt}/cow" + # move the first mount; no head in busybox-initramfs + for d in $(mount -t squashfs | cut -d\ -f 3); do + mkdir -p "${rootmnt}/rofs" + mount -o move "${d}" "${rootmnt}/rofs" + break + done } check_dev () @@ -511,7 +408,7 @@ check_dev () fi if [ -n "${LIVEMEDIA_OFFSET}" ]; then - loopdevname=$(setup_loop "${devname}" "loop" "/sys/block/loop*" "${LIVEMEDIA_OFFSET}" '') + loopdevname=$(setup_loop "${devname}" "loop" "/sys/block/loop*" "${LIVEMEDIA_OFFSET}") devname="${loopdevname}" fi @@ -592,8 +489,6 @@ mountroot() { exec > casper.log exec 2>&1 - parse_cmdline - set_usplash_timeout [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-premount" pulsate @@ -609,13 +504,13 @@ mountroot() { if do_netmount ; then livefs_root="${mountpoint}" else - panic "Unable to find a the network rootfs live file system" + panic "Unable to find a live file system on the network" fi else # Scan local devices for the image - for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do + for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do livefs_root=$(find_livefs $i) - if [ -n "${livefs_root}" ]; then + if [ "${livefs_root}" ]; then break fi sleep 1 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/02_timezone b/scripts/casper-bottom/02_timezone new file mode 100755 index 0000000..1cb6402 --- /dev/null +++ b/scripts/casper-bottom/02_timezone @@ -0,0 +1,21 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Adding APT-CDROM source..." + +. /scripts/casper-functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +cp -f /root/usr/share/zoneinfo/UTC /root/etc/localtime diff --git a/scripts/casper-bottom/02etc_casper_conf b/scripts/casper-bottom/02etc_casper_conf deleted file mode 100644 index 9e6deff..0000000 --- a/scripts/casper-bottom/02etc_casper_conf +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -PREREQ="" -DESCRIPTION="Copying config on real root fs..." - -. /scripts/casper-functions - -prereqs() -{ - echo "$PREREQ" -} - -case $1 in -# get pre-requisites -prereqs) - prereqs - exit 0 - ;; -esac - -log_begin_msg "$DESCRIPTION" - -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/\(HOSTNAME="\).*"/\1'"${HOSTNAME}"'"/g' /etc/casper.conf - fi - cp -p /etc/casper.conf /root/etc/casper.conf - -else - cat <<EOF >/root/etc/casper.conf -export USERNAME="$USERNAME" -export USERFULLNAME="$USERFULLNAME" -export HOSTNAME="$HOSTNAME" -EOF - -fi - diff --git a/scripts/casper-bottom/05mountpoints b/scripts/casper-bottom/05mountpoints index be76755..7c61de3 100755 --- a/scripts/casper-bottom/05mountpoints +++ b/scripts/casper-bottom/05mountpoints @@ -21,9 +21,7 @@ esac log_begin_msg "$DESCRIPTION" # Move to the new root filesystem so that programs there can get at it. -if [ ! -d /root/live_media ]; then - mkdir -p /root/live_media - mount -n -o move /live_media /root/live_media -fi +mkdir -p /root/cdrom +mount -n -o move /cdrom /root/cdrom log_end_msg diff --git a/scripts/casper-bottom/10adduser b/scripts/casper-bottom/10adduser index af7754b..4fe9378 100755 --- a/scripts/casper-bottom/10adduser +++ b/scripts/casper-bottom/10adduser @@ -20,28 +20,16 @@ esac log_begin_msg "$DESCRIPTION" -if [ "${BUILD_SYSTEM}" == "Debian" ]; then - user_crypted="8Ab05sVQ4LLps" # as in `echo "live" | mkpasswd -s` -else - user_crypted="U6aMy0wojraho" # "ubuntu" -fi - # 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 ${user_crypted} -set passwd/user-fullname $USERFULLNAME +set passwd/user-password-crypted U6aMy0wojraho +set passwd/user-fullname $USERFULLNAME set passwd/username $USERNAME set passwd/user-uid 999 EOF -if [ "${BUILD_SYSTEM}" == "Debian" ]; then - 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 -else - chroot /root /usr/lib/user-setup/user-setup-apply > /dev/null -fi +chroot /root /usr/lib/user-setup/user-setup-apply > /dev/null # Clear out debconf database again to avoid confusing ubiquity later. chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF @@ -53,21 +41,23 @@ set passwd/user-uid EOF if [ -f /root/etc/sudoers ]; then - if [ "${BUILD_SYSTEM}" == "Ubuntu" ]; then - # XXX - awful hack to stop xscreensaver locking the screen (#7150) - echo 'RUNNING_UNDER_GDM="yes"' >> /root/etc/environment + if [ "${BUILD_SYSTEM}" = "Ubuntu" ]; then grep -q '^%admin' /root/etc/sudoers && sed -i -e '/^%admin/s/ALL$/NOPASSWD: ALL/' /root/etc/sudoers || echo '%admin ALL=(ALL) NOPASSWD: ALL' >> /root/etc/sudoers - 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 + elif [ "${BUILD_SYSTEM}" = "Debian" ]; then + echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> /root/etc/sudoers fi fi +# XXX - awful hack to stop xscreensaver locking the screen (#7150) +echo 'RUNNING_UNDER_GDM="yes"' >> /root/etc/environment + +for file in /usr/share/applications/ubiquity-gtkui.desktop /usr/share/applications/kde/ubiquity-kdeui.desktop; do + if [ -f "/root/$file" ]; then + chroot /root install -D -o $USERNAME -g $USERNAME $file /home/$USERNAME/Desktop/$(basename "$file") + break + fi +done + if [ -L /root/home/$USERNAME/Examples ]; then chroot /root install -o $USERNAME -g $USERNAME -d /home/$USERNAME/Desktop/ mv /root/home/$USERNAME/Examples /root/home/$USERNAME/Desktop/ diff --git a/scripts/casper-bottom/12fstab b/scripts/casper-bottom/12fstab index ac39396..616216a 100755 --- a/scripts/casper-bottom/12fstab +++ b/scripts/casper-bottom/12fstab @@ -26,6 +26,6 @@ unionfs / unionfs rw 0 0 tmpfs /tmp tmpfs nosuid,nodev 0 0 EOF -rm -f /root/etc/rcS.d/S10checkroot.sh +rm -f /root/etc/rcS.d/S*checkroot.sh log_end_msg diff --git a/scripts/casper-bottom/13swap b/scripts/casper-bottom/13swap index 986b079..9c5d0c9 100755 --- a/scripts/casper-bottom/13swap +++ b/scripts/casper-bottom/13swap @@ -27,7 +27,7 @@ for device in /dev/[hs]d[a-z][0-9]*; do continue fi - magic=$(dd if="$device" bs=4086 skip=1 count=1 2>/dev/null | dd bs=10 count=1 2>/dev/null) || continue + magic=$(/bin/dd if="$device" bs=4086 skip=1 count=1 2>/dev/null | /bin/dd bs=10 count=1 2>/dev/null) || continue if [ "$magic" = "SWAPSPACE2" -o "$magic" = "SWAP-SPACE" ]; then # log "Found $device" diff --git a/scripts/casper-bottom/14locales b/scripts/casper-bottom/14locales index 18ed15e..3ee3ef0 100755 --- a/scripts/casper-bottom/14locales +++ b/scripts/casper-bottom/14locales @@ -34,10 +34,18 @@ else fi # commandline -if [ ! -z "${LOCALE}" ]; then - locale="${LOCALE}" - set_locale="true" -fi +for x in $(cat /proc/cmdline); do + case $x in + debian-installer/locale=*) + locale=${x#debian-installer/locale=} + set_locale="true" + ;; + locale=*) + locale=${x#locale=} + set_locale="true" + ;; + esac +done if [ -z "${locale}" ]; then # Set a default one @@ -46,35 +54,10 @@ if [ -z "${locale}" ]; then fi if [ "${set_locale}" ]; then - if echo "${locale}" | grep -sqE '^[[:lower:]]{2}$' ; then - # input is like "locale=it", so we will convert and setup also the keyboard if not already set - if [ -z "${KBD}" ]; then - # FIXME: look if this keyb is supported - KBD="${locale}" - really_export KBD - fi - uploc=$(echo "${locale}" | tr '[a-z]' '[A-Z]') - locale="${locale}_${uploc}.UTF-8" - fi - LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 |sed -e 's, .*,,' -e q) - if [ -z "${LANG}" ]; then - log_warning_message "Locale ${locale} is unsupported." - locale="en_US.UTF-8" - LANG="${locale}" - fi - - really_export LANG - - if [ "${BUILD_SYSTEM}" == "Ubuntu" ]; then - printf 'LANG="%s"\n' "${LANG}" > "${grep_file}" - chroot /root /usr/sbin/locale-gen "${LANG}" - casper-preseed /root debian-installer/locale "${locale}" - else - printf 'LANG=%s\n' "${LANG}" > "${grep_file}" - printf '%s UTF-8\n' "${LANG}" > /root/etc/locale.gen - chroot /root /usr/sbin/locale-gen - fi + printf 'LANG="%s"\n' "${LANG}" >> "${grep_file}" + printf '%s UTF-8\n' "${LANG}" > /root/etc/locale.gen + chroot /root /usr/sbin/locale-gen "${LANG}" fi log_end_msg diff --git a/scripts/casper-bottom/15autologin b/scripts/casper-bottom/15autologin index cdaa038..81bd3a4 100755 --- a/scripts/casper-bottom/15autologin +++ b/scripts/casper-bottom/15autologin @@ -27,11 +27,6 @@ else fi if chroot /root [ -f ${GDMCONF} ]; then - if [ "${BUILD_SYSTEM}" == "Debian" ]; then - # true hack ! -- nohar - chroot /root cp /usr/share/gdm/defaults.conf /etc/gdm/gdm.conf - fi - # Configure GDM autologin chroot /root sed -i \ -e "s/^AutomaticLoginEnable=.*\$/AutomaticLoginEnable=true/" \ diff --git a/scripts/casper-bottom/18hostname b/scripts/casper-bottom/18hostname index a616488..19ac61f 100755 --- a/scripts/casper-bottom/18hostname +++ b/scripts/casper-bottom/18hostname @@ -20,10 +20,10 @@ esac log_begin_msg "$DESCRIPTION" -echo "$HOSTNAME" > /root/etc/hostname +echo "$HOST" > /root/etc/hostname cat > /root/etc/hosts <<EOF 127.0.0.1 localhost -127.0.1.1 $HOSTNAME +127.0.1.1 $HOST # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback diff --git a/scripts/casper-bottom/19keyboard b/scripts/casper-bottom/19keyboard index 40834d8..ef90115 100755 --- a/scripts/casper-bottom/19keyboard +++ b/scripts/casper-bottom/19keyboard @@ -20,29 +20,27 @@ esac log_begin_msg "$DESCRIPTION" -kbd= +kbd=us cslayout= csvariant= csmodel= -# commandline -if [ -n "${KBD}" ]; then - kbd="${KBD}" -else - kbd=us -fi - -really_export kbd - -if [ -n "${KLAYOUT}" ]; then - cslayout="${KLAYOUT}" -fi -if [ -n "${KVARIANT}" ]; then - csvariant="${KVARIANT}" -fi -if [ -n "${KMODEL}" ]; then - csmodel="${KMODEL}" -fi +for x in $(cat /proc/cmdline); do + case $x in + kbd-chooser/method=*) + kbd=${x#kbd-chooser/method=} + ;; + console-setup/layoutcode=*) + cslayout=${x#console-setup/layoutcode=} + ;; + console-setup/variantcode=*) + csvariant=${x#console-setup/variantcode=} + ;; + console-setup/modelcode=*) + csmodel=${x#console-setup/modelcode=} + ;; + esac +done if [ -x /root/bin/setupcon ] && [ -f /root/etc/default/console-setup ]; then if [ "$cslayout" ]; then @@ -68,6 +66,5 @@ if [ -x /root/bin/setupcon ] && [ -f /root/etc/default/console-setup ]; then else chroot /root /usr/sbin/install-keymap $kbd casper-preseed /root debian-installer/keymap "$kbd" - casper-preseed /root kbd-chooser/method "$kbd" fi log_end_msg diff --git a/scripts/casper-bottom/20xconfig b/scripts/casper-bottom/20xconfig index 470f54c..c5563ed 100755 --- a/scripts/casper-bottom/20xconfig +++ b/scripts/casper-bottom/20xconfig @@ -5,7 +5,6 @@ DESCRIPTION="Configuring X..." . /scripts/casper-functions - prereqs() { echo "$PREREQ" @@ -27,41 +26,36 @@ if [ "$TERM_TYPE" = "serial" ]; then exit 0 fi +locale=en_US.UTF-8 + +for x in $(cat /proc/cmdline); do + case $x in + debian-installer/locale=*) + locale=${x#debian-installer/locale=} + ;; + locale=*) + locale=${x#locale=} + ;; + esac +done + mount -n -o bind /sys /root/sys mount -n -o bind /proc /root/proc +mount -n -o bind /dev /root/dev if [ -n "${XDEBCONF}" -a -x /root/usr/sbin/xdebconfigurator ]; then # xdebconfigurator chroot /root /usr/sbin/xdebconfigurator fi -if [ "${BUILD_SYSTEM}" == "Ubuntu" ]; then - chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF +chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF set xserver-xorg/autodetect_keyboard true fset xserver-xorg/autodetect_keyboard seen true EOF -else - # d-i code not present, so: - if [ -n "${KOPTIONS}" ]; then - setoptions="set xserver-xorg/config/inputdevice/keyboard/options ${KOPTIONS}" - fi - if [ -n "${KVARIANT}" ]; then - setvariant="set xserver-xorg/config/inputdevice/keyboard/variant ${KVARIANT}" - fi - if [ -n "${KMODEL}" ]; then - setmodel="set xserver-xorg/config/inputdevice/keyboard/model ${KMODEL}" - fi - - chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF -set xserver-xorg/config/inputdevice/keyboard/layout ${kbd} -${setvariant} -${setmodel} -${setoptions} -EOF -fi -DEBUG_XORG_PACKAGE=1 DEBUG_XORG_DEBCONF=1 casper-reconfigure /root xserver-xorg +DEBUG_XORG_PACKAGE=1 DEBUG_XORG_DEBCONF=1 LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 | sed -e 's, .*,,' -e q) casper-reconfigure /root xserver-xorg umount /root/sys umount /root/proc +umount /root/dev log_end_msg diff --git a/scripts/casper-bottom/23networking b/scripts/casper-bottom/23networking index cfc565d..1b732d3 100755 --- a/scripts/casper-bottom/23networking +++ b/scripts/casper-bottom/23networking @@ -61,14 +61,13 @@ else # on startup by ifup script - otherwise our root fs might be disconnected! method="manual" fi - # iterate the physical interfaces and add them to the interfaces list for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do [ -e $interface ] || continue i="$(basename $interface)" cat >> "$IFFILE" <<EOF auto $i -iface $i inet ${method} +iface $i inet $method EOF done @@ -96,4 +95,13 @@ EOF fi fi +for i in eth0 eth1 eth2 ath0 wlan0; do + grep -q "iface $i" $IFFILE && continue + cat >> "$IFFILE" <<EOF +auto $i +iface $i inet dhcp + +EOF +done + log_end_msg diff --git a/scripts/casper-bottom/24preseed b/scripts/casper-bottom/24preseed index b4aac4c..cd52467 100755 --- a/scripts/casper-bottom/24preseed +++ b/scripts/casper-bottom/24preseed @@ -20,16 +20,29 @@ esac log_begin_msg "$DESCRIPTION" -if [ -f "/root/${LOCATION}" ]; then - chroot /root debconf-set-selections < "/root/${LOCATION}" -fi - -if [ -n "${PRESEEDS}" ]; then - for preseed in ${PRESEEDS}; do - question="${preseed%%=*}" - value="${preseed#*=}" - casper-preseed /root "${question}" "${value}" - done +location= +for x in $(cat /proc/cmdline); do + case $x in + preseed/file=*) + location="${x#preseed/file=}" + ;; + file=*) + location="${x#file=}" + ;; + */*=*) + question="${x%%=*}" + value="${x#*=}" + casper-preseed /root "$question" "$value" + ;; + locale=*) + value="${x#*=}" + casper-preseed /root debian-installer/locale "$value" + ;; + esac +done + +if [ "$location" ]; then + chroot /root debconf-set-selections < "/root$location" fi log_end_msg diff --git a/scripts/casper-bottom/25configure_init b/scripts/casper-bottom/25configure_init index 60baa76..f9a8626 100755 --- a/scripts/casper-bottom/25configure_init +++ b/scripts/casper-bottom/25configure_init @@ -23,41 +23,13 @@ log_begin_msg "$DESCRIPTION" # Arrange for shells on virtual consoles, rather than login prompts if [ -n "$USERNAME" ]; then - if [ ! -z "${CASPERGETTY}" ]; then - if echo "${DEFCONSOLE}" | grep -qs ttyS; then - # AUTOMATIC SERIAL CONSOLE # - PORT=$(echo "${DEFCONSOLE}" | \ - sed -e 's%,.*%%') - SPEED=$(echo "${DEFCONSOLE}" | \ - sed -e 's%ttyS[0-9]\+,%%' \ - -e's%\([0-9]\+\).*%\1%') - if ! ( sed -n -e'/^[^#]/p' /root/etc/inittab | grep -qs ":respawn:/sbin/getty.*${PORT}" ) ; then - IDs="A B C D E F G H I J K L M N O P Q R S T Q U V V X Y Z 0 1 2 3 4 5 6 7 8 9" - for ID1 in $IDs; do - for ID2 in $IDs; do - ID="${ID1}${ID2}" - if ! grep "^${ID}:" /etc/inittab ; then - #make sure it is not already in use - break 2 - fi - done - done - echo "${ID}:2345:respawn:/sbin/casper-getty -L ${PORT} ${SPEED} vt100" \ - >>/root/etc/inittab - fi - fi - if [ -f /root/etc/inittab ]; then - sed -i -e'/^[^#]/s%respawn:/sbin/getty%respawn:/sbin/casper-getty%' /root/etc/inittab - fi - else - if [ -f /root/etc/inittab ]; then - sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab - fi - if [ "/root/etc/event.d/tty*" != "$(echo /root/etc/event.d/tty*)" ]; then - for f in /root/etc/event.d/tty*; do - sed -i -e "s|^respawn.*|respawn /bin/login -f $USERNAME </dev/$(basename $f) > /dev/$(basename $f) 2>\&1|" $f - done - fi + if [ -f /root/etc/inittab ]; then + sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab + fi + if [ "/root/etc/event.d/tty*" != "$(echo /root/etc/event.d/tty*)" ]; then + for f in /root/etc/event.d/tty*; do + sed -i -e "s|^exec.*|exec /bin/login -f $USERNAME </dev/$(basename $f) > /dev/$(basename $f) 2>\&1|" $f + done fi fi diff --git a/scripts/casper-bottom/30accessibility b/scripts/casper-bottom/30accessibility index 8b6f875..01c2386 100755 --- a/scripts/casper-bottom/30accessibility +++ b/scripts/casper-bottom/30accessibility @@ -34,77 +34,73 @@ kderc_addtoprefixes() { fi } -case ${ACCESS} in - # Lesser Visual Impairment - 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 +for x in $(cat /proc/cmdline); do + case $x in + # Lesser Visual Impairment + access=v1) + gct -s -t string /desktop/gnome/interface/gtk_theme HighContrastLargePrint + gct -s -t string /desktop/gnome/interface/icon_theme HighContrast + gct -s -t string /desktop/gnome/interface/monospace_font_name "monospace 18" + gct -s -t string /desktop/gnome/interface/font_name "sans 18" + gct -s -t string /apps/metacity/general/theme Atlanta + gct -s -t string /desktop/gnome/background/picture_filename "" + gct -s -t string /desktop/gnome/background/picture_options none + gct -s -t string /desktop/gnome/background/primary_color \#666666 + gct -s -t string /desktop/gnome/background/secondary_color \#7F7F7F + gct -s -t string /desktop/gnome/background/color_shading_type solid + gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48 + gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass - kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/ - if [ -d /root/usr/share/xubuntu-default-settings/accessibility ]; then - cp -a /root/usr/share/xubuntu-default-settings/accessibility/* /root/etc/xdg/ - fi - ;; - # Moderate Visual Impairment - v2) - gct -s -t bool /desktop/gnome/interface/accessibility true - gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca] - #gct -s -t bool /apps/gnopernicus/srcore/mag_active true - #gct -s -t bool /apps/gnopernicus/srcore/sp_active false - if [ -e /root/usr/share/python-support/gnome-orca/orca/settings.py ]; then - sed -i '/^enableSpeech\W/ s/True/False/;/^enableMagnifier/ s/False/True/' /root/usr/share/python-support/gnome-orca/orca/settings.py - fi - kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-impairment/ - ;; - # Blindness - v3) - gct -s -t bool /desktop/gnome/sound/enable_esd false - gct -s -t bool /desktop/gnome/interface/accessibility true - gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca] - #gct -s -t bool /apps/gnopernicus/srcore/sp_active true - #gct -s -t bool /apps/gnopernicus/srcore/mag_active false - ;; - # Minor Motor Difficulties - m1) - gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true - gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true - gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true - gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true - gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false - gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true - gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700 - gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10 + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/ + if [ -d /root/usr/share/xubuntu-default-settings/accessibility ]; then + cp -a /root/usr/share/xubuntu-default-settings/accessibility/* /root/etc/xdg/ + fi + ;; + # Moderate Visual Impairment + access=v2) + gct -s -t bool /desktop/gnome/interface/accessibility true + gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca] + if [ -e /root/usr/share/pycentral/gnome-orca/site-packages/orca/settings.py ]; then + sed -i '/^enableSpeech\W/ s/True/False/;/^enableMagnifier/ s/False/True/' /root/usr/share/pycentral/gnome-orca/site-packages/orca/settings.py + fi + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/lesser-visual-impairment/,/usr/share/kubuntu-default-settings/kde-profile/moderate-visual-impairment/ + ;; + # Blindness + access=v3) + gct -s -t bool /desktop/gnome/sound/enable_esd false + gct -s -t bool /desktop/gnome/interface/accessibility true + gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [orca] + ;; + # Minor Motor Difficulties + access=m1) + gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true + gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false + gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true + gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700 + gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10 - kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/ - if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then - sed -i 's/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml - fi - - ;; - # Motor Difficulties - pointing devices - m2) - gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true - gct -s -t bool /desktop/gnome/interface/accessibility true - gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true - gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false - gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false - gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [onboard] - - kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/ - if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then - sed -i '/Sticky/ s/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml - fi - ;; -esac + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/ + if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then + sed -i 's/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml + fi + ;; + # Motor Difficulties - pointing devices + access=m2) + gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true + gct -s -t bool /desktop/gnome/interface/accessibility true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false + gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false + gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [onboard] + kderc_addtoprefixes /usr/share/kubuntu-default-settings/kde-profile/minor-motor-difficulties/,/usr/share/kubuntu-default-settings/kde-profile/motor-difficulties-pointing-devices/ + if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]; then + sed -i '/Sticky/ s/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml + fi + ;; + esac +done log_end_msg diff --git a/scripts/casper-bottom/33disable_binary_drivers b/scripts/casper-bottom/33disable_binary_drivers deleted file mode 100755 index 971ce8e..0000000 --- a/scripts/casper-bottom/33disable_binary_drivers +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/sh - -PREREQ="" -DESCRIPTION="Configuring some drivers..." - -. /scripts/casper-functions - -prereqs() -{ - echo "$PREREQ" -} - -case $1 in -# get pre-requisites -prereqs) - prereqs - exit 0 - ;; -esac - -log_begin_msg "$DESCRIPTION" - -if [ -e /root/etc/default/linux-restricted-modules-common ]; then - echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common -fi - -log_end_msg
\ No newline at end of file diff --git a/scripts/casper-bottom/33enable_apport_crashes b/scripts/casper-bottom/33enable_apport_crashes new file mode 100755 index 0000000..d1c8829 --- /dev/null +++ b/scripts/casper-bottom/33enable_apport_crashes @@ -0,0 +1,28 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Enabling notifications about program crashes..." + +. /scripts/casper-functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +update_notifier_version=$(chroot /root dpkg-query -W --showformat='${Version}' update-notifier 2>/dev/null) || update_notifier_version="" +if [ -n "$update_notifier_version" ]; then + chroot /root sudo -u "$USERNAME" gconftool-2 -t bool -s /apps/update-notifier/show_apport_crashes true +fi + +log_end_msg diff --git a/scripts/casper-bottom/40install_driver_updates b/scripts/casper-bottom/40install_driver_updates new file mode 100755 index 0000000..272a0ed --- /dev/null +++ b/scripts/casper-bottom/40install_driver_updates @@ -0,0 +1,40 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Installing driver updates..." + +. /scripts/casper-functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +if [ ! -d /tmp/driver-updates ]; then + exit 0 +fi + +log_begin_msg "$DESCRIPTION" + +install_dir=/var/cache/driver-updates + +mkdir "/root$install_dir" +cp -a /tmp/driver-updates/*.deb "/root$install_dir/" + +# We cannot leave packages in a bad state. So if the install fails, remove +# it. This will get caught in casper.log. +for deb in "/root$install_dir"/*; do + if ! chroot /root dpkg -i "$install_dir/$deb"; then + chroot /root dpkg -P "${deb%%_*}" + fi +done + +log_end_msg diff --git a/scripts/casper-bottom/41apt_cdrom b/scripts/casper-bottom/41apt_cdrom new file mode 100755 index 0000000..b4ab643 --- /dev/null +++ b/scripts/casper-bottom/41apt_cdrom @@ -0,0 +1,24 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Adding APT-CDROM source..." + +. /scripts/casper-functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +mkdir -p /root/cdrom +mount -n -o bind /cdrom /root/cdrom +chroot /root apt-cdrom -m add +umount /root/cdrom diff --git a/scripts/casper-functions b/scripts/casper-functions index 2603eba..60721b4 100644 --- a/scripts/casper-functions +++ b/scripts/casper-functions @@ -1,25 +1,21 @@ . /scripts/functions -. /casper.vars # Override this so we don't call PROGRESS log_end_msg() { - if [ -x /sbin/usplash_write ]; then - /sbin/usplash_write "SUCCESS ok" - fi - _log_msg "Done." + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "SUCCESS ok" + fi + _log_msg "Done." } -really_export () +# Print a message and wait for enter +log_wait_msg() { - STRING="${1}" - VALUE="$(eval echo -n \${$STRING})" - - if [ -f /casper.vars ] && cat /casper.vars | grep -sq "export ${STRING}" ; then - sed -i -e 's/\('${STRING}'=\).*$/\1'${VALUE}'/' /casper.vars - else - echo "export ${STRING}=\"${VALUE}\"" >> /casper.vars - fi - eval export "${STRING}"="${VALUE}" -}
\ No newline at end of file + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "INPUTENTER $@" + read nunya < /dev/.initramfs/usplash_outfifo + fi + _log_msg "Waiting: $@ ..." +} diff --git a/scripts/casper-helpers b/scripts/casper-helpers index 6bfb791..8402d93 100644 --- a/scripts/casper-helpers +++ b/scripts/casper-helpers @@ -108,21 +108,11 @@ fs_size () echo "${size}" } - -load_keymap() -{ - # Load custom keymap - if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then - loadkeys /etc/boottime.kmap.gz - fi -} - setup_loop() { local fspath=$1 local module=$2 local pattern=$3 local offset=$4 - local encryption=$5 modprobe ${MP_QUIET} -b "$module" udevsettle @@ -130,35 +120,10 @@ setup_loop() { for loopdev in $pattern; do if [ "$(cat $loopdev/size)" -eq 0 ]; then dev=$(sys2dev "${loopdev}") - options='' - if [ 0 -lt "${offset}" ]; then - options="${options} -o ${offset}" - fi - if [ -z "${encryption}" ]; then - losetup ${options} "${dev}" "${fspath}" + if [ -n "$offset" ]; then + losetup -o "$offset" "$dev" "$fspath" else - # Loop AES encryption - while true; do - load_keymap - echo -n "Enter passphrase for ${fspath}: " >&6 - read -s passphrase - echo "${passphrase}" > /tmp/passphrase - exec 9</tmp/passphrase - /sbin/losetup ${options} -e "${encryption}" -p 9 "${dev}" "${fspath}" - error=$? - exec 9<&- - rm -f /tmp/passphrase - if [ 0 -eq ${error} ]; then - unset error - break - fi - echo -n "Something went wrong... Retry? [YES/no] " >&6 - read answer - if [ 'no' = "${answer}" ]; then - unset answer - break - fi - done + losetup "$dev" "$fspath" fi echo "$dev" return 0 diff --git a/scripts/casper-premount/10driver_updates b/scripts/casper-premount/10driver_updates new file mode 100755 index 0000000..8009849 --- /dev/null +++ b/scripts/casper-premount/10driver_updates @@ -0,0 +1,163 @@ +#!/bin/sh + +PREREQ="" +. /scripts/casper-functions +. /scripts/casper-helpers + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +mountpoint=/cdrom + +is_updates_path() { + # Driver packages are stored in ubuntu-drivers/<kver>/ + # subdirectory. Each package contains a module for a specific + # kernel flavour. + path=$1 + kbase=$(uname -r | sed 's/^\([0-9]*\.[0-9]*\.[0-9]*\)-.*/\1/') + update_dir="$path/ubuntu-drivers/$kbase" + if [ -d "$update_dir" ]; then + if [ "$(echo $update_dir/*_$DPKG_ARCH.deb)" != \ + "$update_dir/*_$DPKG_ARCH.deb" ]; then + echo "$update_dir" + return 0; + fi + fi + return 1; +} + +is_nice_device() { + sysfs_path="${1#/sys}" + if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-[ide|scsi|usb])"; then + return 0 + fi + return 1 +} + +is_supported_fs () { + # FIXME: do something better like the scan of supported filesystems + fstype="${1}" + case ${fstype} in + vfat|iso9660|udf|ext2|ext3|ntfs) + return 0 + ;; + esac + return 1 +} + +check_dev_updates () +{ + sysdev="${1}" + devname="${2}" + if [ -z "${devname}" ]; then + devname=$(sys2dev "${sysdev}") + fi + + fstype=$(get_fstype "${devname}") + if is_supported_fs ${fstype}; then + mount -t ${fstype} -o ro "${devname}" $mountpoint || continue + if is_updates_path $mountpoint; then + return 0 + else + umount $mountpoint + fi + fi + + return 1 +} + +find_driver_updates() { + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do + devname=$(sys2dev "${sysblock}") + fstype=$(get_fstype "${devname}") + if /lib/udev/cdrom_id ${devname} > /dev/null; then + if check_dev_updates "null" "${devname}" ; then + return 0 + fi + elif is_nice_device "${sysblock}" ; then + for dev in $(subdevices "${sysblock}"); do + if check_dev_updates "${dev}" ; then + return 0 + fi + done + fi + done + return 1 +} + +pulsate() { + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "PULSATE" + fi +} + + +updates="false" + +for x in $(cat /proc/cmdline); do + case $x in + debian-installer/driver-update=*) + updates=${x#debian-installer/driver-update=} + ;; + esac +done + +if [ "$updates" != "true" ]; then + log_end_msg + exit 0 +fi + +# Not sure what to do for network installs. I assume there isn't even a CD +# for this anyway, so fail. +if [ -n "${NETBOOT}" ]; then + log_end_msg + exit 0; +fi + +#if chroot /root [ -f /etc/gdm/gdm-cdd.conf ]; then +# GDMCONF=/etc/gdm/gdm-cdd.conf +#else +# GDMCONF=/etc/gdm/gdm.conf +#fi + +eject +log_wait_msg "Insert a driver CD and press ENTER ($DPKG_ARCH)" + +log_begin_msg "Looking for driver update CD" + +for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do + updates_root=$(find_driver_updates) + if [ "${updates_root}" ]; then + break; + fi + sleep 1 +done + +log_end_msg + +if [ -z "${updates_root}" ]; then + log_begin_msg "Could not find driver updates" + log_wait_msg "Re-insert install CD and press ENTER" + exit 0 +fi + +log_begin_msg "Copying driver updates to temporary location" + +mkdir -p /tmp/driver-updates +cp $updates_root/*_$DPKG_ARCH.deb /tmp/driver-updates/ +umount $mountpoint +eject + +log_end_msg + +log_wait_msg "Re-insert install CD and press ENTER." |