[Debian-live-changes] r1452 - in dists/trunk/live-initramfs: hooks
scripts
Daniel Baumann
daniel at alioth.debian.org
Fri May 11 10:04:52 UTC 2007
Author: daniel
Date: 2007-05-11 10:04:51 +0000 (Fri, 11 May 2007)
New Revision: 1452
Modified:
dists/trunk/live-initramfs/hooks/live
dists/trunk/live-initramfs/scripts/live-functions
dists/trunk/live-initramfs/scripts/live-helpers
Log:
Modified: dists/trunk/live-initramfs/hooks/live
===================================================================
--- dists/trunk/live-initramfs/hooks/live 2007-05-11 09:48:42 UTC (rev 1451)
+++ dists/trunk/live-initramfs/hooks/live 2007-05-11 10:04:51 UTC (rev 1452)
@@ -27,7 +27,7 @@
# Handling live-initramfs
# Configuration
-if [ -f /etc/live.conf ]
+if [ -r /etc/live.conf ]
then
. /etc/live.conf
@@ -109,7 +109,7 @@
auto_add_modules net
# Custom keymap (usefull when using encryption)
-if [ -x /bin/loadkeys ] && [ -f /etc/console/boottime.kmap.gz ]
+if [ -x /bin/loadkeys ] && [ -r /etc/console/boottime.kmap.gz ]
then
copy_exec /bin/loadkeys /bin
Modified: dists/trunk/live-initramfs/scripts/live-functions
===================================================================
--- dists/trunk/live-initramfs/scripts/live-functions 2007-05-11 09:48:42 UTC (rev 1451)
+++ dists/trunk/live-initramfs/scripts/live-functions 2007-05-11 10:04:51 UTC (rev 1452)
@@ -1,3 +1,4 @@
+#!/bin/sh
. /scripts/functions
. /live.vars
@@ -3,19 +4,23 @@
# Override this so we don't call PROGRESS
-log_end_msg()
+log_end_msg ()
{
- if [ -x /sbin/usplash_write ]; then
+ if [ -x /sbin/usplash_write ]
+ then
/sbin/usplash_write "SUCCESS ok"
fi
+
_log_msg "Done."
}
# Print a message and wait for enter
-log_wait_msg()
+log_wait_msg ()
{
- if [ -x /sbin/usplash_write ]; then
+ if [ -x /sbin/usplash_write ]
+ then
/sbin/usplash_write "INPUTENTER $@"
read nunya < /dev/.initramfs/usplash_outfifo
fi
+
_log_msg "Waiting: $@ ..."
}
@@ -24,12 +29,14 @@
really_export ()
{
STRING="${1}"
- VALUE="$(eval echo -n \${$STRING})"
+ VALUE="`eval echo -n \${$STRING}`"
- if [ -f /live.vars ] && cat /live.vars | grep -sq "export ${STRING}" ; then
+ if [ -f /live.vars ] && grep -sq "export ${STRING}" /live.vars
+ then
sed -i -e 's/\('${STRING}'=\).*$/\1'${VALUE}'/' /live.vars
else
echo "export ${STRING}=\"${VALUE}\"" >> /live.vars
fi
+
eval export "${STRING}"="${VALUE}"
}
Modified: dists/trunk/live-initramfs/scripts/live-helpers
===================================================================
--- dists/trunk/live-initramfs/scripts/live-helpers 2007-05-11 09:48:42 UTC (rev 1451)
+++ dists/trunk/live-initramfs/scripts/live-helpers 2007-05-11 10:04:51 UTC (rev 1452)
@@ -1,231 +1,298 @@
-## Casper helper functions, used by casper on boot and by casper-snapshot
+#!/bin/sh
-if [ "${BUILD_SYSTEM}" = "Ubuntu" ]; then
- MP_QUIET="-Q"
-elif [ "${BUILD_SYSTEM}" = "Debian" ]; then
- MP_QUIET="-q"
+# live-initramfs helper functions, used by live-intramfs on boot and by live-snapshot
+
+if [ "${BUILD_SYSTEM}" = "Debian" ]
+then
+ MP_QUIET="-q"
+elif [ "${BUILD_SYSTEM}" = "Ubuntu" ]
+then
+ MP_QUIET="-Q"
else
- MP_QUIET=""
+ MP_QUIET=""
fi
-if [ ! -x "/bin/fstype" ]; then
- # klibc not in path -> not in initramfs
- export PATH="${PATH}:/usr/lib/klibc/bin"
+if [ ! -x /bin/fstype ]
+then
+ # klibc not in path -> not in initramfs
+ export PATH="${PATH}:/usr/lib/klibc/bin"
fi
-sys2dev() {
- sysdev=${1#/sys}
- echo "/dev/$(udevinfo -q name -p ${sysdev} 2>/dev/null|| echo ${sysdev##*/})"
+sys2dev ()
+{
+ sysdev=${1#/sys}
+ echo "/dev/$(udevinfo -q name -p ${sysdev} 2>/dev/null|| echo ${sysdev##*/})"
}
-subdevices() {
- sysblock=$1
- r=""
- for dev in "${sysblock}" "${sysblock}"/*; do
- if [ -e "${dev}/dev" ]; then
- r="${r} ${dev}"
- fi
- done
- echo ${r}
+subdevices ()
+{
+ sysblock=$1
+ r=""
+
+ for dev in "${sysblock}" "${sysblock}"/*
+ do
+ if [ -e "${dev}/dev" ]
+ then
+ r="${r} ${dev}"
+ fi
+ done
+
+ echo ${r}
}
-get_fstype() {
- local FSTYPE
- local FSSIZE
- eval $(fstype < $1)
- if [ "$FSTYPE" != "unknown" ]; then
- echo $FSTYPE
- return 0
- fi
- /lib/udev/vol_id -t $1 2>/dev/null
+get_fstype ()
+{
+ local FSTYPE
+ local FSSIZE
+
+ eval `fstype < $1`
+
+ if [ "$FSTYPE" != "unknown" ]
+ then
+ echo $FSTYPE
+ return 0
+ fi
+
+ /lib/udev/vol_id -t $1 2>/dev/null
}
-where_is_mounted() {
- device=$1
- if grep -q "^$device " /proc/mounts; then
- grep "^$device " /proc/mounts | read d mountpoint rest
- echo $mountpoint
- return 0
- fi
- return 1
+where_is_mounted ()
+{
+ device=$1
+
+ if grep -q "^$device " /proc/mounts
+ then
+ grep "^$device " /proc/mounts | read d mountpoint rest
+ echo $mountpoint
+ return 0
+ fi
+
+ return 1
}
-lastline() {
- while read lines ; do
- line=${lines}
- done
- echo "${line}"
+lastline ()
+{
+ while read lines
+ do
+ line=${lines}
+ done
+
+ echo "${line}"
}
base_path ()
{
- testpath="${1}"
- mounts="$(awk '{print $2}' /proc/mounts)"
- testpath="$(busybox realpath ${testpath})"
+ testpath="${1}"
+ mounts="`awk '{print $2}' /proc/mounts`"
+ testpath="`busybox realpath ${testpath}`"
- while true ; do
- if echo "${mounts}" | grep -qs "^${testpath}" ; then
- set -- `echo "${mounts}" | grep "^${testpath}" | lastline`
- echo ${1}
- break
- else
- testpath=`dirname $testpath`
- fi
- done
+ while true
+ do
+ if echo "${mounts}" | grep -qs "^${testpath}"
+ then
+ set -- `echo "${mounts}" | grep "^${testpath}" | lastline`
+ echo ${1}
+ break
+ else
+ testpath=`dirname $testpath`
+ fi
+ done
}
fs_size ()
{
- # Returns used/free fs kbytes + 5% more
- # You could pass a block device as $1 or the mount point as $2
+ # Returns used/free fs kbytes + 5% more
+ # You could pass a block device as $1 or the mount point as $2
- dev="${1}"
- mountp="${2}"
- used="${3}"
+ dev="${1}"
+ mountp="${2}"
+ used="${3}"
- if [ -z "${mountp}" ]; then
- mountp=$(where_is_mounted "${dev}")
- if [ "$?" -gt 0 ]; then
- mountp="/mnt/tmp_fs_size"
- mkdir -p "${mountp}"
- mount -t $(get_fstype "${dev}") -o ro "${dev}" "${mountp}"
- doumount=1
- fi
- fi
+ if [ -z "${mountp}" ]
+ then
+ mountp="`where_is_mounted ${dev}`"
- if [ "${used}" = "used" ]; then
- size=$(du -ks ${mountp} | cut -f1)
- size=$(expr ${size} + ${size} / 20 ) # FIXME: 5% more to be sure
- else
- # free space
- size="$(df -k | grep -s ${mountp} | awk '{print $4}')"
- fi
+ if [ "$?" -gt 0 ]
+ then
+ mountp="/mnt/tmp_fs_size"
- if [ -n "${doumount}" ]; then
- umount "${mountp}"
- rmdir "${mountp}"
- fi
- echo "${size}"
+ mkdir -p "${mountp}"
+ mount -t "`get_fstype ${dev}`" -o ro "${dev}" "${mountp}"
+ doumount=1
+ fi
+ fi
+
+ if [ "${used}" = "used" ]
+ then
+ size="`du -ks ${mountp} | cut -f1`"
+ size=$(expr ${size} + ${size} / 20 ) # FIXME: 5% more to be sure
+ else
+ # free space
+ size="`df -k | grep -s ${mountp} | awk '{print $4}'`"
+ fi
+
+ if [ -n "${doumount}" ]
+ then
+ umount "${mountp}"
+ rmdir "${mountp}"
+ fi
+
+ echo "${size}"
}
-load_keymap()
+load_keymap ()
{
# Load custom keymap
- if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then
+ if [ -x /bin/loadkeys ] && [ -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
+setup_loop ()
+{
+ local fspath=$1
+ local module=$2
+ local pattern=$3
+ local offset=$4
+ local encryption=$5
- modprobe ${MP_QUIET} -b "$module"
- udevsettle
+ modprobe ${MP_QUIET} -b "$module"
+ udevsettle
- 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}"
- 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
- fi
- echo "$dev"
- return 0
- fi
- done
- panic "No loop devices available"
+ 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}"
+ 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
+ fi
+
+ echo "$dev"
+ return 0
+ fi
+ done
+
+ panic "No loop devices available"
}
try_mount ()
{
- dev="${1}"
- mountp="${2}"
- opts="${3}"
+ dev="${1}"
+ mountp="${2}"
+ opts="${3}"
- if where_is_mounted ${dev} > /dev/null; then
- mount -o remount,"${opts}" ${dev} $(where_is_mounted ${dev}) || panic "Remounting failed"
- mount -o bind $(where_is_mounted ${dev}) ${mountp} || panic "Cannot bind-mount"
- else
- mount -t $(get_fstype "${dev}") -o "${opts}" "${dev}" "${mountp}" || panic "Cannot mount ${dev} on ${mountp}"
- fi
+ if where_is_mounted ${dev} > /dev/null
+ then
+ mount -o remount,"${opts}" ${dev} $(where_is_mounted ${dev}) || panic "Remounting failed"
+ mount -o bind $(where_is_mounted ${dev}) ${mountp} || panic "Cannot bind-mount"
+ else
+ mount -t $(get_fstype "${dev}") -o "${opts}" "${dev}" "${mountp}" || panic "Cannot mount ${dev} on ${mountp}"
+ 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 # FIXME: all supported block devices should be scanned
- mkdir -p "${cow_backing}"
- try_mount "${devname}" "${cow_backing}" "rw"
- 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
+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" ] # FIXME: all supported block devices should be scanned
+ then
+ mkdir -p "${cow_backing}"
+ try_mount "${devname}" "${cow_backing}" "rw"
+
+ 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
}
-find_files()
-# return the first of $filenames found on vfat and ext2 devices
-# FIXME: merge with above function
+find_files ()
{
- filenames="${1}"
- snap_backing="/snap-backing"
- for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop); do
- for dev in $(subdevices "${sysblock}"); do
- devname=$(sys2dev "${dev}")
- devfstype="$(get_fstype ${devname})"
- if [ "${devfstype}" = "vfat" ] || [ "${devfstype}" = "ext2" ] ; then # FIXME: all supported block devices should be scanned
- mkdir -p "${snap_backing}"
- try_mount "${devname}" "${snap_backing}" "ro"
- for filename in ${filenames}; do
- if [ -e "${snap_backing}/${filename}" ]; then
- echo "${devname} ${snap_backing} ${filename}"
- return 0
- fi
- done
- umount ${snap_backing}
- fi
- done
- done
-}
+ # return the first of $filenames found on vfat and ext2 devices
+ # FIXME: merge with above function
+ filenames="${1}"
+ snap_backing="/snap-backing"
+ for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop)
+ do
+ for dev in $(subdevices "${sysblock}")
+ do
+ devname=$(sys2dev "${dev}")
+ devfstype="$(get_fstype ${devname})"
+
+ if [ "${devfstype}" = "vfat" ] || [ "${devfstype}" = "ext2" ]
+ then
+ # FIXME: all supported block devices should be scanned
+ mkdir -p "${snap_backing}"
+ try_mount "${devname}" "${snap_backing}" "ro"
+
+ for filename in ${filenames}
+ do
+ if [ -e "${snap_backing}/${filename}" ]
+ then
+ echo "${devname} ${snap_backing} ${filename}"
+ return 0
+ fi
+ done
+
+ umount ${snap_backing}
+ fi
+ done
+ done
+}
More information about the Debian-live-changes
mailing list