Package: casper Version: 1.63+debian-2 Severity: normal Tags: patch The correct parameters are stillnot being given to the unionfs mount command when an NFS root is used. This patch detects the filesystem of a directory and passes the correct argument "nfsro" to the unionfs mount in rofsstring in then event of the directory being on NFS.
NB: patch is to casper script for version 1.63+debian-2 Regards Alex Owen -- System Information: Debian Release: testing/unstable APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.16-2-686 Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory ANSI_X3.4-1968) Versions of packages casper depends on: ii initramfs-tools 0.73e tools for generating an initramfs ii user-setup 1.4 Set up initial user and password Versions of packages casper recommends: pn live-package <none> (no description available) -- debconf information excluded
--- casper.orig 2006-08-16 14:37:33.000000000 +0000 +++ casper 2006-08-16 16:36:48.000000000 +0000 @@ -157,6 +157,23 @@ panic "No loop devices available" } +lastline(){ while read junk ; do line=$junk ; done; echo "$line"; } + +get_dir_fstype() { +testpath="$1" +mounts="`awk '{print $2,$3}' /proc/mounts`" +testpath=`realpath $1` +while true ; do + if echo "$mounts" | grep -qs "^${testpath} " ; then + set -- `echo "$mounts" |grep "^${testpath} " | lastline` + echo $2 + break + else + testpath=`dirname $testpath` + fi +done +} + get_fstype() { #FIXME# one use of this function expects "unknown" another does not! # which is it??? @@ -349,9 +366,13 @@ for image in "${image_directory}"/*."${image_type}"; do imagename=$(basename "${image}") if [ -d "${image}" ]; then - # it is a plain directory: do nothing + # it is a plain directory: do nothing unless nfs + if [ `get_dir_fstype "${image}"` = "nfs" ] ; then + rofsstring="${image}=nfsro:${rofsstring}" + else + rofsstring="${image}=ro:${rofsstring}" + fi rofslist="${image} ${rofslist}" - rofsstring="${image}=ro:${rofsstring}" elif [ -f "${image}" ]; then backdev=$(get_backing_device "$image") fstype=$(get_fstype "${backdev}")