X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=debian%2Fpatches%2F27_support_static_ip.patch;h=77bec78dc9a3e3850bbd0f149faa3cf8b4f59046;hb=0ed42c4a3a98e506a5e8e8a6d40b632e572fa0b5;hp=f08e1332e8cd12c93becc642b9795f21750901da;hpb=8424e93b27a3c5ae551ff1a5c456d0de96fc67c8;p=live-boot-grml.git diff --git a/debian/patches/27_support_static_ip.patch b/debian/patches/27_support_static_ip.patch old mode 100755 new mode 100644 index f08e133..77bec78 --- a/debian/patches/27_support_static_ip.patch +++ b/debian/patches/27_support_static_ip.patch @@ -6,43 +6,23 @@ @DPATCH@ -diff --git a/scripts/live b/scripts/live -index 5681362..bf20cce 100755 ---- a/scripts/live -+++ b/scripts/live -@@ -91,9 +91,8 @@ Arguments () - ;; - - ethdevice=*) -- DEVICE="${ARGUMENT#ethdevice=}" -- ETHDEVICE="${DEVICE}" -- export DEVICE ETHDEVICE -+ ETHDEVICE="${ARGUMENT#ethdevice=}" -+ export ETHDEVICE - ;; - - ethdevice-timeout=*) -@@ -150,13 +149,9 @@ Arguments () - ;; - - ip=*) -- STATICIP="${ARGUMENT#ip=}" -- -- if [ -z "${STATICIP}" ] -- then -- STATICIP="frommedia" -- fi -- -+ # copy complete ip=args into staticip, and -+ # keep multiple uses. -+ STATICIP="${STATICIP} ${ARGUMENT}" - export STATICIP - ;; - -@@ -598,6 +593,24 @@ copy_live_to () - return 0 +Index: live-boot-grml/components/9990-networking.sh +=================================================================== +--- live-boot-grml.orig/components/9990-networking.sh 2014-03-08 13:35:17.832580835 +0100 ++++ live-boot-grml/components/9990-networking.sh 2014-03-08 13:35:33.106789237 +0100 +@@ -44,7 +44,7 @@ + + if [ "$bootif_mac" = "$current_mac" ] + then +- DEVICE=${device##*/} ++ ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice + break + fi + fi +@@ -52,6 +52,24 @@ + fi } - + +get_ipconfig_para() +{ + if [ $# != 1 ] ; then @@ -63,13 +43,12 @@ index 5681362..bf20cce 100755 + do_netsetup () { - modprobe -q af_packet # For DHCP -@@ -608,9 +621,19 @@ do_netsetup () - [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15 - echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration." - -- if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && \ -- [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ] + modprobe -q af_packet # For DHCP +@@ -62,8 +80,20 @@ + [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15 + echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration." + +- if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ] - then + # Our modus operandi for getting a working network setup is this: + # * If ip=* is set, pass that to ipconfig and be done @@ -84,82 +63,114 @@ index 5681362..bf20cce 100755 + for device in ${ALLDEVICES}; do + ipconfig -c none -d $device -t 1 2>/dev/null >/dev/null + done - - - # support for Syslinux IPAPPEND parameter -@@ -653,7 +676,7 @@ do_netsetup () - - if [ "$bootif_mac" = "$current_mac" ] - then -- DEVICE=${device##*/} -+ ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice - break - fi - fi -@@ -665,12 +688,7 @@ do_netsetup () - # for *every* present network device (except for loopback of course) - if [ -z "$ETHDEVICE" ] ; then - echo "If you want to boot from a specific device use bootoption ethdevice=..." -- for device in /sys/class/net/*; do -- dev=${device##*/} ; -- if [ "$dev" != "lo" ] ; then -- ETHDEVICE="$ETHDEVICE $dev" -- fi ++ + # See if we can select the device from BOOTIF + Device_from_bootif + +@@ -73,14 +103,7 @@ + if [ -z "$ETHDEVICE" ] + then + echo "If you want to boot from a specific device use bootoption ethdevice=..." +- for device in /sys/class/net/* +- do +- dev=${device##*/} +- if [ "$dev" != "lo" ] +- then +- ETHDEVICE="$ETHDEVICE $dev" +- fi +- done ++ ETHDEVICE="$ALLDEVICES" + fi + + # split args of ethdevice=eth0,eth1 into "eth0 eth1" +@@ -89,42 +112,29 @@ + devlist="$devlist $device" + done + +- # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into +- # an endless loop; if execution fails give it two further tries, that's +- # why we use '$devlist $devlist $devlist' for the other for loop +- for dev in $devlist $devlist $devlist +- do +- echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev" +- ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config & +- jobid=$! +- sleep "$ETHDEV_TIMEOUT" ; sleep 1 +- if [ -r /proc/"$jobid"/status ] +- then +- echo "Killing job $jobid for device $dev as ipconfig ran into recursion..." +- kill -9 $jobid ++ for dev in $devlist ; do ++ param="$(get_ipconfig_para $dev)" ++ if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] ; then ++ echo "Ignoring network device $dev due to nodhcp." | tee -a /boot.log ++ continue + fi ++ echo "Executing ipconfig -t $ETHDEV_TIMEOUT $param" ++ ipconfig -t "$ETHDEV_TIMEOUT" "$param" | tee -a /netboot.config + + # if configuration of device worked we should have an assigned + # IP address, if so let's use the device as $DEVICE for later usage. + # simple and primitive approach which seems to work fine +- if ifconfig $dev | grep -q 'inet.*addr:' +- then +- export DEVICE="$dev" +- break ++ ++ IPV4ADDR="0.0.0.0" ++ if [ -e "/run/net-${device}.conf" ]; then ++ . /run/net-${device}.conf + fi - done -+ ETHDEVICE="$ALLDEVICES" - fi - - # split args of ethdevice=eth0,eth1 into "eth0 eth1" -@@ -678,38 +696,27 @@ do_netsetup () - devlist="$devlist $device" - done - -- # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into -- # an endless loop; iff execution fails give it two further tries, that's -- # why we use '$devlist $devlist $devlist' for the other for loop -- for dev in $devlist $devlist $devlist ; do -- echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev" -- ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config & -- jobid=$! -- sleep "$ETHDEV_TIMEOUT" ; sleep 1 -- if [ -r /proc/"$jobid"/status ] ; then -- echo "Killing job $jobid for device $dev as ipconfig ran into recursion..." -- kill -9 $jobid -+ for dev in $devlist ; do -+ param="$(get_ipconfig_para $dev)" -+ if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] ; then -+ echo "Ignoring network device $dev due to nodhcp." | tee -a /live-boot.log -+ continue - fi -+ echo "Executing ipconfig -t $ETHDEV_TIMEOUT $param" -+ ipconfig -t "$ETHDEV_TIMEOUT" "$param" | tee -a /netboot.config - - # if configuration of device worked we should have an assigned - # IP address, iff so let's use the according as $DEVICE for later usage - # simple and primitive approach which seems to work fine -- if ifconfig $dev | grep -q 'inet.*addr:' ; then -- export DEVICE="$dev" -- break -+ IPV4ADDR="0.0.0.0" -+ . /tmp/net-${device}.conf -+ if [ "${IPV4ADDR}" != "0.0.0.0" ]; then -+ export DEVICE="$dev $DEVICE" -+ # break # exit loop as we just use the irst - fi -- done - - else - for interface in ${DEVICE}; do - ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config -- [ -e /tmp/net-${interface}.conf ] && . /tmp/net-${interface}.conf +- +- [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf +- - if [ "$IPV4ADDR" != "0.0.0.0" ] - then - break -- fi -- done ++ if [ "${IPV4ADDR}" != "0.0.0.0" ]; then ++ export DEVICE="$dev $DEVICE" ++ # break # exit loop as we just use the irst + fi + done - fi -+ done + unset devlist - - for interface in ${DEVICE}; do - # source relevant ipconfig output + + for interface in ${DEVICE} + do +Index: live-boot-grml/components/9990-cmdline-old +=================================================================== +--- live-boot-grml.orig/components/9990-cmdline-old 2014-03-08 13:35:17.832580835 +0100 ++++ live-boot-grml/components/9990-cmdline-old 2014-03-08 13:35:17.828581304 +0100 +@@ -51,9 +51,8 @@ + ;; + + ethdevice=*) +- DEVICE="${_PARAMETER#ethdevice=}" +- ETHDEVICE="${DEVICE}" +- export DEVICE ETHDEVICE ++ ETHDEVICE="${_PARAMETER#ethdevice=}" ++ export ETHDEVICE + ;; + + ethdevice-timeout=*) +@@ -110,13 +109,9 @@ + ;; + + ip=*) +- STATICIP="${_PARAMETER#ip=}" +- +- if [ -z "${STATICIP}" ] +- then +- STATICIP="frommedia" +- fi +- ++ # copy complete ip=args into staticip, and ++ # keep multiple uses. ++ STATICIP="${STATICIP} ${_PARAMETER}" + export STATICIP + ;; +