[SCM] debian-live/live-initramfs branch, master, updated. 1.110.3-1-4-g98c849c

Jesse Hathaway jesse at mbuki-mvuki.org
Wed Oct 31 10:12:13 UTC 2007


The branch, master has been updated
       via  98c849c86c50fa431f25996abf2425039863f1d0 (commit)
      from  36c0f81d8ac48dcbc8448dca68d8880ed6977810 (commit)


- Shortlog ------------------------------------------------------------
98c849c add support for mounting the cow device on an nfs volume

Summary of changes:
 scripts/live                |   53 +++++++++++++++++++++++++++++++++++-------
 scripts/live-bottom/12fstab |   22 ++++++++++++-----
 scripts/live-helpers        |   14 +++++++++++
 3 files changed, 73 insertions(+), 16 deletions(-)
-----------------------------------------------------------------------
Details of changes:

commit 98c849c86c50fa431f25996abf2425039863f1d0
Author: Jesse Hathaway <jesse at mbuki-mvuki.org>
Date:   Tue Oct 30 14:10:58 2007 -0400

    add support for mounting the cow device on an nfs volume

diff --git a/scripts/live b/scripts/live
index 9567301..1dcbc74 100755
--- a/scripts/live
+++ b/scripts/live
@@ -169,6 +169,11 @@ Arguments ()
 				export NFSOPTS
 				;;
 
+			nfscow=*)
+				NFS_COW="${ARGUMENT#nfscow=}"
+				export NFS_COW
+				;;
+
 			noaccessibility)
 				NOACCESSIBILITY="Yes"
 				export NOACCESSIBILITY
@@ -949,8 +954,6 @@ setup_unionfs ()
 	rofsstring=${rofsstring%:}
 
 	mkdir -p /cow
-	cowdevice="tmpfs"
-	cow_fstype="tmpfs"
 
 	# Looking for "${root_persistence}" device or file
 	if [ -n "${PERSISTENT}" ]
@@ -964,6 +967,39 @@ setup_unionfs ()
 		else
 			[ "${quiet}" != "y" ] && log_warning_msg "Unable to find the persistent medium"
 		fi
+	elif [ -n "${NFS_COW}" ]
+	then
+		# check if there are any nfs options
+		if echo ${NFS_COW}|grep -q ','
+		then
+			nfs_cow_opts="-o nolock,$(echo ${NFS_COW}|cut -d, -f2-)"
+			nfs_cow=$(echo ${NFS_COW}|cut -d, -f1)
+		else
+			nfs_cow_opts="-o nolock"
+			nfs_cow=${NFS_COW}
+		fi
+		mac=$(get_mac)
+		if [ -n "${mac}" ]
+		then
+			cowdevice=$(echo ${nfs_cow}|sed "s/client_mac_address/${mac}/")
+			cow_fstype="nfs"
+		else
+			panic "unable to determine mac address"
+		fi
+	else
+		cowdevice="tmpfs"
+		cow_fstype="tmpfs"
+	fi
+
+	if [ "${cow_fstype}" = "nfs" ]
+	then
+		[ "${quiet}" != "y" ] && log_begin_msg \
+			"Trying nfsmount ${nfs_cow_opts} ${cowdevice} /cow"
+		nfsmount ${nfs_cow_opts} ${cowdevice} /cow || \
+			panic "Can not mount ${cowdevice} on /cow"
+	else
+		mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || \
+			panic "Can not mount ${cowdevice} on /cow"
 	fi
 
 	rofscount=$(echo ${rofslist} |wc -w)
@@ -979,11 +1015,8 @@ setup_unionfs ()
 		mount --bind ${exposedrootfs} ${rootmnt} || \
 			panic "bind mount of ${exposedrootfs} failed"
 
-		mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || \
-			panic "Can not mount ${cowdevice} on /cow"
-
-		cow_dirs='/tmp /var/tmp /var/lock /var/run /var/log /var/spool
-			/home /live /var/lib/live'
+		cow_dirs='/var/tmp /var/lock /var/run /var/log /var/spool
+			/home /var/lib/live'
 
 		for dir in ${cow_dirs}; do
 			mkdir -p /cow${dir}
@@ -994,13 +1027,15 @@ setup_unionfs ()
 					rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro"
 		done
 	else
-		mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || \
-			panic "Can not mount ${cowdevice} on /cow"
 		mount -t ${UNIONTYPE} -o noatime,dirs=/cow=rw:${rofsstring} \
 			${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on \
 			${rootmnt} failed with option noatime,dirs=/cow=rw:${rofsstring}"
 	fi
 
+	# tmpfs file systems
+	mkdir -p "${rootmnt}/live"
+	mount -t tmpfs tmpfs ${rootmnt}/live
+
 	# Adding other custom mounts
 	if [ -n "${PERSISTENT}" ]
 	then
diff --git a/scripts/live-bottom/12fstab b/scripts/live-bottom/12fstab
index 3d036c9..ca83626 100755
--- a/scripts/live-bottom/12fstab
+++ b/scripts/live-bottom/12fstab
@@ -5,6 +5,7 @@
 # initramfs-tools header
 
 PREREQ=""
+FSTAB=/root/etc/fstab
 
 prereqs()
 {
@@ -27,16 +28,23 @@ then
 	exit 0
 fi
 
-log_begin_msg "Configuring fstab..."
+if [ -s ${FSTAB} ]
+then
+	log_begin_msg "Not touching preexisting fstab..."
+else
+	log_begin_msg "Configuring fstab..."
+
+	cat >> ${FSTAB} <<-EOF
+	# /etc/fstab: static file system information.
+	#
+	# <file system> <mount point>   <type>  <options>       <dump>  <pass>
+	${UNIONTYPE} / ${UNIONTYPE} rw 0 0
+	tmpfs /tmp tmpfs nosuid,nodev 0 0
+	EOF
+fi
 
 # live-initramfs script
 
-FSTAB=/root/etc/fstab
-
-cat >> ${FSTAB} << EOF
-${UNIONTYPE} / ${UNIONTYPE} rw 0 0
-tmpfs /tmp tmpfs nosuid,nodev 0 0
-EOF
 
 # disabled for now
 #rm -f /root/etc/rcS.d/S*checkroot.sh
diff --git a/scripts/live-helpers b/scripts/live-helpers
index ccc3a4a..f49eaf7 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -288,3 +288,17 @@ find_files ()
 		done
 	done
 }
+
+get_mac ()
+{
+   mac=""
+   for adaptor in /sys/class/net/*;do
+      status=$(cat ${adaptor}/iflink)
+      if [ ${status} -eq 2 ];
+      then
+         mac=$(cat ${adaptor}/address)
+         mac=$(echo ${mac}|sed 's/:/-/g'|tr '[a-z]' '[A-Z]')
+      fi
+   done
+   echo $mac
+}

-- 
debian-live/live-initramfs



More information about the debian-live-changes mailing list