Here is a beginning, I wonder what others think about replacing
"debian-live" with the Documentation/nfsroot.txt syntax a little bit
extended with possibility to chain devices declarations.

What's done is :
1) get what interface has to be used for dhcp (first found, the one
used) in scripts/live, just before mounting rootfs.
2) auto-fill /etc/network/interfaces from scripts/live-bottom/23networking

device_declaration :
<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

ip=<device_declaration1>,<device_declaration2>,...

e.g :
append [...] ip=10.0.0.1::10.0.0.254:255.255.255.0::eth0,:::::eth1:dhcp

--
Mathieu
--- scripts/live-bottom/23networking.orig	2007-06-25 23:52:00.000000000 +0200
+++ scripts/live-bottom/23networking	2007-06-25 23:50:46.000000000 +0200
@@ -28,7 +28,7 @@
 
 IFFILE="/root/etc/network/interfaces"
 
-if [ "${STATICIP}" = "frommedia" -a -e  "$IFFILE" ] ; then
+if [ "${IPOPTS}" = "frommedia" -a -e  "$IFFILE" ] ; then
     # will use existent /etc/network/interfaces
     log_end_msg
     exit 0
@@ -42,23 +42,39 @@
 
 udevtrigger
 udevsettle
-
-if [ -z "${NETBOOT}" -a -n "${STATICIP}" -a "${STATICIP}" != "frommedia" ]; then
-    parsed=$(echo "${STATICIP}" | sed -e 's/:/ /g')
-    for ifline in ${parsed}; do
-        ifname="$(echo ${ifline} | cut -f1 -d ',')"
-        ifaddress="$(echo ${ifline} | cut -f2 -d ',')"
-        ifnetmask="$(echo ${ifline} | cut -f3 -d ',')"
-        ifgateway="$(echo ${ifline} | cut -f4 -d ',')"
-        cat >> "$IFFILE" <<EOF
-auto ${ifname}
-iface ${ifname} inet static
+if [ -n "${IPOPTS}" -a "${IPOPTS}" != "frommedia" ]; then
+    OLDIFS=${IFS}
+    IFS=","
+    echo "plop: ${IPOPTS} ${NETBOOT}" > /root/root/test    
+    for ifline in ${IPOPTS}; do
+        ifaddress="$(echo ${ifline} | cut -f1 -d ':')"
+        serverip="$(echo ${ifline} | cut -f2 -d ':')"
+        ifgateway="$(echo ${ifline} | cut -f3 -d ':')"
+        ifnetmask="$(echo ${ifline} | cut -f4 -d ':')"
+        ifname="$(echo ${ifline} | cut -f5 -d ':')"
+        ifdevice="$(echo ${ifline} | cut -f6 -d ':')"
+        ifmode="$(echo ${ifline} | cut -f7 -d ':')"
+
+	# static
+	if [ "$ifaddress" != "" -a "$ifmode" == "" ]; then
+	    cat >> /root/etc/network/interfaces <<EOF
+auto ${ifdevice}
+iface ${ifdevice} inet static
     address ${ifaddress}
     netmask ${ifnetmask}
     gateway ${ifgateway}
 
 EOF
+	fi
+	if [ "$ifmode" = "dhcp" ]; then
+	    cat >> /root/etc/network/interfaces <<EOF
+auto ${ifdevice}
+iface ${ifdevice} inet $ifmode
+
+EOF
+	fi 
     done
+    IFS=${OLDIFS}
 else
     if [ -z "${NETBOOT}" ]; then

--- scripts/live.orig	2007-06-25 23:51:46.000000000 +0200
+++ scripts/live	2007-06-25 23:27:34.000000000 +0200
@@ -35,6 +35,7 @@
     PRESEEDS=
     # looking for live-initramfs specifics options as kernel parameters
     for x in $(cat /proc/cmdline); do
+
         case $x in
             userfullname=*)
                 export USERFULLNAME=${x#userfullname=}
@@ -74,12 +75,38 @@
                 export PERSISTENT="Yes" ;;
             nopersistent)
                 export PERSISTENT="" ;;
-            ip*)
-                STATICIP=${x#ip=}
-                if [ "${STATICIP}" = "" ]; then
-                    STATICIP="frommedia"
-                fi
-                export STATICIP ;;
+	ip=*)
+	    export IPOPTS="${x#ip=}"
+	    case ${IPOPTS} in
+ 		none|off)
+			# Do nothing
+		    ;;
+		""|on|any)
+			# Bring up device
+		    echo "ipconfig ${DEVICE}"
+		    ;;
+		dhcp|bootp|rarp|both)
+		    echo "ipconfig -c ${IPOPTS} -d ${DEVICE}"
+		    ;;
+		*)
+		    echo "ipconfig -d $IPOPTS"
+		    
+		    # grab first dhcp device entry
+		    OLDIFS=${IFS}
+		    IFS=","
+		    for ipspec in $IPOPTS; do
+			case $ipspec in
+			    *:dhcp)
+				DEVICE=${ipspec#*:*:*:*:*:*}
+				DEVICE=${DEVICE%*:*}
+				break
+				;;
+			esac
+		    done
+		    IFS=${OLDIFS}
+		    ;;
+	    esac
+	    ;;   	    
             live-getty)
                 export LIVE_GETTY=1 ;;
_______________________________________________
Debian-live-devel mailing list
Debian-live-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/debian-live-devel

Reply via email to