Fix patch offsets for quilt patches
[live-boot-grml.git] / debian / patches / 15_networking_grml.patch
1 #! /bin/sh /usr/share/dpatch/dpatch-run
2 ## 15_networking_grml.dpatch by Christian Hofstaedtler <ch@grml.org>
3 ## Licensed under GPLv2+.
4 ##
5 ## All lines beginning with `## DP:' are a description of the patch.
6 ## DP: Ship our own networking script, which is compatible with the kernel's
7 ## DP: notion of ip= as well as resolvconf.
8
9 @DPATCH@
10
11 diff a/scripts/live-bottom/23networking_grml b/scripts/live-bottom/23networking_grml
12 --- /dev/null
13 +++ b/scripts/live-bottom/23networking_grml
14 @@ -0,0 +1,107 @@
15 +#!/bin/sh
16 +
17 +#set -e
18 +
19 +# initramfs-tools header
20 +
21 +PREREQ=""
22 +
23 +prereqs()
24 +{
25 +   echo "${PREREQ}"
26 +}
27 +
28 +case "${1}" in
29 +   prereqs)
30 +      prereqs
31 +      exit 0
32 +   ;;
33 +esac
34 +
35 +. /scripts/live-functions
36 +
37 +if [ -n "${NONETWORKING}" ]; then
38 +   exit 0
39 +fi
40 +
41 +modprobe af_packet # req'd for DHCP
42 +
43 +# initialize udev
44 +# (this /might/ be required for firmware loading to complete)
45 +if grep -q noudev /proc/cmdline; then
46 +   log_begin_msg "Networking: Skipping udev as requested via bootoption noudev."
47 +else
48 +   udevadm trigger
49 +   udevadm settle
50 +fi
51 +
52 +if [ -n "${IP}" ]; then
53 +   # call into initramfs-tools provided network setup functions, so basic
54 +   # networking is fine.
55 +   log_begin_msg "Networking: Waiting for basic network to come up..."
56 +   configure_networking
57 +fi
58 +
59 +# prepare a new /etc/network/interfaces file (and, possibly, a new /etc/resolv.conf)
60 +IFFILE="/root/etc/network/interfaces"
61 +RESOLVCONF="/root/etc/resolv.conf"
62 +
63 +# config for loopback networking
64 +cat > $IFFILE << EOF
65 +# Initially generated on boot by initramfs' 23networking.
66 +
67 +auto lo
68 +iface lo inet loopback
69 +
70 +EOF
71 +
72 +unset HOSTNAME
73 +
74 +# generate config for each present network device
75 +for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do
76 +    [ -e ${interface} ] || continue
77 +    interface=$(basename ${interface})
78 +    method="dhcp"
79 +
80 +    # NODHCP or a previously run ipconfig mean that ifupdown should never
81 +    # touch this interface (IP-stack wise).
82 +    netconfig=/tmp/net-${interface}.conf
83 +    if [ -n "$NODHCP" ] || [ -e "${netconfig}" ]; then
84 +        method="manual"
85 +    fi
86 +
87 +    cat >> $IFFILE << EOF
88 +allow-hotplug ${interface}
89 +iface ${interface} inet ${method}
90 +EOF
91 +
92 +    # DNS for resolvconf and /etc/resolv.conf
93 +    if [ -e "${netconfig}" ]; then
94 +        . "${netconfig}"
95 +        if [ -n "${DNSDOMAIN}" ]; then
96 +            echo "    dns-search ${DNSDOMAIN}" >> $IFFILE
97 +        fi
98 +        # make sure we don't have any 0.0.0.0 nameservers
99 +        IPV4DNSLIST=""
100 +        for IPV4DNS in ${IPV4DNS0} ${IPV4DNS1}; do
101 +            [ -n "${IPV4DNS}" ] || continue
102 +            [ "${IPV4DNS}" != "0.0.0.0" ] || continue
103 +            IPV4DNSLIST="${IPV4DNSLIST}${IPV4DNS} "
104 +        done
105 +        if [ -n "${IPV4DNSLIST}" ]; then
106 +            echo "    dns-nameservers ${IPV4DNSLIST}" >> $IFFILE
107 +            for IPV4DNS in ${IPV4DNSLIST}; do
108 +                echo "nameserver ${IPV4DNS}" >> $RESOLVCONF
109 +            done
110 +        fi
111 +    fi
112 +
113 +    if [ -z "$NODHCPHOSTNAME" -a -n "$HOSTNAME" ]; then
114 +        echo $HOSTNAME > /root/etc/hostname
115 +    fi
116 +
117 +    unset DEVICE IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1 HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH filename
118 +    unset IPV4DNS IPV4DNSLIST
119 +
120 +    echo>> $IFFILE
121 +done